Engineering 85: Digital Engineering and Computer Architecture

The course objectives are as follows:

  • To apply the principles of abstraction, modularity, hierarchy, and regularity in digital design
  • To develop debugging skills by designing, building, and testing digital circuits using commercially available CAD (computer aided design) tools
  • To design, build, and test your own microprocessor
  • To understand what's under the hood of a computer


Josef Spjut

Ruye Wang

Lab Tutors

  • Dong-hyeon Park: Tuesdays 8-10
  • Sarah Lichtman: Wednesdays 7-9
  • Joshua Vasquez: Thursdays 7-9
  • Obosa Obazuaye: Thursdays 10-12

Lab Graders

  • Paul Jolly
  • TBA

Homework Graders

  • Ivan Wong
  • Obosa Obazuaye
  • Akhil Bagaria
  • Fabiha Hannan


Harris & Harris, Digital Design and Computer Architecture, 2nd Ed., Morgan Kaufmann, 2012.

We will be using updated versions of a few of the later chapters for ARM architecture instead of MIPS in the printed version. Those chapters will be provided as they are needed.

Electronic Communication

Be sure you are on the class mailing list. You should have received email before the beginning of classes. If you did not receive mail, add yourself to the list or risk missing important late-breaking announcements. To subscribe, send email to with one line in the body:

subscribe eng-85-l  

Alternatively, click here.

You also will need a Harvey Mudd College computer to complete your labs. If you are not a HMC student, email me your full name and school affiliation and I will request an account for you. You will complete most of your labs in the E85 lab, Parsons B183. See Professor Spjut for the door code. Hardware portions of the labs must be completed in the E85 lab, but other computers including the ones in the ECF may be used for some parts of the labs. If you have issues with the software or computer systems in the lab, contact the system administrator, Willie Drake. He can often be found in his office inside the ECF, and after-hours contact information is typically posted on his door. If there are any problems with lab software or hardware, you should not assume that someone else has already reported it. Please report issues or missing hardware promptly to Willie, Sam, or the instructors.


Grades will be assigned as follows:

  • 30% labs
  • 25% homework problems
  • 20% Midterm 1
  • 25% Midterm 2

There will be weekly labs and problem sets, a and two midterm exams. The first midterm will be taken in-class and the second will be a take-home exam. The first midterm is worth 20% of your grade and is closed-book, closed-notes. The second midterm is open-book, open-notes (your own notes, including course handouts) and is comprehensive, but biased towards the second half of the class. It is worth 25% of your grade.

The only way to really master the material in this class is to design a microprocessor. The labs in this class build upon each other and culminate in designing your own 32-bit MIPS microprocessor in Labs 10 and 11. You must complete these labs and demonstrate a working microprocessor to pass this class.

No late homework or labs will be accepted. However, you are allowed to drop one lab and one homework score. Homework is due at the beginning of class. You will lose 50% of the points on late homework turned in by the end of class. Labs are due electronically on Sakai by 12 noon on the due date. Even if you do not complete your microprocessor (labs 10 & 11) on time, you must still submit them before finals week to pass the class.

Your lowest lab and homework score will be dropped before the average is calculated. You are welcome to discuss labs and problem sets with other students or with the professor or lab assistants or tutors after you have made an effort by yourself. However, you must turn in your own work, not work identical to that of another person. Be sure to credit at the top of your assignment anyone with whom you discussed ideas. It is an honor code violation to simply copy someone else's work. Reading assignments are to be completed before class.

A suggestion for text preparation comes from reddit user onanym

I usually write a cheat sheet, then memorize it so
it's all in my head. That way, they can't possibly prove I'm
cheating. Genius.

As a response, reddit user leontes added,

I used to [do] that, but I found I couldn't remember the details perfectly. So instead... I
integrated the information on the cheat sheet into my prior existing
knowledge, Coding it perfectly within my preexisting framework.

Not only could they not know I was regurgitating the cheat sheet, but
since I had remembered it in terms of [stuff] I already knew, I was able
to synthesize complex consequences from the source material so it
seemed like original, derivated understanding! They never caught on!

From here.


See the schedule page.