Syllabus
Lecture Sections:
A: Tue/Thu 11:15 am - 12:30 pm in 75 Shannon 102
B: Mon/Wed 12:45 pm - 2:00 pm in 75 Shannon 102
C: Mon/Wed 11:15 am - 12:30 pm in 75 Shannon 102
Lab Sections:
X: Friday 9:45 am - 10:35 am in 75 Shannon 202
Y: Friday 8:40 am - 9:30 am in 75 Shannon 202
Z: Friday 11:15 am - 12:05 pm in 75 Shannon 202
Faculty
Professor Amy Briggs
Instructor for lecture sections A, B, C
75 Shannon 213 | briggs@middlebury.edu
Office hours: see go/briggs/
Professor Christopher Andrews
Instructor for lab section X
75 Shannon 215 | candrews@middlebury.edu
Office hours: see go/candrews/
Lab Instructor Smith Gakuya
Instructor for lab sections Y, Z
75 Shannon 221 | sgakuya@middlebury.edu
Office hours: see go/smith/
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 give examples of how programs, algorithms, and data structures are used in different application areas
- Solve computational problems with procedural statements (assignment, operators, conditionals, loops), functions, basic data structures (list, set, map), objects, and I/O
- Design, implement, document, and debug medium-sized programs in Python
- Analyze and apply iterative and recursive solutions 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. Everything you need for this course is free and available online.
Main text: How to Think Like a Computer Scientist, a free interactive online text. (See Books for additional optional texts.)
Laptop: you will need a laptop for lecture and lab sections. See Department Resources for information about borrowing should you ever need to.
Additional course resources:
- Course notes for lecture notes
- Slides, Code, & Worksheets for lecture slides, in-class code and solutions, and worksheets and answer keys
- Python resources for the IDE (Thonny), Python reference material, and extra practice sites
- Guidelines for Code Quality for how your code will be assessed beyond correctness
Course Platforms
Beyond this website, we use a few other platforms, each for one specific purpose:
- Gradescope: where you submit labs and homework, and where you’ll see your grades and feedback on them.
- Campuswire: our discussion forum for questions about lectures, labs, and homework outside of office hours (see Getting Help below).
- Canvas: used only as a gradebook. Your Gradescope scores sync there automatically, so you can check your overall grade in one place.
Dates for Major Assignments
- Homework 1 due Thursday, September 24
- Homework 2 due Thursday, October 8
- Homework 3 due Thursday, October 15
- Homework 4 due Thursday, October 29
- Homework 5 due Thursday, November 12
- Homework 6 due Thursday, November 19
- Homework 7 due Thursday, December 10
- Exam 1 – Friday, October 2
- Exam 2 – Friday, October 23
- Exam 3 – Friday, November 6
- Exam 4 – Friday, December 4
- Final Exam – TBD, scheduled by the Registrar
Coursework and Grading
Your final grade will be based on weekly homework assignments, weekly labs, weekly quizzes, four exams, a final exam, and participation.
| Component | Weight |
|---|---|
| Homework | 15% |
| Labs | 10% |
| Quizzes | 15% |
| Exams (4) | 30% |
| Final | 25% |
| Participation | 5% |
Homework is assigned weekly and submitted through Gradescope. Due dates are listed above in Dates for Major Assignments and on the schedule; see Late Work for our grace-period policy.
Labs take place during your Friday lab section and are submitted through Gradescope, same as homework. They’re meant to be mostly completed during the lab period itself, with your lab instructor there to help.
Quizzes are short and given in lecture at the beginning of each week, covering material from the previous week. They’re meant to help you keep up with the material, and to give you practice for the exams. Your lowest quiz score will be dropped when computing your final grade.
4 Exams will be held during lab sections on the dates listed above in Dates for Major Assignments. Each exam will cover material from the previous few weeks as described on the schedule. Exams will be on paper and we will provide a printed sheet of notes for your use during the exam.
Final Exam covers material from the entire semester. It will be held during the College’s final exam period; the exact date and time are set by the Registrar (see Dates for Major Assignments and the schedule). Like the four exams, it will be on paper.
Participation will be assessed primarily through attendance and engagement in lecture and lab sections, as well as a few short surveys during the semester (for example, an introductory survey and an end-of-semester reflection). You will have 4 free passes for the semester, each of which forgives one missed class or lab period with no impact on your participation grade. Use this Free Pass form to let us know when you use one – no explanation needed.
Late Work
Homework and labs are submitted through Gradescope. Every assignment comes with a 24-hour grace period after the posted deadline – you can submit up to 24 hours late with no penalty and no need to ask. If you need more time than that because of an extenuating circumstance (e.g. a medical or family emergency), contact us before the deadline and we’ll work out an arrangement – this is handled case by case and doesn’t draw on your free passes.
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 three 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 Gakuya.
- 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
You are expected to attend each class and participate in discussions and group work. Be curious! We cover foundational material in this course; it will be important to keep up with class attendance, labs, and homework assignments. Read the lecture notes and slides carefully; skim the reading in the online texts (thinkcspy).
Learning Community
We encourage an open exchange of ideas and questions in all interactions throughout the course. Our goal is to help each of you develop your own understanding of the material, and we recognize that each of you has your own journey. So we encourage you to ask lots of questions (and there is no such thing as a dumb question about the material in this course!) and be supportive of your classmates on their journey as well. Maintaining an inclusive and positive learning environment where all have a sense of belonging is an important priority and shared responsibility.
If you experience or witness something that concerns you, you have a few options: talk to one of us directly, report it on the CS department’s anonymous climate form, or file a Bias Incident Report with the Middlebury Community Bias Response Team.
Honor Code
You are encouraged to discuss course material with your classmates. However, the work that you turn in must be completed independently, unless an assignment is explicitly designated as one in which collaboration is permitted.
In particular, your work must not be based on information obtained from sources other than those approved for the course (i.e., materials linked from the course site) – for example, searching online for relevant code. (See Use of AI in This Course below for our policy on generative AI specifically.)
You should never copy another student’s code or solutions, exchange computer files, or share your code or solutions with anyone else. You are allowed to obtain help with your code from the drop-in help sessions. Alongside manual inspection, we may use automated tools for detecting software similarity.
Exams and quizzes must be entirely your own work, using only the resources we supply alongside the exam or quiz, and will be proctored. You will be asked to write and sign the College’s Honor Code pledge – “I have neither given nor received unauthorized aid on this assignment” – on each one.
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 as long as its use is acknowledged in your submissions.
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.
Every starter file has a Resources comment at the top asking what helped you with the assignment. This is where you acknowledge AI use. A few examples of what that looks like in practice:
- “Used Claude to help me understand how a for-loop works.”
- “Asked ChatGPT why I was getting an IndexError – it pointed out I was off by one in my range().”
- “Talked through my approach to Part 2 with a friend, then wrote the code myself.”
“Used ChatGPT to write the calculate_total function,” on the other hand, is exactly what we’re asking you not to do. Writing it down honestly doesn’t make it okay – it just means we both know it happened.
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 leave you underprepared for the exams and quizzes that count for 70% of your grade.
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.
Disability Access/Accommodation
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 and Peter Ploegman of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.
Campus Resources
Center for Teaching, Learning, and Research: The CTLR provides academic support for students in many specific content areas and in writing across the curriculum through both professional tutors and peer tutors. The Center is also the place where students can find assistance with time-management and study skills. These services are free to all students. For more information on how to get the help you need, go to the CTLR’s student resource page.
Disability Resource Center: see Disability Access/Accommodation above.
Quantitative Center: provides free peer tutoring and support for coursework involving quantitative and STEM reasoning, including introductory computing.
Center for Health and Wellness: provides free, confidential medical care, counseling, sports medicine, and health education for students dealing with physical, emotional, or interpersonal issues.