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 what makes 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.
Upon completion of this course the students will have learned how to:
Understand and manipulate the machine-level representation of numbers and data in C
Design and implement a translator including interpretation and code generation
Write assembly language programs for the ARM (specifically ARMv7) architecture
Design and implement an assembler which translates human-readable assembly language into machine code
Construct digital circuits to solve computational problems
Design and implement a working computer processor using schematics in a simulator
Understand the trade-offs involved in designing processors for high performance, such as cache memory
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
Projects will be graded for both correctness (using an automated tool) and comprehension (using 1:1 interactive grading meetings with the instructor or TA)
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 the due date.
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.