Schedule
Outlined below is the schedule for the course, including lecture topics and assignment due dates. All assignments are due at 11:59PM on the date specified. The specific dates of different topics are subject to change based on the pace at which we go through the course.
Since Python is so popular, there has been a ton of community work across many projects. Therefore, a big part of this course will be learning how to leverage work that others have already done, instead of re-inventing the wheel ourselves, by using ``software libraries'' for different tasks. I have indicated the software libraries we will be using in the course at the beginning of each section.
Lecture | Lectures (click for notes) | Readings/Links | Assignments/Deliverables | |
Unit 1: Audio/Image ProcessingWe will kick off the course by discussing how computers represent audio and images and by doing some fun manipulations of these signals. This will give us an excuse to start getting familiar with scientific Python, and particularly the numpy library. At this point in the course, we can mostly look at Python as a glorified calculator. Aside from basic arithmetic operations and plotting, we will dip our toes into writing functions, which will allow us to organize our code better when performing more complex tasks. Science Topics
Programming Topics
Libraries IntroducedTextbook ReadingHarvey Mudd CS For All Ch. 2 | ||||
1 | Wed 1/22/2020 | Course Sneak Preview | Homework 0: Warmup Out | |
Sun 1/26/2020 | Homework 0 Due | |||
2 | Mon 1/27/2020 | Software Environment, Arithmetic Operations, Variable Naming, Begin Lists |
| |
3 | Wed 1/29/2020 | List slicing, Numpy Arrays / Plotting |
| Homework 1a: linspace and sinusoids out |
Sun 2/2/2020 | Homework 1a Due | |||
4 | Mon 2/3/2020 | Audio Processing: Sinusoids | Homework 1: Audio Processing Out | |
5 | Wed 2/5/2020 | Functions, Echoes/Convolution, Noise, Comb Filters |
| |
6 | Mon 2/10/2020 | The Discrete Fourier Transform, Begin Image Processing | ||
7 | Wed 2/12/2020 | Image Processing: 2D Arrays / Grids, Moiré Patterns, Quantization/Dithering | Homework 1 Due
Homework 2: Steganography Out | |
Unit 2: Particle SimulationsIn this unit, we will begin to explore some fundamental programming paradigms that will turn our computer into much more than a basic calculator. In particular, we will study "if/else" statements, which are decisions made at runtime. We will also begin loops, which will make it much easier to repeat the same code over and over again with minor variations. Both of these things will allow us to begin exploring some interesting applications, including fractal generation and simulations of celestial bodies. Science Topics
Programming Topics
Libraries Introduced | ||||
8 | Mon 2/17/2020 | Spyder, If Statements |
| |
Tue 2/18/2020 | HW3a: Gregorian Leap Years Out | |||
9 | Wed 2/19/2020 | Boolean Statements, Begin Loops |
| Homework 2 Due
HW3b: The Chaos Game Out |
10 | Mon 2/24/2020 | While Loops: Epoch Time, The 10 Heads Problem | Homework 3a Due | |
11 | Wed 2/26/2020 | VPython Animations, Euler Steps for Vector Simulations of Gravitation | ||
Fri 2/28/2020 | Homework 3b Due | |||
Sat 2/29/2020 | Homework 4: N-Body Problem Out | |||
12 | Mon 3/2/2020 | Continue Gravitational Simulations / VPython, Begin Binary Star Simulation | ||
13 | Wed 3/4/2020 | Finish Binary Star Simulation, Chaos, The Logistic Map | ||
Fri 3/6/2020 | Homework 4 Due | |||
Fri 3/6/2020 | Final Project Initial Proposal Due | |||
-- | Mon 3/9/2020 | Spring Break | Enjoy! | |
-- | Wed 3/11/2020 | Spring Break | Enjoy! | |
14 | Mon 3/16/2020 | More spring break, courtesy of COVID-19 | ||
Tue 3/17/2020 | Homework 4b: Epidemic Spreading Out | |||
15 | Wed 3/18/2020 | More spring break, courtesy of COVID-19 | ||
Unit 3: Data Wrangling / Data AnalysisIn this unit, we will learn how to gather and organize data in Python. This will include a brief foray into machine learning to discuss learning from examples, also known as supervised learning. We will use this to guess the genre of a clip of music, to figure out the sentiment of a movie review, and to automatically transcribe images of digits. Science Topics
Programming Concepts
Libraries Introduced | ||||
16 | Mon 3/23/2020 | Python Dictionaries, Pickling, Wrangling Twitter Data | ||
Tue 3/24/2020 | Homework 4b Due | |||
17 | Wed 3/25/2020 | Python Dictionaries, Pickling, Wrangling Twitter Data | ||
Fri 3/27/2020 | Homework 5: Tweet Wrangling Out | |||
18 | Mon 3/30/2020 | High Dimensional Data: Pixel Image Embeddings, Audio Features, Dimension Reduction, Multidimensional Scaling |
| |
19 | Wed 4/1/2020 | Finish multidimensional scaling, argsort/argmin, dictionaries practice | ||
Sun 4/5/2020 | Homework 5 Due | |||
20 | Mon 4/6/2020 | Nearest Neighbors, Digit Classification, Audio Genre Classification | ||
21 | Wed 4/8/2020 | Ridge Regression, Text Vectorization, Sparse Matrices | Homework 6: Movie Reviews Out | |
Unit 4: SequencesIn this unit, we will study algorithms that deal with sequences in text and audio. In doing so, we will solidify our understanding of functions and loops by exploring a class of algorithms known as dynamic programming algorithms, which are algorithms that cleverly reuse computation to run more efficiently. This will unlock a series of neat applications, including genome similarity search (aka what's my ancestry?) and audio synchronization (i.e. how to we line up two people singing the same song but at different rates?). After this, we will study Markov Chains and use them to create a program that synthesizes text in a particular style. As the most complex assignment yet, it will require the notion of a "class" (custom variable type with functions) to organize code effectively. Science Topics
Programming Concepts
Libraries Introduced | ||||
22 | Mon 4/13/2020 | Recursion, The Dynamic Programming Concept | ||
23 | Wed 4/15/2020 | Edit Distance |
| |
24 | Mon 4/20/2020 | Dynamic Programming Solutions To Edit Distance, Needleman-Wunsch | Homework 6 Due | |
25 | Wed 4/22/2020 | Backtracing Alignment Tables, Dynamic Time Warping for Audio Alignment | ||
Fri 4/24/2020 | Homework 7: Needleman-Wunsch Out | |||
Fri 4/24/2020 | Final Project Milestone | |||
26 | Mon 4/27/2020 | Classes and Objects | ||
27 | Wed 4/29/2020 | Markov Chains on Letters | ||
28 | Mon 5/4/2020 | Markov Chains And N-Grams | Homework 7 Due Homework 8: Markov Hybrids Out | |
29 | Wed 5/6/2020 | Course Wrapup / Raffle | ||
Fri 5/8/2020 | Homework 8 Due | |||
30 | Mon 5/11/2020 | No class | ||
Tue 5/12/2020 | Final Project Video / Slide Due | |||
31 | Wed 5/13/2020 | No class | Final Project Feedback Due | |
Thu 5/14/2020 | Final Project Due |