COURSE TOPICS Unix - Files and Directories - The bash shell - Processes - Using Command-line programs - Configuring and Running Python - Editors and IDEs Basics - Calculate: Arithmetic - Store: variables and assignment - Information: numbers, strings, booleans - Grouping code with Indentation - Making choices: if-elif-else - Getting data: input - Producing results: print - Repetition: for and while - Order of Operations Conditions - and - or - not - Comparison operators Strings - Single,Double,Triple Quotes - Operations - Formatting - Methods Iteration - for - while - break - range - with a sequence Documentation - Commenting code - Finding help - doc strings Functions - Purpose - Defining - Documenting - arguments - named arguments - default values - returning results Files - Reading from a file - Writing to a file - open and close - readlines() - strip() - split() Data Structures - Lists - Tuples - Dictionaries - Classes as data holders Sequence Operations - Slicing Searching and Sorting - sort and sorted - keys, reverse - using tuples recursion Advanced Techniques ------------------- lambda functions functional programming: map, filter, reduce classes as data structures classes and object oriented programming - init - methods - inheritance random: probability, modeling, games robust programs and exception handling. - try except finally Applications and Special Modules -------------------------------- +datetime: time calculations +hashlib: creating message digests +email: how to spam the world! +urllib: accessing the web from python regular expressions: inside python (re) and outside (grep/egrep) +os: walking through files and +subprocess: controlling other programs Making Functional Programs for Others ------------------------------------- how command line programs work the shell, shell variables, wildcards examples: pipe and redirection, stdin, stdout wc, ls, grep, find making a command line program using sys module definitions - making testable and importable modules graphical user interfaces Engineering with Python ----------------------- numpy and scipy arrays, multiplying, broadcasting. plotting. plot types. making good plots. animation symbolic math complex math 3D plots image processing- inside python and with convert graphics sound processing: principles and tools. Software development -------------------- methods: solve a small problem first. divide and conquer. code/test/learn. repeat. document projects: thinking about what's required testing and program specifications efficiency, profiling, timeit debugging: print, ipython3, pdb - interpreting error messages program style and documentation - how to use comments - naming conventions which tool: other languages C,C++,assembler,MATLAB