Fall 2026

C S 429

Computer Organization and Architecture

In-person · Unique 55125, 55130, 55135 (Dr. Chatterjee) · 55140, 55145, 55150 (Dr. Joshi)

From transistors to toolchains. How a C program becomes a running machine, one layer of abstraction at a time. C S 429 is the first course in the systems core sequence required of all computer science majors at UT: data representation, C programming, AArch64 machine-level programs, processor architecture and pipelining, and the memory hierarchy.

Personnel & Office Hours

Course Overview

C S 429 is the first course in the systems core sequence required of all computer science majors at UT. It describes computer systems from a programmer's perspective, at a fairly low level of abstraction. It is a prerequisite for C S 439 (Principles of Computer Systems, aka “OS”: the second systems core course) and C S 331 (Algorithms and Complexity, aka “Algo”: the second theory core course). It also serves as a foundation for upper-division courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required.

The course is organized into one language module and four additional content modules: programming in C in a Linux environment (the C language, the Linux command-line environment, standard libraries, and programming tools — compilers, build systems, debuggers, version control); representing and manipulating data (binary encodings of integers, floating-point numbers, and characters; Unicode and UTF-8; derived data types; data alignment); machine-level representation of programs (the Armv8 A64 instruction set architecture, data access and arithmetic/logical instructions, non-sequential control transfer, procedure call/return, stack and heap disciplines, code generation for C constructs, explicit memory management); processor architecture and implementation (logic design basics, sequential and pipelined implementations of a subset of the A64 ISA, dependences and hazards, forwarding/stalling/squashing, pipeline control, branch prediction, the pipeline performance equation); and storage system architecture and performance (volatile and non-volatile storage technologies, locality of reference, the memory hierarchy, cache structure and behavior, the memory performance equation, secondary storage and I/O, MMIO and DMA). This is a programming-heavy course with an emphasis on low-level systems programming. The primary programming language is C, and A64 assembly language is used extensively throughout.

Prerequisites

The following coursework is required, with a grade of at least C- in each.

Assignments

There are four lab sequences over the course of the semester (three in C, one in AArch64 assembly), plus a separate pass/fail C/Linux toolchain proficiency requirement. In brief: CI builds a REPL interpreter for a simple low-level language (ASML) as a C immersion; MM replaces the C runtime's malloc with an explicit memory allocator; AC implements small functions in A64 assembly; SE builds a pipeline simulator for a small Arm subset plus a two-level cache simulator, integrated. Full descriptions are in the course syllabus and the individual lab handouts.

  • CI Lab (C Introduction). Weekly checkpoints Weeks 1–4: Setup (due Thu Aug 27), Week 2 (due Thu Sep 3), Week 3 (due Thu Sep 10), Week 4 (due Thu Sep 17); AI usage survey due Sat Sep 19.
  • MM Lab (Memory Manager). Week 1 (due Thu Sep 24); Week 2 code submission and writeup submission (both due Thu Oct 1); AI usage survey due Sat Oct 3.
  • AC Lab (Assembly Code). Week 1 (due Thu Oct 22); Week 2 (due Mon Nov 2); AI usage survey due date TBD (announced on Canvas).
  • SE Lab (System Emulator). Week 1 (due Thu Nov 5); Week 2 (due Thu Nov 12); Week 3 (due Thu Nov 19); Week 4 final code submission (due Thu Dec 3); three extra-credit options — chArm-v5plus, a CI/SE comparison essay, and tree_depth optimization — all due Thu Dec 3; AI usage survey due date TBD (announced on Canvas).
  • C/Linux Toolchain Proficiency (CLTP). Pass/fail; up to three attempts; no AI tools permitted. Attempt 1 due Thu Oct 15 (7:00pm); Attempt 2 due Thu Nov 5 (7:00pm); Attempt 3 due Thu Nov 19 (11:59pm).

Also on the Canvas calendar: a Slip Days reporting item (due Mon Dec 7, 11:59pm) and Course/Instructor Evaluation Survey completion (due Wed Dec 9, 11:59pm). Handouts, submission links, and any remaining due dates: see the course Canvas page and the course syllabus.

Grading

Weights per the Fall 2026 course syllabus. Within the programming-assignment component, the individual labs count CI 13%, MM 8%, AC 8%, and SE 15%.

Category% of Final Grade
Programming Assignments44%
Quizzes7%
Midterm Exams32%
Final Exam16%
Miscellaneous (course evaluation survey, etc.)1%

Grades are computed to a precision of two decimal digits, out of 100: A ≥ 92.5; A− 90.0–92.5; B+ 85.0–90.0; B 80.0–85.0; B− 75.0–80.0; C+ 70.0–75.0; C 65.0–70.0; C− 60.0–65.0; D+ 55.0–60.0; D 50.0–55.0; D− 45.0–50.0; F below 45.0. A final grade less than 0.05 below a cutoff is automatically bumped up to that grade; no other bump-up requests are considered. You must pass at least one test case for each lab checkpoint, and you must demonstrate manual proficiency in the C/Linux toolchain on a pass/fail basis (up to three attempts, no AI tools permitted). You will automatically fail the course if you do not submit a required assignment, or if you are found to have violated the UT Honor Code or the UTCS Academic Integrity policy.

There are three numbered exams (0x1, 0x2, 0x3) held in the evening rather than during the normal lecture hour; the exams are individual, single-attempt, closed-book, limited-notes, paper-and-pencil (calculators allowed), and timed at two hours. A short quiz appears in the discussion-section topics roughly weekly (Quiz 0x1–0xB); quizzes are individual, single-attempt, open-book/notes/internet, multiple-choice, 15 minutes, taken in person in your discussion section, and the lowest four quiz scores are dropped. You have a total of six slip days, in whole-day increments (1 minute to 24 hours late = 1 slip day), to apply toward late lab submissions over the semester; the maximum usable per assignment is set in that assignment's handout. There are no make-up exams or assignments without a verified excuse from Student Emergency Services.

Full grading policy, late-submission rules, regrade procedure, and the academic-integrity policy are distributed on the course Canvas page and in the course syllabus.

Textbooks and Materials

Recommended, not required:

  • Computer Systems, A Programmer's Perspective, 3rd edition, by Randal E. Bryant and David O'Hallaron. Pearson, 2016. ISBN-10: 0-13-409266-X. ISBN-13: 978-0-13-409266-9.
  • The Art of ARM Assembly, Volume 1, by Randall Hyde. No Starch Press, 2025. ISBN-13: 978-1-71-850282-6.
  • The C Programming Language, 2nd edition, by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall Software Series, 1988. ISBN: 0-13-110326-8. This is the classic K&R book, the standard against which all reference manuals are compared — it should be in the library of anyone who programs in C.

In addition, we will reference official manuals and original papers, soft copies of which will be provided.

Weekly Schedule

WeekDatesTopicsNotes
Week labels (0x1–0xE) and topic sequence below follow the Fa26 Canvas “Topics and Readings (by week)” table, and match the Fall 2026 course syllabus.
0x1Aug 24–28
  • Introduction and syllabus. Introduction to Linux.
  • Hello world in C. Linked lists in C. Huffman coding in C.
  • C and Java. Values, representations, interpretations.
  • CI Lab Week 1 (Setup) due Thu Aug 27.
0x2Aug 31–Sep 4
  • Bits and bit technologies. Codebooks. Weighted codes. Positional representation. Octal and hexadecimal notation.
  • Conversions. Signed representations. Number wheel.
  • Conversion, expansion, truncation. Boolean operations. Shifts.
  • CI Lab Week 2 due Thu Sep 3.
0x3Sep 7–11
  • Labor Day, Mon 9/7: no class.
  • Word size. Byte ordering. Integer arithmetic: unsigned/signed addition and subtraction.
  • Multiplication, division. Special cases. Manipulating integer representations: ripple-carry addition.
  • CI Lab Week 3 due Thu Sep 10.
0x4Sep 14–18
  • Manipulating integer representations: bit-parallel operations, masking.
  • Manipulating integer representations: shifting, recursive doubling. Combinations of techniques.
  • Dynamic memory management: concepts and details.
  • CI Lab Week 4 due Thu Sep 17; CI Lab AI Usage Survey due Sat Sep 19.
0x5Sep 21–25
  • Character data. ASCII, Unicode. UTF-8 encoding.
  • Floating-point: options, representation of normalized numbers, zero, subnormals, infinity, NaN.
  • Floating-point: rounding, operations.
  • MM Lab Week 1 due Thu Sep 24.
0x6Sep 28–Oct 2
  • Objects and names. Arrays. Structs and unions.
  • Pointers. Data alignment.
  • MM Lab Week 2 (code and writeup submissions) due Thu Oct 1; MM Lab AI Usage Survey due Sat Oct 3.
0x7Oct 5–9
  • Introduction to ISAs. von Neumann and Harvard architectures.
  • AArch64 state and programming model. Instruction processing. Operand specifiers: immediate, register, memory.
  • Load/store instructions. Data processing instructions.
  • Exam 0x1: evening exam, Fri Oct 9 (two hours; clock time and room announced on Canvas).
0x8Oct 12–16
  • Code generation for basic types, pointers, and arrays.
  • Code generation for structures, unions, casts, and sequencing.
  • Control flow and branch instructions. Code generation for conditionals.
  • Proficiency (CLTP) Attempt 1 due Thu Oct 15, 7:00pm.
0x9Oct 19–23
  • Code generation for iteration.
  • Introduction to procedure calls. Control and data transfer in procedure calls.
  • Register state management.
  • AC Lab Week 1 due Thu Oct 22.
0xAOct 26–30
  • Digital design. Combinational logic blocks, bit vectors. Building the chArm ALU.
  • Memory elements (latches, flip-flops), clocks.
  • Finite state machines.
  • Exam 0x2: evening exam, Fri Oct 30 (two hours; clock time and room announced on Canvas).
0xBNov 2–6
  • Single-cycle implementation of chArm-v3 (SEQ). Data and control paths.
  • Towards pipelining: a naïve pipelined implementation (PIPE−).
  • Details of PIPE−.
  • AC Lab Week 2 due Mon Nov 2; SE Lab Week 1 and Proficiency Attempt 2 due Thu Nov 5 (7:00pm for the proficiency attempt).
0xCNov 9–13
  • Correctness issues in PIPE−. Data and control dependences. Pipeline hazards.
  • Value forwarding. Correct pipelined implementation (PIPE). Datapath changes. Pipeline control unit.
  • Exception processing. Pipeline performance equation.
  • SE Lab Week 2 due Thu Nov 12.
0xDNov 16–20
  • Volatile and non-volatile data storage technologies. Towards a storage hierarchy.
  • Structure of caches: ABC model.
  • Management of caches: hits and misses.
  • SE Lab Week 3 and Proficiency Attempt 3 due Thu Nov 19.
Fall Break (Thanksgiving), Nov 23–29: no class
0xENov 30–Dec 7
  • Performance of caches: 3C model, AMAT. Writing memory-efficient code. Memory mountain.
  • DRAM cells, chips, SDRAM organization. Error-correcting codes.
  • Buses, MMIO, DMA (not on exam).
  • SE Lab Week 4 (final code submission) and all SE Lab extra-credit options due Thu Dec 3; Slip Days report due Mon Dec 7 (last class day).
CES (course/instructor evaluation) completion due Wed Dec 9. Exam 0x3 (the final exam): at the time scheduled by the Registrar within the Fall 2026 final exam period (Dec 10–16), with a makeup timeslot for verified conflicts; two hours, in person.