CS-350 - Fall 2023

This course is intended to provide students with a baggage of fundamental notions in ``systems''. In this context, the concept of system is willfully generic as one of the main objectives of this course is to cover reasoning approaches, mathematical tools, and modeling techniques that can be applied to a multitude of system instances. By the end of the course, students who take CS-350 will develop the ability to map new problems onto existing solutions, or at the very least onto existing approaches towards a solution. In fact, this course will help the careful student realize that many system instances have a common denominator of challenges and issues that can be approached using well established techniques and abstractions.


  • CAS CS-210: Programming and basic software/hardware interface concepts.
  • CAS CS-237 or CAS MA-381: Elements of discrete and continuous probabilistic analysis.
  • Please contact the instructor(s) ahead of time if you do not satisfy any of these prerequisites.

Credit Hours: 4

Course Objectives:
The typical know-how that students are expected to acquire with this course should allow them to:

  • abstract a system into fundamental sub-components;
  • identify performance metrics and tradeoffs to evaluate the behavior of a system;
  • measure dependence and correlation between metrics and events;
  • model and analyze queuing schemes;
  • evaluate resource management policies;
  • employ mutual exclusion and atomicity;
  • perform multi-agent synchronization and communication;
  • and employ models of computation for massively parallel processing systems.

Lecture Notes