Introduction to
Computer Systems
Welcome to the Spring 2024 session of CSCI356!
Please register online for a lecture section, a discussion session, and the quiz timeslot. And grab a copy of our textbook, Computer Systems: A Programmer's Perspective by Bryant and O'Hallaron (3rd edition, Pearson, 2015).

Course Overview

This course covers information representations, x86 assembly, buffer overflow attacks, memory hierarchies, caches, virtual memory, out-of-order execution, along with compilation and system software concepts such as linking and heap management.

The goal is to improve your understanding of what a computer does to execute a program, improving your ability as a programmer.

This course will also serve as a basis for CSCI 350 (Operating Systems), CSCI 450 (Computer Networks), CSCI 457 (Computer Systems Organization), EE 451 (Parallel and Distributed Computation)

Important Dates

  • First lecture: Tue, Jan 9, 2024
  • Midterm I: Fri, Feb 16, 2024
  • Midterm II: Fri, Mar 29, 2024
  • Final: Mon, May 6, 2024
(If you have a conflict, contact the instructor of your section as soon as possible.)

Cloud Resources

This class provides access to a cloud server; this will allow you to complete assignments on x86-64 assembly even if your laptop has an ARM processor (e.g., Apple Silicon).


  • Registrations are open online.
  • Classes and exams will be held in person for the Spring 2024 semester.