This course provides a programmer’s view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability, and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, security, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: data representations, computer arithmetic, machine-level code and its generation, performance evaluation and optimization, memory organization and management, processes and concurrent computation, and networking technology and protocols.

Prerequisites: CS 54 and 62, or CS 60 and 70.

Lectures

This class will be offered online in Spring 2021. There will be two recorded lectures each week. Lectures, and the embedded exercises, must be completed before class on Wednesday. See the schedule for details.

Problem Sessions

Problem sessions will take place synchronously over zoom. There are two sections: one at 9:05-10:20am PT on Wednesdays and one at 2:30-3:45 PT on Wednesdays. Attendence is required, and you are expected to attend your registered session. However, we will waive the attendance requirement for students with logistical concerns that preclude regular attendance at either section (e.g., time zones, network bandwidth, or conflicting commitments); if you would like to have your attendance requirement waived, you must speak to us in advance.

Labs

Labs will take place synchronously over zoom. There are two sections: one at 6:00-7:15pm PT on Wednesdays and one at 9:05-10:20am PT on Thursdays. Attendence is required, and you must attend your registered section. However, we will waive the attendance requirement for students with logistical concerns that preclude regular attendance at either section (e.g., time zones, network bandwidth, or conflicting commitments); if you would like to have your attendance requirement waived, you must speak to us in advance.

Instructors

Eleanor Birrell Eleanor Birrell
eleanor.birrell@pomona.edu
Edmunds 221
Office hours: Mondays 5-7pm PT; Fridays 9-11am PT.

The best way to contact me is by email or on Zulip. I try to respond to all messages within 24 hours.
Michael Greenberg Michael Greenberg
michael.greenberg@pomona.edu
Edmunds 225
Office hours: Fridays 1:30-3pm PT; Tuesdays 9-11am PT

TAs

Mercy Bickell Mentor Hours: Lab 2.
Ethan Horton Mentor Hours: Lab 2.
Adam Lininger-White Mentor Hours: Lab 1; Sundays, 2-4pm PT.
Jay Rodolitz Mentor Hours: Thursdays, 7-8pm PT; Sundays, 2-4pm PT.
Aden Siebel Mentor Hours: Mondays, 7-9pm PT.
Douglas Webster Mentor Hours: Thursdays, 6-7pm PT; Saturdays, 10am-noon PT.
Eric Zhu Mentor Hours: Lab 1.

Assignments

There will be eleven weekly assignments in CS 105. These assignments are supposed to be fun and challenging, and they should help you master the material covered in this course. However, I have scaled back the assignments from previous offerings of the class to allow for the additional time commitment imposed by the online offering of this class. Assignments will generally be released on Wednesdays and will be due the following Tuesday at 11:59pm PT. See the assignment page for details. The assignments are done in a pair programming paradigm. Adequate performance on all the assignments is required to get a passing grade in the course.

Assignments will be started in the laboratory sessions and will be completed with a partner. It is your responsibility to complete the assignments and turn them in on time. You get ten late days that may be used at your discretion to submit assignments after the deadline with no penalty. 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.

All laboratory exercises will be done—and graded—on pom-itb-cs2.campus.pomona.edu, a machine configured for this class. Everyone registered should have an account when classes begin. This machine is remotely accessble when connected to the Pomona VPN. I will try to make assignments compatible with other machines, but you might encounter some problems if you are unable to connect. If this becomes a problem for you let me know, and I will make accomodations as necessary.

Exams

There will be one midterm exam and one final exam in this course. The exams will be take-home exams that may be completed any time during the assigned week; you should expect each exam to take approximately two hours.

Grades

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

Assignments: 50%
Midterm Exam: 20%
Final Exam: 25%
Participation: 5%

Academic Integrity

In general, collaboration is encouraged in this course. This means that you may discuss approaches to solving problems with anyone in this class, including students, faculty, and TAs. As specified in the department 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 or person or book—is forbidden. The actual solutions to the laboratory exercises and the code you submit must be your own and your partner’s. Except for material from the textbook or lecture, 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 instructor. When in doubt, credit your sources.

Course materials provided to you, including graded papers and 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.

Logistical Accomodations

We are committed to ensuring that everyone can successfully master the material in this course, no matter what your current circumstances. If you find yourself unable to fully participate in the course or unable to meet specific requirements due to logistical challenges (including time zones or network issues), let us know and we will figure out an accomodation.

Disability Accomodations

We are committed to providing equal opportunity for participation in all programs, services and activities. Requests for accommodations may be made by contacting the Disability Coordinator on your home campus. Pomona College’s policy on disability accommodations can be found at the Dean of Student’s website.

Accommodation forms must be submitted and accommodations agreed upon by the last day to add classes, or within five days of the date on which the form was signed by an appropriate dean, whichever comes later. Many accommodations will be handled through the Student Disability Resource Center in the Tranquada Student Services Center.