Computer Systems Principles

Course Description

Large-scale software systems like Google - deployed over a world-wide network of hundreds of thousands of computers - have become a part of our lives. These are systems success stories - they are reliable, available ("up" nearly all the time), handle an unbelievable amount of load from users around the world, yet provide virtually instantaneous results. On the other hand, many computer systems don't perform nearly as well as Google - hence the now-cliché "the system is down." In this class, we study the scientific principles behind the construction of high-performance, scalable systems. The course begins with a discussion of C language, and moves up the stack from there to the features of modern architectures, assembly languages, and operating system services such as I/O and synchronization.

(The above is the official description of the course. The course focuses on: learning to program in C; the Linux operating system's concepts of processes, programs, and threads; and communication between Linux processes (via pipes and network connections).

Course Information

Piazza and Gradescope Signup

Important Links at UMassAmherst

Course Time and Location

  • M/W/F 4:00-4:50pm @ Integ. Learning Center N151

Lab Time (Monday) and Location

  • LAB01LL - 11:15 AM - 12:05 PM @ EnginLb323
  • LAB01LM - 01:25 PM - 02:15 PM @ FlintL105
  • LAB01LN - 12:20 PM - 01:10 PM @ FlintL201
  • LAB01LQ - 11:15 AM - 12:05 PM @ FlintL201
  • LAB01LR - 01:25 PM - 02:15 PM @ FlintL201
  • LAB01LS - 02:30 PM - 03:20 PM @ FlintL201

Office Hours

  • Joe Chiu: @ LGRC A246
  • TAs