Class Logistics
What is Programming?
Formal vs Natural languages
Syntax and Semantics
Debugging
Interpreters vs Compilers
Python
Python Prompt
PyCharm and IDLE
Values
Numbers (int, float)
Strings
Operators
Expressions and Statements
Logic
Boolean Values
Boolean Operators (and, or, not)
Conditional execution
Python Modules
math Module
random Module
Repetitions in Code
The for Loop
Loop Variables
The range() function
Mapping, Accumulating, Filtering
Nested Loops
Images as Grids of Pixels
Color Models (RGB, etc)
Image Processing
The while Loop
Comparing while and for Loops
Sentinel Values
Infinite Loops
Termination and the Halting Problem
Encoding Strings (ASCII, Unicode UTF8)
Strings in Python
String Operations (indexing, slicing, etc.)
Traversing Strings
Class Exercise: Counting capital letters
Lists and List Operations (indexing, slicing, etc.)
Traversing Lists
Converting Lists
Modifying Lists
Aliasing
Nested Lists
Class Exercise: An interactive To-Do List
Programming and Debugging
Common Errors
Midterm Review Session
Midterm Exam
Functions
Functions
Local and Global Variables
Midterm Exam Solution and Discussion
Side Effects
Pure Functions
Default Arguments
Named Arguments
Tuples
Recursion
Fractals
Projects
Dictionaries
Sets
Object-oriented Programming
Classes and Objects
Graphical User Interfaces (tkinter)
Web Programming (flask)
Scientific Computing (numpy)
Plotting (matplotlib)
Types (mypy)
Growing a Language
Project Presentations
Project Presentations
Project Presentations
Final Review
Final Exam