CSI 402: Systems Programming (Spring 2018)

Tuesday/Thursday 2:45pm–4:05pm (ES-241)
Amir Masoumzadeh (amasoumzadeh@albany.edu)
  • Office Hours: Wednesday 2:30pm–4:30pm (UAB 422), or by appointment
Teaching Assistant
Younes Karimi (ykarimi@albany.edu)
  • Office Hours: Monday 10am–12pm (UAB 410B), or by appointment
Teaching Assistant
Muralidhar Gopinath (mgopinath@albany.edu)
  • Office Hours: Friday 2pm–4pm (UAB 410B), 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 knowledge of programming basics, C and Assembly programming.


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.

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 GitHub including distribution of notes and homework assignments, assignment submission, and feedback. We will also use Blackboard for communication and for your grades.

Assessment and Grading

Homework Assignments
These will be mainly programming assignments. There will be about 8 homework assignments during the semester.
In-Class Activities and Performance
A major component of your participation in the course will be involvement in class activities and discussions (both individually and in a team). Because your work in your teams is crucial to your success in this course as well as your teammates, you will be held accountable for your contribution to your team. Your team members will give you feedback on your performance during the semester.
There will be 4 exams in total. The first 3 exams each will be on one of the Modules #1–#3. The last exam, during the finals exam week, will be 50% on Module #4 and 50% cumulative on all modules.
Final Grade
Final grade will be a weighted combination of 35% homework assignments, 15% in-class assignments, and 50% exams.


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

means required reading. means optional reading.

  Date   Topic/Reading Assignment
Module #0: Introduction
Jan 23 Course Introduction
Jan 25 Git hw01 due Jan.30
Module #1: Shell/Bash
Jan 30 Shell Basics
Feb 01 Using the Shell hw02 due Feb.5
Feb 06 Scripting the Shell
Feb 08 Filtering Text hw03 due Feb.11
Feb 13 Exam #1
Module #2: C Programming
Feb 15 Basics: Types, Operations, Control Structures. Complex Data Types: Strings, Arrays, Pointers, etc. Functions
Feb 20 Basics (cont.)
Feb 22 Multi-File Programs, GCC & Make hw04 due Feb.27
Feb 27 Debugging
Mar 01 Memory, Valgrind hw05 due Mar.4
Mar 06 Exam #2
Module #3: POSIX/Linux Programming
Mar 08 System Calls
Mar 13 Spring Break
Mar 15 Spring Break
Mar 20 Review of advanced data structures in C (hash tables, binary search trees, etc.)
Mar 22 Files, I/O
Mar 27 Files, I/O (cont.)
Mar 29 Processes & IPC
Apr 03 Processes & IPC (cont.)
Apr 05 Processes & IPC (cont.) hw06 due Apr.5
Apr 10 Class canceled
Apr 12 Networking hw07 due Apr.13
Apr 17 Networking (cont.)
Apr 19 Exam #3
Module #4: Some Fundamental System Programs
Apr 24 Compilers
Apr 26 Assemblers
May 01 Linkers & Loaders
Module #5: Misc./Advanced Topics
May 03 Rust hw08 due May 7
May 08 Review
May 10 Reading Day
May 11 Final Exam (10:30am-12:30pm in same classroom)


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 (E) for the course.

For all assignments and papers, make sure to do your own work, except where collaboration is explicitly permitted or required. Also, make sure that you properly cite any resource from which you borrow ideas and that you clearly distinguish them from your contributions.

Makeup Policy
There are generally no makeup opportunities for missed activities and assignments except in extenuating circumstances. Since there will be occasions in your life when missing a class meeting or a deadline is simply unavoidable, this course has a few built-in safety valves.
  1. You can submit your assignment up to 2 days late subjecting to 10% penalty per day late. No assignment will be accepted after 2 days past the deadline. Important Note: For late submissions, you must email (instructor and TAs) once before the deadline informing us about the late submission and once immediately after your submission so that we can grade it for you.
  2. The average of the best 90% of your in-class activities will count towards your grade.
  3. If you become seriously ill during the semester, or become derailed by unforeseeable life problems, and have to miss so many assignments that it will ruin your grade, schedule a meeting with me in order to make arrangements for you to drop the course to save your grade point average. Do not wait until it is too late to see me when you get in trouble.
Use of Electronic Devices
Computers or other electronic devices may be only used during class for note-taking 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.