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

Lectures take place on Mondays and Wednesdays 11am-12:15pm in Edmunds 101. See the schedule for details.

Labs

Labs will be Wednesdays 7-8:15pm in Edmunds 219/229.

Instructors

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

I am generally in my office most afternoons, 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 messages within 24 hours.

TAs

Claire LeBlanc Mentor Hours: Sunday 3-5pm.
Josh Yum Mentor Hours: Friday 1-3pm and Sunday 3-5pm.
Pei Qin Mentor Hours: Thursday 7-9pm.
Tonya Chivandire Mentor Hours: Monday 4-6pm and Saturday 2-4pm.
Ziang Xue Mentor Hours: Monday 7-9pm and Tuesday 7-9pm.

Assignments

There will be thirteen weekly assignments in CS 105. These assignments are supposed to be fun and challenging, and they should help you learn the material covered in this course. Assignments will generally be released on Wednesdays during lab 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 thirteen 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 itbdcv-lnx04p.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 Pomona campus wifi (or ethernet) or 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.

Check-ins

There will be 12 check-ins this semester. Check-in are are essentially single-question exams that take place at the beginning of the lab session. Check-in are grades as "Got it"/"Not yet".

If your check-in is marked as "Not yet", you can improve your grade to "Got it" by:
  1. Creating a new question covering the same topic
  2. Scheduling a time to meet with me in person
  3. Explaining why your answer did not receive full credit
  4. Providing a corrected answer to the original question
  5. Walking me through your new question and your answer
You do not have a limit to the number of times you can perform a correction, but you may not schedule more than two correction attempts in one week.

You can also improve your grade to "Got it" by successfully answering the question on that topic during one of the two Extra Chance Check-ins.

Grades

Finishing all the assignments successfully is required to pass the class. After that, grades are computed based on demonstrating mastery of topics covered in the course. Grades wil be computed as follows:

  • "Got it" for all 12/12 topics: A
  • "Got it" for 11/12 topics: A-
  • "Got it" for 10/12 topics: B+
  • "Got it" for 9/12 topics: B
  • "Got it" for 8/12 topics: B-
  • "Got it" for 7/12 topics: C+
  • "Got it" for 6/12 topics: C
Mastery of a topic (aka "Got it") may be demonstrated either by receiving a grade of "Got it" on the weekly check-in for that topic or by improving your grade to "Got it" via a successful correction attempt in a one-on-one meeting or by receiving a grade of "Got it" on the question on that topic on one of the extra chance check-ins. As described above, there is no limit to the number of times you may try to correct your grade for a topic.

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.

Accomodations

I am committed to ensuring that everyone can successfully master the material in this course. If you have a disability (for example, mental health, learning, chronic health, physical, neurological, etc.) and expect barriers related to this course, it is important to request accommodations and establish a plan. I am happy to help you work through the process, and I encourage you to contact the Student Disability Resource Center (SDRC) as soon as possible. I also encourage you to reach out to the SDRC if you are at all interested in having a conversation. (Upwards of 20% of students have reported a disability.)