CIT 595 Computer Systems Programming - Spring 2016


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 little or no C/C++ background. Students in other programs who have C/C++ experience beyond the introductory level should consider CIS 505 instead.


Teaching Staff

Instructor


Teaching Assistants

  • Linjie Peng
  • Luyao Wang
  • Jingyuan Wu

 


Class Meeting Times

Lecture: Tues/Thurs 4:30-6pm, Towne 303 Towne 313 Moore 216
Recitation: Thurs 10:30am-12pm, DRLB 3N1H


Topics Covered

Systems Programming

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

 


Textbooks

There will be 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.

 


Grading

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

  • Homework assignments (40%)
    • There will be 7-8 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 project (20%)
    • This is a project that you will complete in groups of two.
    • You will likely develop a system consisting of a Pebble smartwatch, a smartphone, a web server, an Arduino microcontroller, and some sort of sensor and display
    • The project will begin approximately 1/3 of the way through the semester and will be done concurrently with other assignments.

 


Course Policies

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