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: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, processes and concurrent computation, and networking technology and protocols.

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

Lectures

Lectures take place on Tuesdays and Thursdays 2:45-4:00 in Edmunds 101. See the schedule for details.

Labs

Labs will be Wednesdays 2:45-4pm in the Edmunds 105.

Instructor

Eleanor Birrell Eleanor Birrell
eleanor.birrell@pomona.edu
Edmunds 221
Office hours: Mondays and Wednesdays 4-6pm

I am generally in my office a lot, so feel free to drop by with quick questions or just to say hi.

The best way to contact me is by email. I try to respond to all emails within 24 hours.

TAs

Gabriel da Motta Mentor Hours: Sundays, 3-5pm in Edmunds 105.
Thuan Nguyen Mentor Hours: Mondays, 7-9pm in Edmunds 105.
Joe Brennan Mentor Hours: Wednesdays, 7-9pm in Edmunds 105.
Aden Siebel Mentor Hours: Thursdays, 7-9pm in Edmunds 105.

Assignments

There will be seven assignments in CS 105. These assignments are supposed to be fun and challenging; they really are the core of the class. All assignments will be due on Tuesday nights. See the schedule 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 lab sessions. It is your responsibility to complete the assignments and turn them in on time. You get five 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 computer that is configured for this class. Everyone registered should have an account when classes begin.

Exams

There will be two midterm exams and one final exam in this course. The midterm first midterm will be held in class on October 3. The second midterm is tentatively scheduled for November 12 or November 14. The final exam will be on Tuesday, December 17 at 2-5pm.

Your are allowed one (double-sided) page of notes for each of the midterm exams and two (double-sided) pages for the final exam. No other materials are allowed during the exams.

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%
Midterms: 30%
Final Exam: 30%
Participation: 5%

Computer Accounts

You will need two different accounts for this course. Please be ready with valid accounts and passwords for the first laboratory session.

  • An account on the Computer Science system. If you previously took a Computer Science course at Pomona College, you probably have an account already. See the system manager, Corey LeBlanc in Edmunds 218, if you need to set up an account or reset your password.
  • An account with Pomona College Information Technology Services. If you are a Pomona College student, you already have an account. The username is of the form abcd2019, and the password is the one you use for email. If you are from another college, drop by the ITS offices with a photo ID to get your account information.

Collaboration Policy

In general, collaboration is encouraged in this course. This means that you may discuss approaches to solving problems with anyone in this class, including 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.

There will be stringent penalties for violations of academic honesty, up to failure in the course.

Disability Accomodations

Pomona College is 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. At Pomona College, that person is Associate Dean of Students Jan Collins-Eaglin. 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.