CSCI1010 Winter 2026 Syllabus

Logistics and Key Policies

Class Monday - Thursday, 10:00am-12:00pm
75 Shannon Street, 102
Instructors Phil Chodrow (Prof. Phil or Prof. Chodrow)
75 Shannon Street, Room 218
pchodrow@middlebury.edu
Student Hours
  • M: 1:00-2:30PM
  • W: 1:00-2:30PM
  • Or by appointment via Calendly
Michael Linderman (Prof. Linderman)
75 Shannon Street, Room 216
mlinderman@middlebury.edu
Student Hours
  • T: 1:00-2:30PM
  • Th: 1:00-2:30PM
  • Or by appointment via Calendly
Important Policies
  • You will need a laptop and an internet connection for this course, but you don’t need to buy books or other supplies.
  • Please only email us if you need to talk about something personal or sensitive. We’ll use Campuswire for all standard course communications, such as clarification questions on the schedule, class materials, etc.
  • Student Hours are your time to come chat with us about course content (or anything else). We want to see you in Student Hours!

Description

From predictive models to image and language generators, data science, machine learning, and generative artificial intelligence (AI) rely on computational methods for learning patterns in large, complex, datasets. In this hands-on course, we will apply multiple approaches for learning from data, including exploratory analysis, prediction, and generation. Students will describe social impacts of data-intensive technologies; manage and explore data sets; build predictive models; and programmatically apply generative models to real-world problems and data. This course is designed for students with introductory programming or data science preparation seeking to build foundational understanding and practical skills in machine learning and generative AI. This course fulfills the Responsible Computing requirement for the Computer Science major.

Topics

See the complete schedule for more details!

Module 1: Data Analysis and Visualization with Python

  1. Introduction to the Python data science ecosystem. Notebooks. Vectorized execution and the NumPy library.
  2. Data frames using the Pandas library. Indexing, mutation, filtering and split-apply-combine.
  3. Data visualization with the Matplotlib and Seaborn libraries.
  4. Data wrangling. Merging, reshaping, and pivoting data. Handling missing data.

Module 2: Predictive Modeling and Machine Learning Fundamentals

  1. Introduction to prediction. Loss functions. Testing sets. The idea of optimization.
  2. Linear regression. Feature engineering. Many features, overfitting. Cross-validation.
  3. Classification: logistic regression. Confusion matrices, ROC curves, AUC.
  4. Case study: COMPAS. Data analysis. Definitions of fairness in classification from confusion matrices.
  5. Neural networks for regression and classification.

Module 3: Generative Models and Applications

  1. Introduction to generative models. Generation from prediction. Using SOTA models.
  2. N-gram Markov models. Role of tokenization.
  3. Expanding the context. Building and training neural language models.
  4. Societal implications of AI.

Learning Objectives

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

Theory You will describe several key mathematical concepts in machine learning and generative AI, such as loss functions and overfitting.
Navigation You will fluently navigate the package ecosystem for data analysis and 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 the societal implications of machine learning models, including concerns about bias, authenticity, environmental impact, labor and accountability.
Project You will complete an independent project that involves implementing and experimenting with machine learning tools.

Coursework

Class time

Most classes will involve:

  • Approximately 1 hour of interactive lecture and demonstration incorporating math, theory and live-coded programming examples
  • Approximately 1 hour working on relevant data analysis activities. These activities will likely require time outside of class to finish.

Some classes will start with a short quiz.

Activities

Many classes will include a data analysis activity in the form of a IPython notebook which you can complete in Google Colab, a cloud environment for interactive computing with Python. These are structured like online tutorials, i.e., include new material, links to relevant documentation, etc. but expect you to implement certain portions of the analyses. Each student will submit their own notebook to Gradescope, but you are welcome and encouraged to work with your classmates.

The activities are intended to build skills for the final project and prepare you for the regular quizzes and exam. To the latter ends, each activity has an initial due date the day (so you can receive feedback before the quiz) and a later final due date. All submissions by the initial due date will be automatically reviewed shortly afterwards (as will all submissions at the final due date). To request re-review after the initial due date but before the final due date, submit the Google form linked at the top of the Gradescope output or here. The form will notify the instructors your submission is ready for re-review (otherwise we don’t know if any given submission is for testing, or ready for re-review).

Activities are assessed with a Satisfactory (2 points in Gradescope), Not yet satisfactory (0-1 points in Gradescope) rubric via a combination of automated unit testing and manual review. You may submit as many times as you want. Credit will be determined by the last submission before the final due date.

Quizzes

We will have a regular series of short quizzes (typically Monday and Wednesday at the beginning of class). These quizzes are a low-stakes opportunity to check whether you have understood the recent material and prepare for the exam. Quizzes are completed on paper, and are closed notes, online resources, etc.

Midterm Exam

Approximately 2/3 of the way through the course, we will have an exam intended to assess your understanding of data analysis and machine learning fundamentals (the first 2 course modules). The exam will have two components: 1) a written paper-based exam, similar to the quizzes, and 2) an oral exam.

Project

The final project is an opportunity to apply the skills you’ve learned in the course to a data science problem (data analysis, machine learning) of your choosing. You will ideally work in teams of 2-3 students. The project will culminate in a poster presentation at the end of the semester. See the project page for more details.

Final Course Grade

Grade Calculation

Each assignment in this course falls into two buckets:

  • Understanding (U): Quizzes, midterm exam.
  • Application (A): Activities, final project.

Your U average is computed as the weighted average of your quiz and exam scores, with quizzes worth 35% and the midterm exam worth 65%. When calculating your U average, we drop the lowest of your quiz scores.

Your A average is computed as the weighted average of your activity and project scores, with activities worth 35% and the final project (including all its required deliverables) worth 65%.

The formula for your final course average is:

\[ \begin{aligned} \text{Final Average} = 0.7\times\min\{\mathrm{U}, \mathrm{A}\} + 0.3 \times \max\{\mathrm{U}, \mathrm{A}\} \end{aligned} \]

This means that your final average is closer to the lower of your two bucket averages. This encourages you to maintain a balanced performance across both buckets.

Your final average will be converted to a letter grade according to a standard straight scale:

Final Average Letter Grade
93-100 A
90-92 A-
87-89 B+
83-86 B
80-82 B-
77-79 C+
73-76 C
70-72 C-
60-69 D
0-59 F

Instructor Discretion

We never grant a final letter grade lower than the one you earn according to the calculation above.

We may bump up your final letter grade by no more than 1/3 (e.g. B- → B) based on learning that you demonstrate outside the specific assessments. Some ways to demonstrate this learning include:

  • Asking insightful questions in class which demonstrate both curiosity and engagement with required preparation.
  • Attending Student Hours, especially to ask questions which demonstrate curiosity and independent effort.
  • Participating actively in group work and other collaborative activities.
  • Completing a project that significantly exceeds expectations in some way.

Please keep in mind that most students do not receive such a bump and that we never negotiate with individual students about their final letter grade. The only way to guarantee yourself a given letter grade is to earn the corresponding score according to the formula above.

Academic Integrity and Collaboration

Collaboration with human beings is highly encouraged in this class. We encourage you to study together and work together on the programming exercises. Use of AI systems is permitted and encouraged subject to the following restrictions and guidance. Effective collaboration, whether with a person or an AI system, helps you gain understanding, brainstorm ideas, utilize complex libraries and identify bugs. It is not having someone else do the work (and the learning) for you. You should never copy a solution from another source, whether it a classmate, course staff, a public repository or an AI system.

You are intellectually responsible for all the work that you submit for assessment. You must understand and be able to explain the code and experimental results you submit. You will complete paper-based assessments (quizzes and exams), an oral exam and orally present your project work without access to reference materials, AI systems or other outside resources. Successfully doing so requires a real understanding of the material and any submitted work.

All submitted work must be properly attributed. Your work must not contain unattributed parts written or generated by someone or something else (person or AI system). Misrepresenting another person’s work or AI system’s generated output as your own original work is an academic integrity violation. Clearly cite all sources and acknowledge all contributors (both people and AI systems). In the particular case of AI systems, make sure you are meaningfully “digesting” any output by adapting, editing and testing it such that any submitted work reflects your own understanding. Note that “AI systems” are ubiquitous and include stand-alone tools (e.g., ChatGPT web application), but also embedded tools (e.g,, GitHub Copilot in VSCode, Google Gemini in Colab) and search results (e.g., AI results in Google search).

As an informal guideline, if you are proud of how you used AI tools and would eagerly share your experience with the instructors and your classmates that is an indication you are using those tools appropriately. You should be happy to cite your usage (and we are eager to learn from how you are using these tools!). If instead you find yourself hiding, or thinking about hiding, your usage that indicates you may not be using those tools appropriately.

If you are ever unsure about what constitutes acceptable collaboration, permitted resources, etc. please ask! If you ever find yourself feeling stuck and it seems like the only way forward may conflict with the Honor Code, or even just seems little a borderline, please contact us right away. We can always come up with an appropriate path forward.

Parts of this policy adapted from HMC CS5.

Other Course Policies

Laptops

We will be using Python notebooks, executed on Google colab or locally, both inside and outside class. Please bring a laptop every day (with enough charge to make it through our 2 hour class!). If you don’t have access to suitable laptop (even if for just a single class period), please contact us immediately about access to loaner laptops.

If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating laptops available for use by 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 our 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 faculty members are Responsible Employees, which means that they are 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. We are actively putting effort into ensuring that course materials are screen-reader accessible, and welcome feedback on where we 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. We welcome you telling us your pronouns and/or preferred name at any time, either in person or via email. Similarly, please address your classmates according to their expressed preferences.

ADA

Students who have Letters of Accommodation in this class are encouraged to contact us as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield, Peter Ploegman, and Deirdre Kelly of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.

Attribution

In addition to the inline citations, portions of the course materials were generated with a variety of AI tools, including GitHub Copilot, Google Gemini, and Claude.



© Michael Linderman and Phil Chodrow, 2026