CIT 595 Computer Systems Programming - Spring 2017

Course Overview

This course is a continuation of CIT 593 and is divided into three parts. We will begin by building on your knowledge of C and covering systems programming in C for Linux, specifically the libraries that programmers use for threading and concurrency, synchronization, inter-process communication, and networking. The second part of the course introduces the C++ programming language, and the final part of the course covers important concepts in modern operating systems: processes, scheduling, caching, and virtual memory.

After completing this course, you will have the requisite knowledge and experience for systems-focused CIS electives such as 505 Software Systems and 553 Networked Systems.

This course is currently only open to students in the MCIT program and assumes prior C knowledge (specifically, what is covered in CIT 593) but not C++. Due to the large size of the MCIT class, students in other programs and/or who have prior C++ experience are unlikely to be admitted and should consider CIS 505 instead.

Teaching Staff


Teaching Assistants

  • Qingxiao Dong
  • Yujie (Lydia) Li
  • Xinxin Ma
  • Yue (Claire) Zhang
  • Anni Zhu


Class Meeting Times

Lecture: Tues/Thurs 10:30-11:50am, Moore 216
Recitation: Tues 4:30-5:50pm, DRL A5

Topics Covered

Systems Programming

  • Data structures in C
  • Threads and synchronization
  • C memory management
  • Serial communication and networking
C++ Programming
  • Object-oriented programming
  • Operator overloading
  • Templates
Operating Systems Concepts
  • Process management
  • Scheduling
  • Caching
  • Virtual Memory



There is no required textbook for this course. There will be numerous assigned readings over the course of the semester, but they will be made available to you via Canvas.



Note that these are only guidelines, but final course grades will likely be based on the following:

  • Homework assignments (30%)
    • There will be 5-6 programming assignments over the course of the semester
    • You must work on these assignments alone unless specifically noted
  • Exams (30% total)
    • There will be two exams over the course of the semester; each is worth 15% of the final grade
  • Recitation (10%)
    • Weekly recitation sessions will include solving problems related to lecture material
    • Your grade will be determined by attendance, participation, and the correctness of your solutions
  • Group projects (30% total)
    • There will be two projects: the first is worth 10% of the grade and the second is worth 20%
    • In the first project, you will work with one other student to develop a web app in C that reads data from a file and allows the user to sort the data, filter it, and perform calculations on it
    • In the second project, you will work with 2-3 other students to develop a system consisting of a Pebble smartwatch, a smartphone, a web server, an Arduino microcontroller, and some sort of sensor and display


Course Policies

Policies related to absences, regrade requests, academic honesty, etc. will be made available to registered students via Canvas.