Computer Architecture refers to the organization of the hardware that executes computer programs. The processor is the most important and complex part of a computer system. As such, it is very important for software developers to understand how processors execute code correctly and with high performance.
This course examines the machine representation of data, low-level programming in C and assembly language, language translation, and the design and implementation of processors at the digital logic level.
Learning Outcomes and Assessments
Upon completion of this course the students will have learned the following topics:
Understand and manipulate the machine-level representation of numbers and data in C (Project02)
Design and implement a translator including interpretation and code generation (Project02, Project04)
Write assembly language programs for the ARMv7 architecture (Project03)
Design and implement an assembler which translates human-readable assembly language into machine code (Project04)
Construct digital circuits to solve computational problems (Project05, Project06)
Design and implement a working computer processor using schematics in a simulator (Project06)
Projects are the main assessment tool for the course. The project corresponding to each learning outcome is shown in parentheses above.
Projects will be graded for both correctness (using an automated tool) and comprehension (using 1:1 interactive grading meetings with the instructor or TA)
Low-stakes labs will build into each project
The final exam will be comprehensive over the semester's work
A Raspberry Pi. See shopping list and setup instructions
Raspberry Pi OS, including compilers, linkers, assemblers, editors, etc.
None are required but you may find these optional books to be useful
Digital Design and Computer Architecture: ARM Edition
Sarah L. Harris and David Money Harris
Computer Organization and Design: The Hardware/Software Interface: ARM Edition
David A. Patterson and John L. Hennessy
The C Programming Language, 2nd Edition
Brian W. Kernighan and Dennis M. Ritchie
Class Participation: 10%
Project01 - Raspberry Pi Setup: 5%
Project02 - NTLang: 10%
Project03 - ARM Assembly Language: 10%
Project04 - ARM Assembler: 15%
Project05 - Intro to Digital Design: 5%
Project06 - Processor Implementation and Simulation: 15%
Final Exam: 20%
Writing neat and clean code counts
Turning in a clean repository counts
Attendance is not taken directly, but participation in class, lab, Piazza, and office hours counts
Extensions are generally not given unless the circumstances are extreme. Please discuss any issues with the instructor in advance.
If you aren't done with an assignment on time, please hand in what you have working on time for full credit. You may earn partial credit for late work up to one week after grades are posted.
Letter grades for the course will be assigned using the University's grading scale
Cheating and Plagiarism
You must do your own work. You may get explanatory help from the instructor, TAs, friends, or Internet sites
You must not turn in work that you did not write. Examples include code or schematics copied from Internet sites, friends, or students from previous semesters.
If we find that you turned in code or schematics that you did not write, and thus do not understand, you will receive a zero on the assignment. If you do it again, you will receive an F in the class.