Course Objectives

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:

  1. Understand and manipulate the machine-level representation of numbers and data in C (Project02)

  2. Design and implement a translator including interpretation and code generation (Project02, Project04)

  3. Write assembly language programs for the ARMv7 architecture (Project03)

  4. Design and implement an assembler which translates human-readable assembly language into machine code (Project04)

  5. Construct digital circuits to solve computational problems (Project05, Project06)

  6. Design and implement a working computer processor using schematics in a simulator (Project06)


  1. Projects are the main assessment tool for the course. The project corresponding to each learning outcome is shown in parentheses above.

  2. Projects will be graded for both correctness (using an automated tool) and comprehension (using 1:1 interactive grading meetings with the instructor or TA)

  3. Low-stakes labs will build into each project

  4. The final exam will be comprehensive over the semester's work

Course Materials

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



  1. Class Participation: 10%

  2. Labs: 10%

  3. Project01 - Raspberry Pi Setup: 5%

  4. Project02 - NTLang: 10%

  5. Project03 - ARM Assembly Language: 10%

  6. Project04 - ARM Assembler: 15%

  7. Project05 - Intro to Digital Design: 5%

  8. Project06 - Processor Implementation and Simulation: 15%

  9. Final Exam: 20%


  1. Writing neat and clean code counts

  2. Turning in a clean repository counts

  3. Attendance is not taken directly, but participation in class, lab, Piazza, and office hours counts

  4. Extensions are generally not given unless the circumstances are extreme. Please discuss any issues with the instructor in advance.

  5. 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.

  6. Letter grades for the course will be assigned using the University's grading scale

Cheating and Plagiarism

  1. You must do your own work. You may get explanatory help from the instructor, TAs, friends, or Internet sites

  2. You must not turn in work that you did not write, or provide your solution to other students. Examples include code or schematics copied from Internet sites, friends, or students from previous semesters.

  3. If we find that you turned in code or schematics that you did not write, or provided your solution to other students, you will receive a zero on the assignment. If you do it again, you will receive an F in the class.

University Policies

Students with Disabilities

The University of San Francisco is committed to providing equal access to students with disabilities. If you are a student with a disability, or if you think you may have a disability, please contact USF Student Disability Services (SDS) at or 415 422-2613 to speak with a disability specialist. All communication with SDS is private and confidential. If you are eligible for accommodations, please request that your accommodation letter be sent to me as soon as possible, as accommodations are not retroactive. Once I have been notified by SDS of your accommodations we can discuss your accommodations and ensure your access to this class or clinical setting.

Behavioral Expectations

All students are expected to behave in accordance with the Student Conduct Code and other University policies.

Academic Integrity

USF upholds the standards of honesty and integrity from all members of the academic community. All students are expected to know and adhere to the University's Honor Code.


All course communications, like all other USF communications, will be sent to your USF official email address. You are therefore strongly encouraged to monitor that email account.

Counseling and Psychological Services (CAPS)

CAPS provides confidential, free counseling to student members of our community; an online workshop series open to all students; consultations and referrals; extensive website resources; an all hours “warmline” (call 855-531-0761); peer-led Crisis Textline (text HOME to 741741); remote individual and group teletherapy to students residing within California (call 415-422-6352. The Dean of Students Office also offers Case Management support for those seeking off campus mental health services.

Confidentiality, Mandatory Reporting, and Sexual Assault

For information and resources regarding sexual misconduct or assault visit the Title IX coordinator or USFs Callisto website.