Course Info

Lecture Location: Tu/Th 3-4:15pm in Klaus 2443

Professor:

Teaching Assistants:

Please fill out the COURSE SURVEY!

This is an advanced course on algorithms. That is quite a broad topic, and in particular this semester’s course will focus heavily on algorithms for machine learning. We will be especially interested in diving into the following topics:

While students should have a strong back background in core algorithmic concepts, linear algebra, calculus, and probability, we will review many of these topics early in the course. Students will be required to write code in Python, and we will present much of the material in the course using Jupyter Notebooks.

Hands-on Format

In most courses, students learn about material in class through lecture, and then they practice problem solving on their own by doing homework. In this course we will do the opposite! Students will be required to read material before each class period, and then arrive in class ready to dive into problem-solving. This way, students can familiarize themselves with basic definitions and examples at home, and benefit from one-on-one interaction with the course staff during lecture while working through more challenging aspects of the material. Lecture notes for each day will be posted online at least one week prior to each lecture (with the first week as an exception).

Why do it like this? The lecture format is an outdated way to teach mathematical material, especially for topics such as algorithms and machine learning where it is so easy to play with code and implement ideas. The lecture format also limits the professor’s ability to interact directly with students.

Each class period will have the following structure:

Grading

The course grades will be determined as follows. Note that the in-class quizzes will be graded generously, and 50% of the credit will be given simply for showing up and answering the questions.

Homeworks 35%
Attendance + Quizzes 15%
Midterm Exam 20%
Final Exam 30%

Quizzes will be entered electronically, via a web form, so make sure you have a phone, laptop, or tablet with you in class! If you don’t have access to any of these, please let the instructor know. The grading scheme will be:

Your five lowest quiz scores will be dropped, which should be enough to account for quizzes missed due to planned or unplanned absences.

Students are allowed, and indeed encouraged, to work on homework with other students in the course. But when solutions are written up, this should be done alone and without the help of other students. Students are required to specify on their writeups which students that collaborated with. If we find solutions that appear even remotely to have been copied, these will be given a zero and the students will be notified.

Reading

Readings will be assigned for you to complete before each lecture. All required reading will either be linked to here or posted to canvas. You are not required to purchase a textbook for this course, but you may find the following books helpful.

Important Dates

Homework

Calendar

Schedule

(Tu 8/21/18) Lecture #1: Introduction & Perceptron

No Required Reading

Additional Resources

(Th 8/23/18) Lecture #2: Review of Linear Algebra & Intro to Numpy (Lecture Slides)

Required Preparation before Class

Additional Resources

(Tu 8/28/18) Lecture #3: Convex Geometry (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 8/30/18) Lecture #4: Review of Multivariable Calculus (Lecture Slides)

Required Preparation before Class

Additional Resources

(Tu 9/4/18) Lecture #5: Convex Functions & Intro to Optimization (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 9/6/18) Lecture #6: Linear Programming Introduction (Lecture Slides)

Required Preparation before Class

(Tu 9/11/18) Lecture #7: Linear Programming Duality (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 9/13/18) Lecture #8: Positive Definiteness and Gradient Descent Intro (Lecture Slides)

Required Preparation before Class

(Tu 9/18/18) Lecture #9: Gradient Descent for Convex Functions (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 9/20/18) Lecture #10: Stochastic, Accelerated, and Conditional Gradient Descent (Lecture Slides)

Required Preparation before Class

Additional Resources

(Tu 9/25/18) Lecture #11: Applications of Gradient Descent (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 9/27/18) Lecture #12: Second-order Methods & Fixed Point Iteration (Lecture Slides)

Required Preparation before Class

Additional Resources

(Tu 10/2/18) Lecture #13: Matrix Decompositions & SVD (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 10/4/18) Lecture #14: Numerical Methods for Linear Systems (Lecture Slides)

Required Preparation before Class

Additional Resources

(Th 10/11/18) Lecture #15: Numerical Methods for Computing Eigenvalues (Lecture Slides)

Required Preparation before Class

Additional Resources

(Tu 10/16/18) Lecture #16: Random Variables and Maximum Likelihood Estimation (Lecture Slides)

Required Preparation before Class

(Th 10/25/18) Lecture #17: Bayes Rule, Binomial, Regression, MAP Estimation (Lecture Slides)

Required Preparation before Class

(Tu 10/30/18) Lecture is Cancelled

(Th 11/1/18) Lecture #18: Beta-Binomial model, Conjugate Prior, Naive Bayes (Lecture Slides)

Required Preparation before Class

(Tu 11/6/18) Lecture #19: Logistic Regression Model (Lecture Slides)

Required Preparation before Class

(Th 11/8/18) Lecture #20: Clustering (Lecture Slides )

Required Preparation before Class

(Tu 11/13/18) Lecture #21: Expectation Maximization (Lecture Slides - Soon)

Required Preparation before Class

(Th 11/15/18) Lecture #22: EM and the Gaussian Mixture Model (Lecture Slides - Soon)

Required Preparation before Class

(Tu 11/27/18) Lecture #23: Exponential Weights Algorithm (No slides – board lecture)

Required Preparation before Class

(Th 11/29/18) Lecture #24: Boosting

Required Preparation before Class

Additional Reading

Tentative Schedule (read ahead at your own risk!)