CIT 595 Computer Systems Programming - Spring 2020

Course Overview

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.

This course will provide you the requisite knowledge and experience for systems-focused CIS electives such as 505 Software Systems, 548 Operating Systems Design and Implementation, and 553 Networked Systems. After completing this course, you will have a better understanding of how software works with hardware and how systems (software, hardware, and networks) work together, and be able to:

  • Describe the process by which source code is compiled to machine language
  • Implement applications that use modern C libraries
  • Understand algorithms that operating systems use to schedule processes and enable processes to use more memory
  • Develop systems of multiple programs that work together, collaborate, communicate, are synchronized, etc.
  • Write large programs in C++ and analyze their behavior

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++.

Students in other degree programs may add themselves to the CIS course waitlist but are unlikely to be admitted, as the course will likely fill with MCIT students.


Teaching Staff


Teaching Assistants


Class Meeting Times

Lecture: Tues/Thurs 10:30-11:50am
Recitation: Thurs 4:30-5:50pm


Topics Covered

Systems Programming in C

  • Data structures in C
  • Threads and synchronization
  • C memory management
Operating Systems Concepts
  • Process management
  • Scheduling
  • Caching
  • Virtual Memory
Network Programming
  • OSI network model
  • Socket programming
  • Basics of the World Wide Web
  • Core web technologies: HTML, CSS, and JavaScript
C++ Programming
  • Object-oriented programming
  • Operator overloading
  • Templates


Belonging, Inclusion, and Wellness

A goal of this course is to give all students a sense of belonging in the field of computing.

This can only happen if all members of the course community - the instructor, TAs, and students - work together to create a supportive, inclusive environment that welcomes all students, regardless of their race, ethnicity, gender identity, sexuality, or socioeconomic status. Diversity, inclusion, and belonging are all core values of this course. All participants in this course deserve to and should expect to be treated with respect by other members of the community.

A code of conduct that covers behavior in lecture, office hours, recitation, and online will be distributed to registered students via Canvas. Additionally, the course syllabus in Canvas will list available resources - including designated members of the instruction staff - for reporting violations of the code of conduct and for getting support if you witness or are affected by a violation.

A sense of belonging can also affect students' mental health and wellness, which is of utmost importance to the course instruction staff, if not the University as a whole. All members of the instruction staff will be happy to chat or just to listen if you need someone to talk to, even if it's not specifically about this course.

If you or someone you know is in distress and urgently needs to speak with someone, please do not hesitate to contact CAPS: 215-898-7021; 3624 Market St. If you are uncomfortable reaching out to CAPS, any member of the instruction staff will be happy to contact them on your behalf.


Course Grading and Other Policies

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