Syllabus

This is an advanced elective on the topic of algorithms that learn patterns from data. Artificial intelligence, predictive analytics, computational science, pattern recognition, signal processing, and data science are all disciplines that draw heavily on techniques from machine learning. The course focuses almost entirely on predictive models, and places special emphasis on questions of fairness in automated decision-making.

Learning Objectives

A learning objective is a primary goal for your learning by the end of the course. You’re successful in CSCI 0451 when you achieve excellence against these learning objectives. We have six learning objectives in CSCI 0451.

Theory You will describe the broad mathematical structure of modern machine learning algorithms and the details of several core examples.
Implementation You will implement classification and regression algorithms in efficient, usable Python programs.
Navigate You will navigate the package ecosystem for machine learning in Python.
Experiment You will experiment with machine learning models, audit their performance, and communicate about your findings.
Social Responsibility You will interrogate sources of bias, harm, and disparity in machine learning models, especially with regard to gender, race, and class.
Project You will complete a long-term project that involves significant implementation or experimentation with machine learning tools.

Logistics and Key Policies

Lecture Mondays and Wednesdays
75 Shannon Street, Room 206
Section A: 12:45pm-2:00pm
Instructor Dr. Phil Chodrow
75 Shannon Street, Room 218
pchodrow@middlebury.edu, though please don’t email me about class stuff – use Ed Discussion instead.
Student Hours
  • TBD
  • TBD
Important Policies I encourage you to call me Phil or Prof. Phil. “Professor Chodrow” is fine if that’s what’s most comfortable for you.

You need a laptop and an internet connection for this course, but you don’t need to buy books or other supplies.

Generally speaking, you should only email me if you need to talk about something personal or sensitive. We’ll use Ed Discussion for all standard course communications.

Student Hours are your time to come chat with me about course content. I want to see you in Student Hours.

Rough Schedule Of Topics

See the complete schedule for more details! I am still working on populating this schedule, and will try to have it set up at least two weeks in advance at all times.

  • Week 1: Welcome! Score-based classification.
  • Week 2: Linear models in Python, feature maps. Automated decision-making.
  • Week 3: Legitimacy of automated decision-making. Auditing models.
  • Week 4: Statistical formulations of fairness in classification; normative underpinnings. Incompatibility. Critical perspectives.
  • Week 5: Introduction to theory: linear models, empirical risk minimization, regularization. Gradients. Spring Break!
  • Week 6: Classical optimization: deterministic first- and second-order methods.
  • Week 7: Modern optimization: automatic differentiation; stochastic gradient descent and friends.
  • Week 8: Feature maps. Kernel classifiers.
  • Week 9: Bias variance tradeoff, learning in high dimensions.
  • Week 10: Deep learning. Image classification.
  • Week 11: Text classification and word embedding.
  • Week 12: Feedback, reflection, projects.

What Will Class Time Look Like?

Most class time will involve the following components:

  • 10-20 minutes of a warmup activity that addresses recent lectures or readings.
  • 40-50 minutes of lecture, which will often focus on math, theory, and programming examples. My aim is that we usually won’t spend the entire lecture period on theory, and that a major part of most lectures will be hands-on live-coding.

The Warmup Activity

On most days, we’ll have a warmup activity. The warmup activity will usually ask you to engage with the readings and complete some work ahead of class time. This could be a short piece of writing, a math problem, or an implementation of a Python function. You will turn in the warmup each day on Canvas. Your warmup assignment is graded on effort and completeness. You’ll be expected to show effortful engagement with the prep material and a meaningful attempt to complete all parts of the posed problem(s), but you won’t be graded on whether your solutions are correct.

Each day, a few students will be randomly selected to present their work to a small group of peers. It’s ok to ask for help or even pass if you’re not feeling confident in your solution.

Grade Structure

Your grade in this course is determined by the number of points you accumulate in each of three categories:

  • Warmup Assignments: Up to 5 points.
  • Blog Posts: Up to 21 points.
  • Project: Up to 9 points.

There are a total of 35 points available in the course. The number of points you earn determines your final grade:

Yes, it’s intentional that there’s a bit of a gap between the A grades and the B grades, adn between the B grades and the C grades.
  • A: At least 30 points.
  • A-: At least 29 points.
  • B+: At least 27 points.
  • B: At least 26 points.
  • B-: At least 25 points.
  • C+: At least 23 points.
  • C: At least 22 points.
  • C-: At least 21 points.
  • D: At least 18 points.
  • F: Fewer than 18 points.

Here’s how to get points:

Warmup Assignments: Up To 5 Points

As described above, warmup assignments are graded on effort and completeness. You start with all 5 warmup points. You can miss or fail to earn credit on a warmup assignment up to three times without any impact at all on your final grade. After that, failure to earn credit on a warmup assignment will subtract one point from your warmup grade, down to a minimum of 0.

Blog Posts: Up To 21 Points

There will be a number of blog posts throughout the semester. You are not expected to attempt all available blog posts. Each blog post is worth up to 3 points. You can earn a maximum of 21 points from blog posts. For example, you could do 7 blog posts that all earn 3 points, or you could do 3 blog posts that earn 2 points and 5 blog posts that earn 3 points; both of these would be valid ways to max out your blog post grade.

There are at least 10 blog posts in total over the course of the semester.

Project: Up To 9 Points

We’ll do a final project on topics of your choosing. You can complete your project in groups or individually. The project points are broken up into the following categories:

  • Technical quality (up to 3 points): this is where I’ll assess what you achieved in terms of your code, implementation, data analysis, mathematics, etc.
  • Quality of deliverables (up to 3 points): this is where I’ll assess the quality of your written report, project presentation, and GitHub repository.
  • Group contribution (up to 3 points): this is where I’ll assess your contributions to your project group. I usually do this through a combination of your reflections and my own judgment based on your commit history in your project’s GitHub repository.

My expectation is that a “normal” project will receive 2/3 for technical quality, 2/3 for deliverable quality, and 3/3 for group contributions. It takes a very impressive project to earn 3/3 in all three categories.

A Typical Route to an A

Here’s an example of earning an A in the course:

  • Don’t miss more than 3 warmup assignments, earning all 5 warmup points.
  • Complete 4 blog posts at the E level and 3 more at the M level, earning 18 blog post points.
  • Earn 7 points on your project.

Total: 30 points.

More On Blog Posts

Blog posts are the most important way in which you demonstrate learning in this course, and this importance is reflected in their contribution to your final grade. You’ll complete your blog posts, post them to your personal CSCI 0451 blog, and then submit the URL to Canvas.

Blog Post Feedback

You’ll receive feedback on your blog posts from the 0451 grading team, which includes me and several student graders. Your feedback will include detailed comments and one of the following four assessments:

  • E (3 points): Excellent. All required components are present. All computational experiments are completed correctly in well-organized code. All data visualizations are clear and well-labeled. Written explanations are of high quality and are sufficient for a reader to understand both the implementation and results of experiments.
  • M (2 points): Meets expectations. All required components are present. All computational experiments are completed correctly. Most data visualizations are clear and well-labeled. Writing may be patchy but is generally sufficient for the reader to understand what is going on.
  • R (1 point): Revision suggested. Clear effort has been made against most of the components of the blog post assignment, but major components (such as required implementation, experiments, data visualizations, or writing) are incomplete.
  • N (0 points): Not attempted: There are not enough major components of the blog post complete to demonstrate learning.

Blog Post Revision Process

You can (and should!) revise blog posts. Indeed, you can revise a blog post as many times as you want. Did you get an R the first time? Don’t worry – just respond to the detailed comments left by the grading and resubmit. Generally, the grading team will give you enough comments so that, if you fully respond to all of them, you can have a reasonable expectation of earning an E. To resubmit your blog post, just make another submission under the same assignment on Canvas.

With one limitation: see below

Blog Post Expiration Dates

In order to maintain a good pace and keep your blog post effort aligned to the course content, you are required to start blog posts within a time limit after they are introduced. Specifically, your blog post has expired if you have not earned at least an M on it within 2 weeks of the blog post being introduced. An expired post may no longer be revised or resubmitted. You just have to move on to the next assignment.

You just need to submit the post within 2 weeks; if we grade it later and you earn an M then the post is not expired.

An image of four of the Pokemon Squirtle welcoming a fifth Squirtle. The original four Squirtles are labeled “unfinished assignment #1” through #4. The fifth Squirtle is labeled “new assignment.” This is what we’re trying to prevent. Image credit: Dr. Spencer Bagley

Am I Ready for CSCI 0451?

As you enter the course, I’m assuming that you are ready to reflect thoughtfully on guiding your own learning, that you have some achievement in developing programs, and that you have a strong math foundation.

Directing Your Learning

This course gives you a considerable amount of freedom: you can choose which blog posts you complete and what project topic you work on. I need you to be ready to make informed choices about what you want to do and what you want to learn along the way.

Programming

I’m expecting you to come in with a high degree of comfort in programming. You’re ready if:

  • You can write moderately-complex, object-oriented software.
  • You are comfortable reading software documentation and researching how to perform a task that you haven’t seen before.
  • You know what a terminal is and how to perform simple operations at the command line.
  • You have experience debugging your code and you are ready to do it a lot more.

Math

I am assuming that you remember most of MATH 0200 and CSCI 0200. It’s ok if you haven’t memorized every single fact. What I need is for you to be ready to rapidly look up what you need so that you won’t be slowed down by math along the way.

  • Matrix multiplication and inner products
  • Everything about \(\mathbf{A}\mathbf{x} = \mathbf{b}\).
  • Visualizing linear spaces.
  • Eigenvalues, eigenvectors, positive-definite matrices.
  • Derivatives, critical points of functions.

I have prepared a mathematics pre-assessment for you to try. This assessment is not graded and is primarily for you to reflect on your comfort with some of the skills we will need. It’s ok if you are not confident on every problem (especially the problems related to multivariable differentiation). You’ll just want to devote some of your learning effort during the course towards getting more comfortable.

Reviews/Diagnostics

  • This resource from Stanford’s CS246 contains most of the linear algebra that you’ll need for the course. The only big topic that’s missing is treatment of the existence of solutions of the linear system \(\mathbf{A}\mathbf{x} = \mathbf{b}\) in terms of the rank of \(\mathbf{A}\). You don’t need to have memorized everything here, but most of it should look familiar.
  • Probability is not a formal requirement for CSCI 0451, but some probability can certainly be useful. To brush up on some basics, I suggest Chapter 2 of Introduction to Probability for Data Science by Stanley Chan. This treatment may be a little more advanced than what you learned in CSCI 0200, but you should recognize many of the main ideas.

Academic Integrity and Collaboration

In general, collaboration with human beings is highly encouraged in this class. I’d love it if you studied together, worked together on warmups, and helped each other out on projects. Collaboration is especially encouraged for projects; I expect that most of you will work in teams of 2 or 3.

LLMs, Code-Sharing, and Online Sources

In this day and age, it is possible to receive a lot of assistance in both coding and writing. My guiding principle in this course is simple:

You are intellectually responsible for all work that you submit for assessment.

This means that you should be ready to explain the workings of every piece of code and the meaning of every set of experimental results that you submit.

I enforce this principle by reserving the right to request that you meet with me to explain your work on any assignment you submit. If you are unable to demonstrate intellectual mastery over the work you submit, you may receive a 0 on that assignment with no opportunity to revise. This is especially likely to occur if:

Update 2/10: In the event that this happens on a blog post, your maximum blog post score will be reduced by 3 points.
  • You submit code which uses Python functions which we have not discussed in class or in the assignment prompt.
  • Your writing draws on ideas or uses vocabulary that is not present in the readings or lecture notes. (You can reduce the likelihood of issues here by citing your sources).

Advice On Maintaining Academic Integrity

Here is my advice on how to ensure that the work you submit demonstrates your personal intellectual mastery of the content:

  • Getting help from your friends is highly encouraged. Sharing more than 2 lines of code at a time is not encouraged.
  • Use of online help websites like StackExchange is ok, neither encouraged nor discouraged. Please ensure that you are prepared to explain each and every code component or mathematical concept that you submit.
  • Use of “fancy autocomplete” tools like GitHub Copilot in VSCode is ok, neither encouraged or discouraged. Please ensure that you are prepared to explain each and every code component or mathematical concept that you submit.
  • Use of large language models (LLMs) like ChatGPT is strongly discouraged and is likely to get you in trouble. If you do use LLMs, please ensure that you are prepared to explain each and every code component or mathematical concept that you submit.

Other Course Policies

Laptops

Please bring a laptop, and make sure that it has at least 75 minutes of charge.

If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). To request a laptop for short-term use (like a single class period), email me ahead of time.

On Long-Term Use: College policy has changed recently to include the expectation that every student have a laptop available. The college provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.

Course Environment

You deserve to be welcomed and celebrated by our community. We embrace diversity of age, background, beliefs, ethnicity, gender, gender identity, gender expression, national origin, religious affiliation, sexual orientation, and other visible and non-visible categories. Discrimination is not tolerated in my classroom.

You deserve a learning environment free from gender-based discrimination, sexual harassment, sexual assault, domestic violence, dating violence, and stalking. If you experience these behaviors or otherwise know of a Title IX violation, you have many options for support and/or reporting. Middlebury’s Civil Rights and Title IX Office (CRTIX) can help you navigate your options. Please be aware that I am a Responsible Employee, which means that I am required by the College to report incidents of sexual harassment or sexual violence to CRTIX. There are resources for emotional and mental health care, advocacy, and academic support listed here, some of which are confidential.

You deserve to fully and equitably participate in our learning environment. I am actively putting effort into ensuring that course materials are screen-reader accessible, and welcome feedback on where I can do better. Middlebury’s Disability Resource Center can help you remove barriers to learning in this and other courses.

You deserve to be addressed in the manner that reflects who you are. I welcome to tell me your pronouns and/or preferred name at any time, either in person or via email. Conversely, please address your classmates according to their expressed preferences.

Beyond This Course

General Advice

I am always happy to talk with you about your future plans, including internships, research opportunities, and graduate school applications. Because I am a creature of the academy, I am less knowledgeable about industry jobs, although you are welcome to ask about those too. You can drop in during Student Hours or email me to make an appointment.

Letters of Recommendation

Writing letters of recommendation for students is a fundamental part of my job and something that I am usually very happy to do. Here’s how to ask me for a letter.



© Phil Chodrow, 2025