CS 241: Systems Programming — Spring 2020

Instructor: Professor Stephen Checkoway stephen.checkoway@oberlin.edu
Lectures: Monday, Wednesday, Friday. 13:30–14:20 in King 321
Office Hours: Thursday and Friday 11:00–12:00, or by appointment, in King 229

Course Description

This course will consider the C programming language and its relationship to the Unix operating system. Students will be introduced to various Unix tools and shell scripting. Some Unix system programming issues will also be included. The course will require a significant amount of programming.


Your final course grades are based on four categories.

Class participation will be measured by answering clicker questions so make sure you answer each one.Class participation points are being replaced with points for the exercises.

The final project must be completed to pass the course.


  1. Homework 1. Due 2020-02-23 at 23:59.
  2. Homework 2. Due 2020-03-08 at 23:59.
  3. Homework 3. Due 2020-03-15 at 23:59.
  4. Homework 4. Due 2020-04-12 at 23:59.
  5. Homework 5. Due 2020-04-26 at 23:59.
  6. Homework 6. Due 2020-05-13 at 11:00.

Final group project

The final project is to be completed in groups of four. Prof. Checkoway will assign groups later in the semester based on students’ input.

The project is due before the presentations during the last week of class.The final project (including the final report and presentation) is now due on May 13 at 11:00.

See all of the details here.

Course Materials

Required Texts


Learning Goals

By the end of the course, you will know how to use

You will also know

Course Policies


CS 151 is required. You should be comfortable with programming with higher level languages, such as Python or Java. No prior experience with Unix or C is expected.

Attendance Policy

You are not required to attend; however, you receive points for participation in each class period that count toward your final grade. You can miss up to 3 days without penalty. Research indicates that students who attend class are more likely to be successful. You are strongly encouraged to attend every class. Lectures are not recorded. If you are unable to attend class, you should consider asking a classmate to take notes for you.

Missed or Late Work Policy

Homework is due by 23:59 on the day specified on each homework page. You have 3 late days that you can use throughout the semester. Each day that a homework is late decreases the number of late days you and your partner have left. If you run out of late days, homeworks turned in late will receive a score of 0. You are responsible for keeping track of your late days. There will be no exceptions to this policy without prior approval from Prof. Checkoway.

Electronic Communication Policy

All electronic communication with course staff should take place on Piazza unless emails are specifically requested by the staff. Course staff may, from time to time, respond to emails, but a response to one email does not guarantee a response to a second. Use Piazza!

Collaboration Policy

You are allowed, and encouraged, to work in groups of size two on all homeworks. For the project, you must work in groups of four. You are free to have different groups for different assignments. You are allowed to talk to anyone in the course about the assignments; however, you are not allowed to share solutions with anyone outside your group. Doing so is academic misconduct.

Academic Integrity Policy

You must adhere to the Oberlin College Academic Integrity Policy. Please familiarize yourself with the Honor Code.

Religious Holiday Observance Policy

Students wishing to be excused from class in order to observe religious holidays must follow the Oberlin College Religious Holiday Observance Policy.