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
- Instructor (Unique 55125, 55130, 55135): Dr. Siddhartha Chatterjee. Lecture MTWR 13:00–14:00, GDC 2.216. Office hours: TuTh 14:00–16:00, GDC 6.502, and by appointment.
- Co-instructor (Unique 55140, 55145, 55150): Dr. Prashant Joshi. Lecture MTWR 14:00–15:00, GDC 2.216. Office hours: MTW 15:00–16:00, GDC 6.420, and by appointment.
- UGCAs: Eswar Gogineni, Zara Ike, Harshadeep Kambhampati, Bill Ma, Sean McCain, Hugo Mireles, Andrew Nguyen, Tarun Patanjali, Rishab Pradeep, and Yash Saboo.
- UGCA office hours: per UTCS policy, held in GDC 4.100 or GDC 3.100 (the GDC bridges on the 4th and 3rd floors), a space shared with other core classes. See the office-hours schedule spreadsheet for the current week's staffing, and the Schedule & Office Hours page for the full teaching-team schedule.
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.
- Discrete Math for Computer Science: C S 311 or C S 311H.
- Data Structures: C S 314 or C S 314H.
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 Assignments | 44% |
| Quizzes | 7% |
| Midterm Exams | 32% |
| Final Exam | 16% |
| 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
| Week | Dates | Topics | Notes |
|---|---|---|---|
| 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. | |||
| 0x1 | Aug 24–28 |
|
|
| 0x2 | Aug 31–Sep 4 |
|
|
| 0x3 | Sep 7–11 |
|
|
| 0x4 | Sep 14–18 |
|
|
| 0x5 | Sep 21–25 |
|
|
| 0x6 | Sep 28–Oct 2 |
|
|
| 0x7 | Oct 5–9 |
|
|
| 0x8 | Oct 12–16 |
|
|
| 0x9 | Oct 19–23 |
|
|
| 0xA | Oct 26–30 |
|
|
| 0xB | Nov 2–6 |
|
|
| 0xC | Nov 9–13 |
|
|
| 0xD | Nov 16–20 |
|
|
| Fall Break (Thanksgiving), Nov 23–29: no class | |||
| 0xE | Nov 30–Dec 7 |
|
|
| 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. | |||