Syllabus

Lecture Sections:
C: Mon/Wed 11:15 am - 12:30 pm in 75 Shannon 102
B: Mon/Wed 12:45 pm - 2:00 pm in 75 Shannon 102
A: Tue / Thu 11:15 am - 12:30 pm in 75 Shannon 102

Lab Sections:
Y: Friday 8:40 am - 9:30 am in 75 Shannon 202
X: Friday 9:45 am - 10:35 am in 75 Shannon 202
Z: Friday 11:15 am - 12:05 pm in 75 Shannon 202

Faculty

Professor Amy Briggs 75 Shannon 213 | briggs@middlebury.edu

Professor Christopher Andrews 75 Shannon 215 | candrews@middlebury.edu

Lab Instructor Smith Gakuya 75 Shannon 221 | sgakuya@middlebury.edu

Course Description

In this course we will provide a broad introductory overview of the discipline of computer science, with no prerequisites or assumed prior knowledge of computers or programming. A significant component of the course is an introduction to algorithmic concepts and to programming using Python; programming assignments will explore algorithmic strategies such as selection, iteration, divide-and-conquer, and recursion, as well as introducing the Python programming language.

Learning Objectives

By the end of this course, you will be able to:

  • Describe Computer Science as a discipline and list examples of how programs, algorithms, and or data structures are used in different application areas
  • Solve computational problems with procedural statements (assignments, operators, conditionals, loops), function, basic data structures (list, set, map), objects, and I/O
  • Design, implement, document, and debug medium-size programs in Python
  • Analyze and apply both iterative and recursive solution to computational problems
  • Informally explain and evaluate asymptotic complexity of algorithms
  • Explain how data is represented in the computer, especially numbers, text, and images

Course Materials

All course materials will be available on our course site, go.middlebury.edu/cs145.

You will access to the following materials:

Getting Help

We will introduce you to many new concepts and tools in this course, and everything will build on material that came before. We strongly encourage you to reach out for help rather than struggling on your own! There are four main resources for getting help:

  • Office hours are a great time to come talk about anything on your mind! See the Faculty section above for office hours for Professor Briggs, Professor Andrews, and Laboratory Instructor Smith Gakuga.
  • Peer course assistants will hold drop-in help sessions in the evening. The schedule and details will be available at go/cshelp/.
  • Campuswire is a tool we use in the CS department for students to get help outside of the above times. You are encouraged to ask and answer questions about anything in the course on our Campuswire forum. Sign up for our Campuswire forum at campuswire.com/p/G6776DD22.

Expectations

Use of AI in This Course

We recognize that AI tools (ChatGPT, Claude, Gemini, and similar) are now widely available, and that many students will turn to them for assistance while working on labs and homework. Using AI on labs and homework will not be treated as an Honor Code violation.

We are not encouraging AI use in this course, and we don’t think you need it. The assignments here are designed to be straightforward and well within reach if you engage with the material — they don’t require AI to complete.

This course covers the foundational concepts that everything else in computer science builds on. If you use AI to get through it, you’re skipping the part where you actually learn to think like a programmer, and that thinking is a prerequisite for every course and project that follows, whether in computer science or any other field where computational thinking applies. Every experienced software engineer who uses AI productively today first learned these fundamentals on their own, before AI could do it for them.

If you do turn to AI, there’s a difference between using it to understand a concept and using it to produce your answer. Asking why your code is throwing a particular error, or having a concept explained a different way, is a reasonable way to supplement your own effort. Asking it to solve the problem or write the solution for you is not — you’d be handing off the thinking this course is meant to build, and you’d struggle to do the same work later on your own.

Regardless of whether you use AI and what tools you use, you are responsible for understanding everything you submit. You should be able to explain your code line by line, justify your choices, and answer questions about how and why it works. If you can’t, you haven’t learned the material, and that will catch up with you.

AI tools will not be permitted during quizzes or exams. Those assess what you personally know and can do, with nothing to lean on but your own understanding.

Our advice: do the work yourself. If you get stuck, come to office hours or drop-in sessions, ask a classmate, or post on Campuswire.