This course is a continuation of CIT 593 and is divided into four parts. We will begin by building on your knowledge of C and covering advanced programming in C for Linux, specifically the libraries that programmers use for concurrency and synchronization. The second part of the course expands the model from a single process to a multiprocess machine and introduces important concepts in modern operating systems: processes, scheduling, caching, and virtual memory. The third part of the course further expands the model and considers how processes communicate across a network, using low-level socket programming and high-level web technologies. Finally, the course introduces the C++ programming language.
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 and the limits on classroom size, students in other programs may add themselves to the course waitlist but are unlikely to be admitted and should consider CIS 505 or CIS 548 instead.
Lecture: Tues/Thurs 10:30-11:50am
Please note that the first class meeting will be Tuesday, January 16. We will not have Lecture or Recitation on Thursday, January 11.
Systems Programming in C
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.
Course PoliciesPolicies related to absences, regrade requests, academic honesty, etc. will be made available to registered students via Canvas.