This course provides an introduction to the field of computer science through a survey of major subfields. We will cover fundamental topics in history and ethics of computer science, computer systems, mathematical foundations, algorithms, theory of computation, programming languages, and machine learning. The course assumes basic familiarity with programming but it will introduce more advanced programming concepts, such as recursion. Programming concepts will be taught in Python. Assignment reflections will be written in LaTeX.

This course is a prerequisite for most upper level Computer Science courses.

Co-requisites: CSCI 050 PO. Students with prior programming experience may skip CSCI050 with permission from the Computer Science department chair.

Lectures

Both sections meet for lectures on Tuesdays and Thursdays in Edmunds 114. Section 01 meets from 01:15-02:30 pm and Section 02 from 02:45-04:00 pm . See the schedule for details.

Mentor sessions

Saturday, 1-2 pm (Miriam)
Sunday, 6-8 pm (Vika)
Monday, 6-8 pm (Tahi)
Tuesday, 8-10 pm (Aysegul)
Wednesday, 4:15-6:15 pm (Miriam)
Thursday, 6-10 pm (Jinyao, Stefanie, Aysegul)

Lab

Labs are mandatory and take place on Fridays at 1:15-2:30 p.m. or 2:45-4:00 p.m. in Edmunds 229. Please attend the lab section you are enrolled in.

Instructors

David Kauchak David Kauchak ("Dr. Dave")
David.Kauchak@pomona.edu
Edmunds 224
Office Hours: M 9-11am, W 2:30-4:30pm.
Alexandra Papoutsaki Alexandra Papoutsaki
Alexandra.Papoutsaki@pomona.edu
Edmunds 222
Office Hours: TR 10am-noon.

TAs

Miriam Brody Miriam Brody
Jinyao DeSandies Jinyao DeSandies
Stefanie Nguyen Stefanie Nguyen
Aysegul Kula Aysegul (Aisha) Kula
Vika Prokopenko Victoria (Vika) Prokopenko
Tahi Wilton Geary Tahi Wilton Geary

Assignments

See the assignments schedule for details. Labs for this course will be held on Friday afternoons from 1:15-2:30 p.m. for Sections 1 and 2 and 2:45-4:00 p.m. for Section 3 and 4 in Edmunds 229. The lab is equipped with some iMac computers but you are encouraged to use your own laptops. Attendance of the lab sessions is mandatory. Please arrive well prepared for the lab, having read the description thoroughly and having completed the required deliverables that are due at the beginning of the lab.

Labs will introduce you to the weekly assignment. There will be two types of weekly programming assignments: individual and partner assignments. All assignments assigned during the semester should be completed following the Academic Integrity guidelines. There will be about 10 assignments due, ranging from programming assignments, to mathematical proofs, and circuit design, and will also include a reflection portion to provide us with feedback. Along with your score, you will receive written comments by the course staff.

Weekly assignments will generally be due on Thursdays evenings at 11:59 p.m. You get four late days that may be used at your discretion to submit assignments after the deadline with no penalty. Notify the instructors before the deadline that you plan to use a late day. For team assignments, both you and your partner must spend a late day available to use one. Further extensions after you have exhausted all your late days will be granted only in exceptional circumstances.

Exams

There will be two midterm checkpoints and one final exam in this course. Checkpoints will take place during class time on Feb 24th and April 14th. For Section 1, the final exam will take place on Wednesday, May 13th, 2-5pm. For Section 2, the final exam will take place on Friday, May 15th, 2-5pm. Please make travel arrangements accordingly. See the assignments and labs schedule for details.

Grades

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

Assignments: 35%
Checkpoints: 30%
Final Exam: 30%
Lab attendance: 5%

Academic Integrity

In general, collaboration is encouraged in CS51. This means that you may discuss approaches to solving problems with anyone in this class, including students, faculty, and TAs. As specified in the Computer Science departmental policy, you may help, or receive help, in using systems and tools, in debugging code, and in working with high-level design issues. However, using material from any external source—web page, tool, person, or book—is forbidden. This includes AI tools, such as coPilot and chatGPT. The actual solutions to the assignments you submit must be your own (and your partner's, if applicable). Except for material from resources linked on the website or slides, you may not copy, retype, view, or share a copy of any file. If you have any questions about what is appropriate or inappropriate collaboration, please speak with the instructors. When in doubt, credit your sources.

Course materials provided to you, including graded assignments and checkpoint/exam summaries, are for your use in the course. You are encouraged to use them to the fullest extent, but you are not to publish them or distribute them to other people or organizations. This includes submitting them to AI tools for assistance.

Failing to adhere to these guidelines will result in immediate reporting to the Dean of the Students, a zero in the assignment/exam, and half a letter grade reduction.