Course CSE320
Title System Fundamentals II
Credits 3
Course Coordinator

Jennifer Wong


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.  

Prerequisite C or higher: CSE 220 and CSE major
Course Outcomes
  • Develop an understanding of the components of the system stack and how they inter-operate.
  • Develop an ability to program with operating system APIs.
  • Develop an ability to analyze application performance and understand the influence of system components on application performance.
  • 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

Laboratory Projects


Course Webpage