CS 241 - Systems Programming

Course Information

Lectures: Hours: T/Th, 11:00AM — 12:15PM
Location: King 239
Instructor: Roberto Hoyle (rhoyle@oberlin.edu)
Office: King 223C
Office Hours: Monday 14:00 — 16:00
Wednesday, 10:00 — 12:00
or by appointment
Phone: 775-8424
Discussions: All discussions will happen through a Slack channel. Check Blackboard for the link. The Blackboard site will be used for grades and quizzes. All announcements will go through Slack.
Textbooks: While all the textbooks are marked as "Recommended" and not "Required", mandatory reading assignments will be given throughout the semester. Links to electronic resources are provided, but it is your responsibility to make sure you have access to the required materials.

You might also be interested in the following books as personal references:

Prerequisites: CSCI 151 or consent of the instructor. You should be comfortable with programming with higher level languages, such as Python. No prior experience with Unix or C is expected.

Course Description

From the Oberlin catalog 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.

Course Goals

My goals and objectives for students taking this course are as follows:

  1. Understand the role of C in the field of computing
  2. Understand the interrelationship of C and Unix
  3. Become fluent in C programming including
  4. Develop the habit of thorough testing and become comfortable in using debugging tools including gdb, valgrind, etc.
  5. Learn and regularly use a version control system
  6. Become acquainted with the Unix tool philosophy and some common tools
  7. Be able to write a Unix tool
  8. Be able to compose Unix tools into shell scripts