CMPUT 229: Computer Organization and Architecture I¶
At a glance
- Units: 3
- Prerequisites: CMPUT 201 or 275.
- Offered: Now: Fall 2026; Scheduled: Winter 2027
- Difficulty: Brutal
- Workload: Overwhelming
- Languages and tools: RISC-V assembly, RARS, Git
Number representation, computer architecture and organization, instruction-set architecture, assembly-level programming, procedures, stack frames, memory access through pointers, exception handling, computer arithmetic, floating-point representation, datapath, control logic, pipelining, memory hierarchy, virtual memory. Credit may be obtained in only one of CMPUT 229, E E 380 or ECE 212.
Official catalogue entry · Course website · facts synced 2026-10-01
What It Covers¶
You write RISC-V assembly and run it in the RARS simulator. The Fall 2026 labs build up from an intro to RISC-V and RARS to programs like a typing game, a sorting visualizer, and a perceptron branch predictor. In Fall 2026 the lab assignments themselves are ungraded practice: you're assessed by a one-hour paper-based lab exam in your scheduled lab session, which closely follows the corresponding lab. Doing the labs properly is how you prepare.
What Students Say¶
Imported from the original course reviews page, which mixed student contributions with summarized Reddit discussion. Tips aren't term-stamped yet; if you've taken this course recently, add your experience.
Assembly language, CPU design, memory hierarchy. Consistently cited by students as the hardest course in the program: "One time a friend asked me, 'How's life besides 229?' I quickly answered, 'There is no life besides 229.'"
Understanding what happens at the hardware level makes you a better programmer, but the workload (labs plus difficult exams) is punishing.
Instructor notes: - José Nelson Amaral: high standards, hard labs and exams, and very energetic lectures. He posts course videos on YouTube (see the CMPUT 229 channel) and students in other sections use them too.
Student tips: - Whatever section you're in, the CMPUT 229 YouTube channel is a widely recommended supplement. - Pairs reasonably with 291 (databases), which has lighter workload. Do not take 229 with 301 and 350 in the same semester. - The memory hierarchy concepts in 229 directly feed into 379 (Operating Systems); don't treat it as disconnected content.