Jump to the course schedule or the syllabus.
This course is a half-semester introduction to computer programming using the Python programming language. Each week is built around in-class exercises (on pen and paper) meant to teach concepts and a take-home assignment which will solidify the key skills of:
The instructor of CS50 is Prof. Osborn (he/they). I look like this:
You can find me in Edmunds 110 (my lab) or Edmunds 113 (my office) most of the time. You can most easily find me during my office hours, which are typically Tuesday, Wednesday, Thursday, and Friday 9:00–10:00AM as well as Friday 1:00–2:00PM (with some exceptions I will announce in advance) in Edmunds 113; or by appointment (no need for an appointment during the listed times!). I'm happy to discuss course content, retro videogames, progress through the CS major, my hopes to coach a competitive Pomona Splatoon 3 team, or anything of interest to you. You can email me anytime and I'll try to reply within 24 hours, except on weekends. This can be even better than office hours if you have questions about quizzes, homework, or course materials.
We have six TAs for CS50 (shared across all three sections). Besides LC meetings, they also host the following open mentor sessions:
| Week | Date | Lecture Notes | Reading | Quiz | Assignment |
|---|---|---|---|---|---|
| Week 1 | 09/01 | Values, expressions, and variables | Course syllabus, this website | Values and expressions | Getting Started (due 09/07 at noon) |
| 09/03 | Functions | Think Ch. 1, 2 | Expressions, values, and functions | ||
| Week 2 | 09/08 |
Modules and for loops
|
Think Ch. 4, 5 | Variables, Functions (recap of week 1) | Vacation and Turtle (due 09/14 at noon) |
| 09/10 |
Booleans and random
(code example 1)
(code example 2)
|
For loops | |||
| Week 3 | 09/15 | Conditional statements (code examples) | Think Ch. 7, 8 | Booleans, function calling | Credit Cards (due 09/21 at noon) |
| 09/17 |
while loops
|
Think Ch. 9 | For loops, conditionals | ||
| Week 4 | 09/22 | Sequences | Think Ch. 10 | While loops versus for loops, lists | (due 09/28 at noon) |
| 9/24 | Midterm | Midterm (study guide, solutions forthcoming) | |||
| Week 5 | 9/29 | Function calling and evaluation | Think Ch. 6 | Sequence processing, while loops versus for loops | (due 10/05 at noon) |
| 10/01 | Scope and debugging | Think Appendix (Debugging) | Parameters and argument evaluation, sequence processing, scope | ||
| Week 6 | 10/06 | Files | Think Ch. 11 | Scope quiz, for loops | (due 10/12 at noon) |
| 10/08 | Dictionaries | Think Ch. 12 | Files, for loops, dictionaries | ||
| Week 7 | 10/13 | Wrap-Up | DIY Quiz | study guide | |
| 10/15 | In-class Exam | Come to special office hours on 10/16 or 10/21! | |||
| Week 8 | 10/20 | Fall Break | |||
| 10/22 | Exam Retake (during class period) |
This course meets twice weekly (on Tuesdays and Thursdays) in Lincoln 1125 (Sec. 1) Edmunds 101 (Sec. 2) until fall break, and each meeting will have a brief quiz called a check-in. Laptops or tablets are not allowed in the Tuesday and Thursday lectures, but bring pencil and paper. Each student will also be assigned a learning community (LC) of roughly 5 students with a dedicated TA and mandatory weekly meeting time (and group assignment!) sometime on Tuesday or Wednesday. Assignments will be always be given out on Tuesdays and will be due the following Monday at noon; the group assignment will be done during LC meetings, so don't miss them.
This course uses a Tier 0 AI policy. There is one question on the first homework assignment that asks you to use AI to illustrate a key concept, but outside of that very specific demand there is to be absolutely no use of AI in this course (including ChatGPT, Claude, locally hosted models, Google AI search results, et cetera).
Our textbook is How to Think Like a Computer Scientist: Interactive Edition. It is available online for free. Prof. Papoutsaki has developed a brief guide to Python syntax for CSCI 051 PO, which you may find helpful as a quick reference. The only other allowed resources (besides this website and Canvas) are the official Python tutorial and the official Python documentation including that on its standard library. We will discuss the structure of this documentation in class.
Lecture notes will be provided on this website, and you should use no sources besides those listed here, and that means no Google, ChatGPT, or web searches! Since this is an introductory course, there are many, many resources available that will trivialize the exercises and practice problems we will ask you to conduct. Even a simple Google search will offer a "helpful" AI response that is likely to spoil the answer completely (which will impair your ability to learn the material properly for quizzes and tests), so we must avoid web search and chat tools altogether if this course is to be worth our time.
Each in-class exercise will only require writing a few dozen words. In case you have difficulty writing by hand ask Prof. Osborn and you will be allowed to bring electronics; even so, please use them only during in-class exercises. Audio recorders or other note-taking aides will also be considered if you ask my permission.
Course Q&A and announcements will be on this page and Canvas, so check your email regularly; it is your responsibility to stay up to date! The classroom, the Canvas Discussions page, my office hours, and TA-hosted learning community meetings are the only valid places to ask questions about course content. We will use Gradescope for turning in assignments.
The grading breakdown is as follows:
Retakes: Check-in grades can be improved by an oral retake or alternate quiz during my office hours up to two weeks after the lecture period when they were issued. The midterm and in-class exam grades can be improved (respectively) in a special makeup session (date TBD) or on October 22nd during the normal class period for your section.
We understand that sometimes things get busy, things come up, you get sick, etc. To help in these situations, you may submit two assignments late by up 24 hours. Beyond this, except under very specific extenuating circumstances, we will not accept late assignments (overflow of one assignment into another will likely impair your ability to complete the second on time, for example; better to have two B-grade assignments and solid quiz scores than a late A and a late C and poor quiz scores).
We take academic honesty very seriously.
You are required to get together in learning communities to discuss material from the lectures and text, and execute the group portion of each assignment. However, the work that you turn in must be done independently, unless an assignment is explicitly designated as one in which collaboration is allowed.
In particular, your work must not be based on information obtained from sources other than those approved for the course (i.e., the text, web pages linked from the course web page, and materials provided in lecture). You should never copy another students code or solutions, exchange computer files, or share your code or solutions with anyone else in the class until after an assignment is due. In fact, you should not discuss this course's assignments with students not in the course (excepting TAs), as their more advanced CS knowledge may lead you to solutions that we will perceive as violations of the academic honesty code. You may, however, use any code that we provide to you or code that comes from the textbook, as long as you acknowledge the source. TAs (and only TAs) are allowed to help you with your code.
A few rules to follow for this course to keep you out of trouble and ensure you learn as much as possible from the course:
Generative AI tools (e.g., ChatGPT, Gemini, Claude, CoPilot, ...): This course uses a Tier 0 AI policy. You should be writing all of your code on your own without any additional tools beyond VS Code (without AI tools installed; we will show you how to hide the prompt that VS Code gives to use these tools). AI tools should not be used on the assignments in this class in any way (either to generate code or to assist you in debugging code, to understand the assignment, to understand the lecture material, or for any other use), with the exception of exactly one question in the very first assignment. You also may not use it to help you study for exams, e.g., to help give an explanation of a topic/idea covered in class or by having it generate sample questions—ask Prof. Osborn or a TA for advice on studying instead.
Repeated for emphasis: do not use any AI chat or web search for questions about this course or assignments. You are at Pomona (or Scripps, or wherever) because you wanted a small college experience where you could form meaningful connections with your peers and professors. Asking ChatGPT for help is missing out on an opportunity to connect with another student or to show your professor where you stand in office hours; it isolates you from others, diminishes your learning and your college experience, and only benefits rentiers who want to turn the creative practice of computer programming into a revenue stream. As your professor I do not care if you start out by giving me a wrong answer to a question or flub an assignment: my entire job is to support you through the difficult and painful experience of moving from ignorance into knowledge. So: come to office hours, and eschew AI.
If you are ever unsure about what constitutes acceptable collaboration, please ask!
For more information see the Computer Science Department's Academic Honesty Policy and the college's policy.
You may use your own laptop or the Computer Science department computers for this course. If you use the CS computer labs (which I encourage you to do), please read about the Computer Systems Policies.
If you need accommodations please contact the Disability Coordinator on your home campus. The process for Pomona students is available here.
Due to the nature of this course, extensions or alternative deadlines on assignments will not in general be allowed—extensions would lead to more stress due to overlapping deadlines. Since the whole course schedule is laid out on the course website, talk with Prof. Osborn if you have a concern about meeting some deadline on time.