CS33: Introduction to Computer Organization – Fall 2024

About / Contact

Office Hours

Instructor/TA Office Hours & Room Email   Piazza Day Lab Lead
Tony Nowatzki Eng.VI 468b: M4-5pm, Th9:30-10:30am tjn cs.ucla.edu
Belle Lerdworatawee Boelter 3286: Tu8:30-10:30am bellelee@g.ucla.edu Monday 1. Data Lab
Dylan Kupsh Boelter 3286: Th: 11-1PM dkupsh@ucla.edu Friday 2. Bomb Lab
Di Wu Boelter 3286: M1-3pm diwu@cs.ucla.edu Wednesday 3. Attack Lab
Jake Ke Boelter 3286: W10am-12pm jakeke@cs.ucla.edu Tuesday 4. Performance Lab
Alexander Pelletier Boelter 3286: Tu12-2pm arpelletier@g.ucla.edu Thursday 5. Thread Lab

Description

In this course our aim is to introduce the key concepts of computer systems. We will learn the basics of many topics, including computer architecture, computer organization, operating systems and concurrency. First we build from the bottom up with detailed explanations of number systems, how they are employed in the instruction set architecture. Then, using x86 as an example, we explain how programs are represented to the hardware, how to view and manipulate these abstractions (eg. procedure calls, stacks, interrupts, and traps) directly in assembly language, and how operating systems provide virtualization and process management. We finally demonstrate how this knowledge applies to improving system security and performance of a real system.

Prerequisites

CS31 and CS32 are official prereqs. It is possible to take CS32 and CS33 together, but it will significantly increase the difficulty of the course.