CS 256 Digital Design and Computer Architecture (Spring 2022)


This course covers the fundamentals of computer architecture from a bottom-up perspective, presenting the basic building blocks of processors, the concept of an instruction set architecture (ISA), and understanding how programs are compiled and executed. The course covers the practical discipline of digital systems design to enable students to design systems using the Verilog/SystemVerilog Hardware Description Language. Designs will be implemented on Field Programmable Gate Arrays (FPGAs) using modern industry-standard design tools. Students will also learn about how performance of digital systems generally, and processors specifically is evaluated and improved. By the end of this course, students will have a deep understanding of the hardware that underpins computing, enabling them to be more aware of the performance, efficiency, and capability of computing systems.


Instructor: Suhaib Fahmy

TAs: Ussama Zahid and Olga Krestinskaya

Time: Sunday 15:00–16:30 and Tuesday 10:15–11:45

All class communication is via CampusWire, so please sign up as soon as possible.

Resources, recordings, and assignment submission is via Blackboard.


By the end of this course, students will be able to:

  • Design digital systems of moderate complexity using Verilog/SystemVerilog and implement them on FPGAs
  • Verify designs by devising a testing strategy and using Verilog/SystemVerilog testbenches
  • Understand the architecture of Field Programmable Gate Arrays and apply the steps of the Digital Design Flow
  • Understand the fundamental building blocks of general purpose processors and how they combine to execute programs
  • Evaluate the performance of processors and digital circuits and apply pipelining to improve performance


The primary textbook is:

  • Sarah L. Harris and David M. Harris, Digital Design and Computer Architecture, RISC-V Edition, Morgan Kaufmann, ISBN 978 0128200643

The secondary recommended book is:

  • David A. Patterson and John L. Hennessey, Computer Organization and Design – RISC-V Edition, 2nd ed, 2021, Morgan Kaufmann, ISBN 978 0128203316


  • 10% for two homework assignments
  • 20% for midterm exam
  • 40% for course project
  • 30% for final exam


Week Topics
1 The digital abstraction, CMOS logic, revision of Boolean algebra, combinational logic
2 Sequential Circuits, introduction to Hardware Description Languages
3 Combinational circuit design in Verilog/SystemVerilog, sequential circuit design in Verilog/SystemVerilog
4 The digital design flow, introduction to FPGA design tools
5 FPGA architecture, number representation and arithmetic, arithmetic in Verilog/SystemVerilog
6 Combinational and sequential circuit timing and pipelining
7 Testing and verification of digital systems
8 Finite state machines, Midterm test
9 Instruction set architecture, program flow in assembly
10 Pipelined processor datapath, parallelism with VLIW, superscalar, out of order execution
11 Memory hierarchy and cache
12 Interfacing peripherals, A2D/D2A, GPIO, PWM, I2C, SPI, high speed serial, FPGAs and processors
13 Class project demonstrations
14 Future directions in computer architecture: CGRAs, GPUS, accelerators, FPGAs in computing systems
15 Semester ends