Schedule

Sep 29

Class Logistics
What is Programming?

Oct 2

Formal vs Natural languages
Syntax and Semantics
Debugging
Interpreters vs Compilers
Python
Python Prompt

Oct 4

PyCharm and IDLE
Values
Numbers (int, float)

Oct 6

Strings
Operators
Expressions and Statements

Oct 9

Logic
Boolean Values
Boolean Operators (and, or, not)
Conditional execution

Oct 11

Python Modules
math Module
random Module

Oct 13

Repetitions in Code
The for Loop
Loop Variables
The range() function
Mapping, Accumulating, Filtering

Oct 16

Nested Loops
Images as Grids of Pixels
Color Models (RGB, etc)
Image Processing

Oct 18

The while Loop
Comparing while and for Loops
Sentinel Values
Infinite Loops
Termination and the Halting Problem

Oct 20

Encoding Strings (ASCII, Unicode UTF8)
Strings in Python
String Operations (indexing, slicing, etc.)

Oct 23

Traversing Strings
Class Exercise: Counting capital letters
Lists and List Operations (indexing, slicing, etc.)
Traversing Lists

Oct 25

Converting Lists
Modifying Lists
Aliasing
Nested Lists
Class Exercise: An interactive To-Do List

Oct 27

Programming and Debugging
Common Errors
Midterm Review Session

Oct 30

Midterm Exam

Nov 1

Functions

Nov 3

Functions
Local and Global Variables

Nov 6

Midterm Exam Solution and Discussion

Nov 8

Side Effects
Pure Functions
Default Arguments
Named Arguments
Tuples

Nov 13

Recursion
Fractals

Nov 15

Projects
Dictionaries

Nov 17

Sets
Object-oriented Programming
Classes and Objects

Nov 20

Graphical User Interfaces (tkinter)

Nov 22

Web Programming (flask)

Nov 27

Scientific Computing (numpy)
Plotting (matplotlib)

Nov 29

Types (mypy)
Growing a Language

Dec 1

Project Presentations

Dec 4

Project Presentations

Dec 6

Project Presentations

Dec 8

Final Review

Dec 13

Final Exam