CS 241: Systems Programming — Spring 2024

Instructor: Professor Stephen Checkoway stephen.checkoway@oberlin.edu
Lectures: Monday, Wednesday, Friday. 13:30–14:20 in King 241
Labs: Tuesday. 15:00–16:50 in King 137
Office Hours: Tuesday 13:30–15:00 in King 231, or by appointment, in King 231
Final presentation: Wednesday, May 15 09:00–12:00 in King 243

Course Description

This course will use Bash and the Rust programming language as tools to explore systems programming concepts. 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 three categories.

The final project must be completed to pass the course.

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.

More 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 Rust 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

Labs are 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, labs turned in late without prior approval 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 Ed 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 Ed!

Collaboration Policy

You are allowed, and encouraged, to work in groups of size two on all labs starting with lab 2. For labs 0 and 1, you will work by yourself. 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.