CSI 402: Systems Programming (Spring 2019)

NOTE: this is a tentative syllabus.

Tuesday/Thursday 2:45pm–4:05pm (ES-241)
Amir Masoumzadeh (amasoumzadeh@albany.edu)

Course Overview

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



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 Due
Module #0: Introduction
Jan 24 Course Overview, Required Setup for Assignments
Jan 29 Git
Module #1: Shell/Bash
Jan 31 Shell Basics
Feb 05 Using the Shell
Feb 07 Scripting the Shell
Feb 12 Filtering Text
Feb 14 Exam #1
Module #2: C Programming
Feb 19 Basics: Types, Operations, Control Structures. Complex Data Types: Strings, Arrays, Pointers, etc. Functions
Feb 21 Basics (cont.)
Feb 26 Multi-File Programs, GCC & Make
Feb 28 Debugging
Mar 05 Memory, Valgrind
Mar 07 Exam #2
Module #3: POSIX/Linux Programming
Mar 12 System Calls
Mar 14 Files, I/O
Mar 19 Spring Break
Mar 21 Spring Break
Mar 26 Files, I/O (cont.)
Mar 28 Processes & IPC
Apr 02 Processes & IPC (cont.)
Apr 04 Processes & IPC (cont.)
Apr 09 Networking
Apr 11 Networking (cont.)
Apr 16 Exam #3
Module #4: Some Fundamental System Programs
Apr 18 Compilers
Apr 23 Assemblers
Apr 25 Linkers & Loaders
Apr 30 Exam #4
Module #5: Misc./Advanced Topics
May 02 Rust
May 07 TBA


Assignments are due 11:59pm on the day specified in the homework. Submissions after due time will receive no points. But your lowest assignment grade will be dropped from calculation. This means that even if you choose not to submit one of your assignments, you still have opportunity to earn full mark on your assignment total.
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, 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.

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.