Fall 2023 Course Review: EECS 370, Intro to Computer Organization

Rating: 4.5 / 5

Instructor (Mark Brehob)

Pros:

  • Tons of experience, both industrial and academic
  • Knows everything
  • Is furry-inclusive

Cons:

  • Talks too fast

Things I learned

  • How assembly is written
  • How assembly is executed
  • Assembler & linker
  • Processors
    • Single-cycle
    • Multi-cycle
    • Pipeline
  • Cache
  • Virtual memory

I had a headstart with the single-cycle processor thanks to nand2tetris but the pipeline really blew up my head. It explains why modern computers are so fast while not running into timing errors all the time.

Cache and virtual memory, however, are just book-keeping, and make up for the most boring exam questions. Virtual memory (in the scope of 370) involves a lot of handwaving. Like, I know what page tables look like. But who's managing it? Is the TLB part of the ISA? If I wanted to write a kernel how much work is on my side? So many questions that hopefully will be resolved in 482 (operating systems).

Projects

All projects are written in C.

  • p1
    • p1a: assembler (LC2K → binary)
    • p1s: simulator (simulates binary)
    • p1m: multiplication (write a program that calculates 6203×1429 in assembly)
  • p2
    • p2a: assembler (LC2K → object file)
    • p2l: linker (object files → binary)
  • p3: pipeline simulator
  • p4: cache simulator

Some argue p2l is the hardest part, but that isn't the case for me. I find p3 the most difficult in that (a) there's a lot of data shuffled around in the pipeline and (b) it's the only project I went to an office hour for.

Favorite moments

  • When Mark came in wearing a pointy hat he said was for "ease of identification in office hours"
  • When four people showed up in their fursuits on Halloween and Mark was like "hey cool can I take a photo afterwards"