CSI 402: Systems Programming (Spring 2019)

Tuesday/Thursday 2:45pm–4:05pm (ES-241)
Amir Masoumzadeh (amasoumzadeh@albany.edu)
  • Office Hours: Fridays 10am–12pm (UAB 422), or by appointment
Teaching Assistant
Ravi Sood (rsood@albany.edu)
  • Office Hours: Monday/Friday 4pm–5pm (UAB 412D), or by appointment
Teaching Assistant
Zachary Norcross (znorcross@albany.edu)
  • Office Hours: Tuesday/Thursday 11am–12pm (University Library), or by appointment

Course Overview

This course introduces students to the programming aspects of operating systems. Topics covered include implementation of storage management, resource allocation, multi–processing, scheduling, synchronization, inter–process communication, and terminal I/O. Programming assignments are designed to enhance subject understanding, problem solving, and programming skills through hands–on experience on real–life–like problems.

Learning Goals for Students

Students who successfully complete this course will be able to


ICSI/ICEN 333 or equivalent with a grade of at least C.

You are expected to have a good understanding of programming basics, C, and Assembly.


There is no single textbook that covers everything discussed in this course. Therefore, we rely on multiple online resources (books, articles, and tutorials) which are available publicly or via the University’s network. You are required to read each session’s readings listed on the schedule before attending the class. Schedule of readings is given in the course schedule.

Communications and Submissions

The course syllabus and schedule is available on the course webpage. Most of the tasks in this class will be handled via course GitHub organization including distribution of notes and homework assignments, assignment submission, and feedback. We will also use Blackboard for communication and for your grades.

If you have general questions about an assignment you should post it as an issue in the repository corresponding to the assignment. If have a question about your current solution and want us to take a look, you should create an issue in your individual assignment repository instead. Include a screenshot of your runtime environment as well as references to places in your code that you want us to check.

Your assignments will be automatically collected from your GitHub repositories at the time of the deadline. This helps you keep working and improving your submissions up until the deadline. Just make sure that you continuously keep your GitHub repository synced with your local version.

Assessment and Grading

Individual Homework Assignments (30%)
There will be about 6 programming assignments. Note that assignments may differ in terms of level of efforts needed and the allocated points for each will reflect that.
Team Project (20%)
Students should work in teams of up to 3 to develop an application that ties together many of the concepts taught in class throughout the semester. Schedule of deliveries will be given in the course schedule.
Exams (50%)
There will be 3 exams, one at the end of each learning module 1, 2, and 3. Exams are non-cumulative and worth 10%, 15%, and 25% of the final grade, respectively.

General Education Competency

This course provides several opportunities for students to develop advanced writing, critical thinking, information literacy, and oral communication skills. Specifically, (i) students are required to provide proper documentation of their project in English using complete sentences, observing the usual rules of grammar, spelling, and punctuation, (ii) frequent interactive discussions in a variety of communication contexts (i.e., students–instructor and student–student interactions in teams) stimulate critical thinking, and promote oral communication skills, and (iii) students learn various ways in which information is organized and structured and the process of finding and using information. By examining information from resources available on the Internet, students learn to evaluate the quality of information and to use information ethically and professionally.


The following schedule is tentative and will be regularly updated. It is your responsibility to check the schedule regularly.

Note: “+” indicates an optional reading.

  Date   Topic/Reading Assignment Due
Jan 24 Course Overview, Required Setup for Assignments
Module #1: Shell/Git
Jan 29 Git hw00 due Jan.28 (on Blackboard)
Jan 31 Shell Basics, Unix File Structure & Permissions hw01 due Feb.01
Feb 05 Shell Redirection, Expansion, Processes, & Environment
Feb 07 Scripting the Shell hw02 due Feb.11
Feb 12 File Search and Text Processing
Feb 14 Exam #1
Module #2: C Programming
Feb 19 C Types, Operations, Control Structures, & Complex Data Types
Feb 21 C Functions, Advanced Pointer Concepts, & cmd line arguments
Feb 26 C I/O
Feb 28 Multi-File Programs, GCC, & Make hw03 due Mar.4
Mar 05 Debugging
Mar 07 Compiling, Assembling, & Linking hw04 due Mar.11
Mar 12 Recap & Review
Mar 14 Exam #2
Mar 19 Spring Break
Mar 21 Spring Break
Module #3: POSIX/Linux Programming
Mar 26 System Calls
Mar 28 File I/O
Apr 02 Processes
Apr 04 Executing Programs & Signals
Apr 09 Pipes & FIFOs hw05 due Apr.08
Apr 11 Basic Networking
Apr 16 Advanced Networking
Apr 18 Threads hw06 due Apr.22 (optional)
Apr 23 Threads (cont.) Project progress report due Apr.23
Apr 25 Recap & Review
Apr 30 Exam #3
Module #4: Misc./Advanced Topics
May 02 Rust
May 07 Project Demos Project submission and demo, scheduled May 6-16


No Late Submission
Assignments will be released about a week before their due date. You are highly recommended to study an assignment as soon as it becomes available. There will be ample opportunities to benefit from office hours and communication with me and the TAs before the due date. Assignment are due 11:59pm on the day specified in the homework. Submissions after due time will receive no points.
Review of Grades
Any issue regarding your grade in a specific assignment must be posted as an GitHub issue in the corresponding repository no later than 5 business days after posting day of the grades. There will be no re-grading after the 5-day period has passed.
Attending Exams
Exams are given in regular hours of the class. Exam dates are given in the course schedule, and there will be usually reminders about them in the lectures. Makeup exams will be given only for valid and verifiable extenuating circumstances (e.g., a major medical situation). It is the student’s responsibility to contact the instructor ahead of time and arrange to take a makeup exam at an alternate date/time. Makeup exams are not guaranteed and will be generally harder than the regular exams.
Academic Integrity
It is every student’s responsibility to become familiar with the standards of academic integrity at the University. Claims of ignorance, of unintentional error, or of academic or personal pressures are not sufficient reasons for violations of academic integrity. Any incident of academic dishonesty can result in (i) no credit for the affected assignment, (ii) report to the appropriate University authorities (e.g., Dean of Undergraduate Education or Graduate Studies), and/or (iii) a failing grade for the course.

For all assignments and papers, you must submit your own work, except where collaboration is explicitly permitted or required. Also, you must properly cite any resources from which you borrow ideas and clearly distinguish them from your contributions.

Class Attendance
Attendance will not be taken in lectures. However, you are strongly advised to attend them. Note that even though some of the material covered in class may not appear on the lecture slides, students are responsible for all materials covered in lectures. It is your responsibility to find out the material covered in a lecture you missed.

Please do not disrupt the class by entering late or leaving early without instructor’s approval.

Use of Electronic Devices
Computers or other electronic devices may be only used during class for note-taking, in-class exercises, or other class-related activities. You are not allowed to perform any unrelated task during class.
Students with Disabilities
Reasonable accommodation will be provided for students with documented disabilities. If you believe you have a disability requiring accommodation in this class, please notify the Disability Resource Center (Campus Center 130, 518-442-5490). That office will provide me with verification of your disability, and will recommend appropriate accommodations. In general, it is your responsibility to contact me at least one week before the relevant activity to make arrangements.