This course provides a half-semester introduction to the basic elements of computer programming in Python. Topics include control flow; basic data structures; reading and writing files; and debugging programs. Special emphasis on working with and making sense of data in order to connect course material with applications in other disciplines.

Prerequisites: None. In this course we assume that you have no previous computer programming experience in any language.

Students with no prior programming experience who are interested in a broader introduction to computer science may take CS 50 concurrently with CS 51. Students with prior programming experience should talk to to the CS department chair, Prof. Yi Chen, about placing out of CS 50.

Lectures

There are two sections of this class. Section 2 takes place on Tuesdays and Thursdays at 11:00am-12:15pm in Edmunds 114. See the schedule for details.

Instructor

Eleanor Birrell Eleanor Birrell
eleanor.birrell@pomona.edu
Edmunds 221
Office hours: Mondays 7-9pm and Tuesdays 2-4pm.

The best way to contact me is in person (drop by my office) or by email. During the semeter, I try to respond to all messages within 24 hours.

TAs

Julia Aceron Mentor Hours: Sundays 2-4pm (Edmunds 229)
Ellie Burkhardt Mentor Hours: Mondays 8-10pm (Edmunds 229)
Claudio Castillo Mentor Hours: Sundays 8-10pm (Edmunds 229)
Julian Chumacero Mentor Hours: Wednesdays, 6-8pm (Edmunds 227)
Emma Gandonou Mentor Hours: Tuesdays, 6-8pm (Edmunds 229)
PJ James Mentor Hours: Mondays 6-8pm (Edmunds 229)
Caleb Kim Mentor Hours: Thursdays 6-8pm (Edmunds 229)
Minsong Kim Mentor Hours: Fridays 6-8pm (Edmunds 229)

Assignments

There will be six weekly assignments in CS 50. All assignments will be due on Mondays at 11:59pm. Most will be programming assignments, although some may also have an experimental component and/or a short writup (e.g., about ethical issues). See the schedule for details.

We understand that sometimes things get busy, things come up, you get sick, etc. To help in these situations, you may submit up to two assignments late by up to 24 hours with no penalty. Beyond this, further extensions will be granted only in exceptional circumstances.

Exams

There will be two exams in this course. The midterm will take place on Thursday, February 19. The final will take place on Thursday, March 12 and will be cumulative. See the schedule for details.

Among other topics, exams will involve writing code on paper, not a computer. To prepare for this, we recommend practicing writing code on paper (or a whiteboard) throughout the class.

Grades

Completing all the assignments successfully is required to pass the class. After that, grades are computed on a point basis, as follows:

Assignments: 30%
Midterm: 30%
Final: 40%

Academic Integrity

We take academic honesty very seriously.

You are encouraged to get together in small groups 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. You may, however, use any code that we provide to you or that comes from the textbook, as long as you acknowledge the source. Additionally, the TAs are allowed to help you with your code.

A few rules to follow for this course to keep you out of trouble:

  • If you talk with someone in the class about a problem, you should not take notes. If you understand the material you talked about, you should be able to recreate it on your own.
  • Similarly, if you talk with someone, you must wait 5 minutes before resuming work on the problem. Stretch. Use the restroom. Go for a quick walk. This will ensure that you really understand the material.
  • You may not sit next to (or where you can see the screen of) anyone you are talking with about the assignment.
  • The only time you may look at someone else's screen when they are working on an assignment is if they are asking you for help with a syntax error. You should not look at someone else's code to help yourself!
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). 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, etc.). You may 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.

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.

Environment and Accomodations

All students are welcome in this class, and all of the course staff are committed to providing equal opportunity for all students. If you have concerns about anything that is preventing you from fully participanting in the class, please talk to us so that we can address it. Requests for formal accommodations may be made by contacting the Disability Coordinator on your home campus. We will honor all formal accomodations in ways we believe best support your learning. This means that, due to the nature of this course, extensions or alternative deadlines on assignments will not generally be allowed, as extensions would lead to more stress due to overalapping assignments. Students with extended time on exams should arrange to take their exams at the Student Disability Resource Center (SDRC).