Course CSE320
Title System Fundamentals II
Credits 3
Course Coordinator

Erez Zadok


This course will introduce programming and essential concepts of operating systems, compilers, concurrency, and performance analysis, focused around several cross-cutting examples, such as memory management, error handling and threaded programming.  

Bulletin Link


C or higher: CSE 220 and CSE major

Course Outcomes
  • Develop an understanding of the layers of software that lie between an application program and the underlying hardware and how they inter-operate. 
  • Develop an ability to program with operating system APIs.
  • Develop an ability to write and analyze multi-threaded programs.


Bryant and O'Hallaron, Computer Systems: A Programmer's Perspective, third edition, Pearson, 2016

Major Topics Covered in Course
  • C Programming
  • Memory Hierarchy, Caches, Virtual Memory
  • Operating System Processes and POSIX abstractions
  • Operating System Scheduling and I/O
  • Basic Networking and Socket Programming
  • Multi-threading and Parallel Programming


Laboratory Projects
  • Dynamic Memory *Allocator*
  • Shell Environment Implementation
  • Client/Server Networking Implementation
  • Thread-based Programming

Course Webpage