## Fall 2023

- August 21
- Lecture 1 video, Jupyter notebook, and LIVE exercises.
- History of the course. Arithmetic operations in Python. Introduction to functions and scalar data types. Syllabus for this semester.
- August 23
- Lecture 2 video, Jupyter notebook, and LIVE exercises.

**PS01 posted, due 9/8/23.** - Indentation. If-Then logic. Comparison operators. Branching programs. Looping programs: while, for, and range.
- August 28
- Lecture 3 video, Jupyter notebook, and LIVE exercises.
**PS00 due by midnight!** - Linear search versus bisection search. How to use this to compute square roots. Review of functions and NoneType.
- August 30
- Lecture 4 video, Jupyter notebook, and LIVE exercises.
- Default values for functions. Docstrings. Abstraction. Recursion.
- September 4
- NO CLASS MONDAY
- Remember to prep for Wednesday September 6, for Lec05 and PS01, which is due Friday September 8th!
- September 6
- Lecture 5 video, Jupyter notebook, and LIVE exercises (v2).
**PS01 due Friday 9/8!** - Python Tutor. Iterative versus Recursive Implementations. Methods on Strings. The Subset-Sum problem.
- September 11
- Lecture 6 video, Jupyter notebook, and LIVE exercises.
- Collection Data Types---lists, tuples, sets, and dictionaries---and the Edit Distance on Strings.
- September 13
- Lecture 7 video, Jupyter notebook, and LIVE exercises.
- "One Liners" such as list comprehension and lambda functions. Brief introduction to Object Oriented Programming (OOP).
- September 18
- Lecture 8 video, Jupyter notebook, and LIVE exercises.
**PS02 due Monday 9/18 at midnight!** - More Object Oriented Programming (OOP) and Intro to Data Structures.
- September 20
- Lecture 9 video, Jupyter notebook, and LIVE exercises.
- OOP for Mortgages and Plotting.
- September 25
- Lecture 10 video, Jupyter notebook, and LIVE exercises.
- Numpy array operations. Simulating random phenomena.
- September 27
- Lecture 11 video, Jupyter notebook, and LIVE exercises.
- Randomness vs. Determinism. Frequency stats. Basic Distributions.
- October 2
- Lecture 12 video, Jupyter notebook, and LIVE exercises.
**PS03 due Monday 10/2 at midnight!** - Basic Hypothesis Testing: signficance levels, 1 and 2 tail tests.
- October 4
- Lecture 13 video, Jupyter notebook, and LIVE exercises.
- Intro to Machine Learning via Regression. The Train-Model-Predict Paradigm
- October 11
- Lecture 14 video, Jupyter notebook, and LIVE exercises.
- Intro to Machine Learning via Classification. Featurization in Aristotle's Taxonomy. Linear classifiers and the K-Nearest Neighbors (KNN) classifier.
- October 16
- Lecture 15 video, Jupyter notebook, and LIVE exercises.
- Exponential Data, Curse of Dimensionality and Intro to Pandas
- October 18
- MIDTERM. See the Practice Midterm.
**Midterm due Sunday 10/22 at midnight!** - Covers Lectures 1--14.
- October 23
- Lecture 16 video, Jupyter notebook.
- Sorites Paradox and K-Means Clustering
- October 25
- Lecture 17 video, Jupyter notebook, and LIVE exercises
- Principal Component Analysis (PCA).
- October 30
- Lecture 18 video, Jupyter notebook, and LIVE exercises
- MNIST via PCA+KMeans and KNN. Cluster Purity.
- November 1
- Lecture 19 video, Jupyter notebook, and LIVE exercises
- The Bias-Variance Tradeoff. K-Fold Cross-Validation.
- November 6
- Lecture 20 video, Jupyter notebook, and LIVE exercises.
**PS04 (Project K-Means) due Monday 11/6 at midnight!** - Naive Bayes Classifier. 20 Newsgroup Dataset.
- November 8
- Lecture 21 video, Jupyter notebook, and LIVE exercises
- Likelihood, Log-Likelihood, and Logistic Regression.
- November 13
- Lecture 22 video, Jupyter notebook.
**PS05 (Donald Trump's Twitter Data + Cluster Analysis) Released. Due Monday 11/27 at midnight!** - Support Vector Machines (SVM) and Separating Hyperplanes.
- November 15
- Lecture 23 video, Jupyter notebook, and LIVE exercises
- Decision Trees, Entropy, and ID3. The Titanic Dataset.
- November 20
- Lecture 24 video, Jupyter notebook.
- Last Lecture: A Holistic View of Data Science.

*Nota Bene: Registered students must submit HW via the servers.*