- install Atom
- install Script package via
Atom > Preferences > Install - install DrawBot
- install free trial of Gitbox or GitHub app for Mac or GitHub app for Windows
- set up an account on GitHub
A very brief intro to Python 2.x, its use in font engineering and type design. Optionally, an intro into Git.
- basic concepts
- expressions
- variables
- types
- mutable vs. immutable types
- methods
- assignment
- commands
- blocks (indentation)
- environments (Python interactive mode, Python command, Atom with Script package, font editors, …)
- note on naming variables
- basic types (
None,int(integer),float,bool(boolean),tuple) - arithmetic operations (
+,-,*,/,%,()), priority - comparisons (
==,<,>,!=,<>,<=,>=,in,not in,is,is not) - boolean operations (
and,or,not,()) - basic commands
- assignments (
=,+=,-=) - comment
- assignments (
- ☕️
- conditionals (
if,elif,else)- note on indentation
- nested conditionals
- strings (
str)- accessing items in strings
- string operations (
+,*) - escape and special characters (
\",\n,\t,\\) - multi-line strings
- unicode strings
- formatting strings (also with a tuple)
- string methods (
startswith,endswith,join,split)
- tuples (
tuple)- accessing items in tuples
- modifying tuples
- packing, unpacking
- error messages
- task: try to code and run simple Python scripts in Atom
- lists (
list)- creating lists
- assignment does not create new list
- accessing list items
- nested lists
- list operations (
+,*,in) - list and string slicing
- list methods (
append,extend,insert,sort,reverse,index) - list functions (
sorted,reversed,sum,len,range,min,max) - removing items from lists
- iterative loops (
for)- looping over list or range
- nesting loops
- loops with conditionals nested
- using indexes
- mention
whileloops
- task: write scripts with loops
- ☕️
- dictionaries (
dict)- creating new dictionary
- adding an item to a dict, changing an item
- what can be a key
- dictionary methods (
keys,values,items) - iterating over dictionary (conversion to
listhappens) - testing if key exists (
in)
- built-in functions
- re-typing (
int,str,list, …) enumeratezipand creatingdictfromlistsabs
- re-typing (
- introduction to Drawbot
- task: write scripts for DrawBot
- 🍺🍟
- functions (
def)- parameters
- returning value
- modules (
import) - note on name spaces
- ☕️
- task: advanced code with DrawBot
- introduction to Glyphs API
- task: write scripts for Glyphs
- ☕️
- task: write scripts for Glyphs
- explain Git
- task: work with this repo
- clone this repo
- create your own forder within the repo
- push the changes to the GitHub
- pull other students’ commits
- 🚀
settypewhileloopbreak,else,continuestatements used with loops- dealing with exceptions (
try,except) objectoriented programming
- Python documentation
- Robodocs
- Stack Overflow
- Robofab
- Git
- GitHub - hosting of Git repos – free public repos, large community
- BitBucket – free private and public repos