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 --------- in Edmunds 113. 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.
We have -------- TAs for CS50 (shared across all three sections):
| Week | Date | Lecture Notes | Reading | Check-in | Assignment |
|---|---|---|---|---|---|
| Week 1 | 09/01 | Values, expressions, and variables | Course syllabus, this website | Course policies, values, and expressions | Your First Function (due 9/2 end of day) |
| 09/03 | Functions | Think Ch. 1, 2 | Expressions, values, and functions | ||
| Week 2 | 09/08 | Modules and for loops |
Think Ch. 4, 5 | Functions (recap of week 1 material) | Picking and Choosing (due 9/9 end of day) |
| 09/10 | Booleans and random |
For loops, modules | |||
| Week 3 | 09/15 | Conditional statements | Think Ch. 7, 8 | Booleans, function calling | Credit Cards (due 9/16 end of day) |
| 09/17 | while loops and lists |
Think Ch. 9 | For loops, modules, conditionals | ||
| Week 4 | 09/22 | Sequences | Think Ch. 10 | While loops versus for loops, lists | Text Processing (due 9/23 end of day) |
| 09/24 | Function calling and evaluation | Think Ch. 6 | Sequence processing, while loops versus for loops | ||
| Week 5 | 09/29 | Scope and debugging | Think Appendix (Debugging) | Parameters and argument evaluation, sequence processing, scope | Movie Hangman (due 9/30 end of day) |
| 10/01 | Midterm | Midterm (-----study guide) (-----solutions) | |||
| Week 6 | 10/06 | Files | Think Ch. 11 | Scope quiz, for loops | Review Sentiment Analysis (due 10/7 end of day) |
| 10/08 | Dictionaries | Think Ch. 12 | Files, for loops, dictionaries | ||
| Week 7 | 10/13 | Wrap-Up | DIY Check-In | study guide | |
| 10/15 | In-class Exam | ||||
| Week 8 | 10/20 | Fall Break | |||
| 10/22 | Exam Retake |
This course meets twice weekly (on Tuesdays and Thursdays) in Edmunds 114 until fall break, and each meeting will have a brief quiz called a check-in. Laptops or tablets are not necessary (and in fact are discouraged) for the Tuesday and Thursday lectures, but bring pencil and paper. Each student will also be assigned a learning community 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 night.
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, including Google and ChatGPT! Since this is an introductory course, there are many, many resources available that duplicate or even 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 please avoid web search and chat tools altogether.
Each in-class exercise will only require writing a few dozen words. In case you have difficulty writing by hand you are allowed to bring electronics; even so, please use them only during in-class exercises. Audio recorders or other note-taking aides will 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 ------- 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 encouraged to get together in learning communities to discuss material from the lectures and text. 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, ...): For this class, 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). 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 in this case.
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.