CS 232: Syllabus

Syllabus for Spring 2015

Topics and Reading Assignments


A. Tanenbaum, Structured Computer Organization, 6th ed, Prentice Hall, 2012.


Projects 45%
Weekly Quizzes 25%
Weekly Homework 10%
Final Exam 15%
Class Participation 5%

Late Policy

The weekly projects will build upon each other, so it is critical to stay on schedule in order to be successful. Late projects will receive a maximum of 50% credit, so handing in something on the due date is generally better than handing in a complete assignment late.

As you all have busy schedules, you may have two four-day extensions you can use at your discretion over the course of the semester, excepting only the final project. That means you may choose to hand in two projects on Friday instead of Monday.

The projects for CS 232 and CS 251 will both be due on Monday nights. For those of you taking both CS 232 and CS 251, you may choose to hand in one of the projects on Wednesday. Let the professor know your choice in advance.


Collaboration on assignment concepts and ideas between groups is acceptable, but you need to understand everything you do, and your code should be your own code. If you use ideas from another group, you must indicate that within your code or writeup. Err on the side of caution. The worst thing that can happen is the professor noticing disturbing similarities in homeworks or assignments with no attribution of credit.


For each assignment, you will put together a wiki page for the writeup. The writeup should describe the assignment, explain any required theory, and present the results. Your audience for the writeup is your fellow students who might be interested in what you're doing.

To hand in your code, create a zip or tar file of all of the relevant source code files and place it in the private subdirectory of your Courses handin directory.

Weekly Topics and Readings

  • Introduction
  • Binary representation and arithmetic
  • Gates
Tanenbaum, Chapter 1, 2.2
  • Combinational circuits
  • Adders, other useful components
  • ALU
Tanenbaum, Chapter 3.1, 3.2
Combinational Circuits Project
  • VHDL Basics
  • Flip-flops
  • State Machines
Tandenbaum, Chapter 3.1, 3.2
Combinational Circuits Project II
  • VHDL State Machines
  • Registers
  • Buses
Tanenbaum, Chapter 3.3
Sequential Circuit Design
  • State machines with instructions
  • The pieces of a CPU
  • Computer system: CPU + memory
Tanenbaum, Chapter 4.1
Programmable Circuit Design
  • IAS Computer
  • Memory
  • Memory Hierarchies
Tanenbaum, Chapter 2
Programmable Circuit Design II
  • Cache
  • Cache mapping and replacement
  • Cache designs and write policies
Tanenbaum, Chapter 2
  • Instruction Set Architectures
  • CISC v. RISC
  • Addressing Memory
Tanenbaum, Chapters 2, 5
Memory Design
  • Addressing Modes
  • Register Design
  • Control Flow and Functions
Tanenbaum, Chapter 5
CPU Design
  • Real Instruction Formats
  • Assembly Language
  • Two-pass Assembler
Tanenbaum, Chapter 7
Assembler Project
  • Pipeline architectures
  • Superscalar architectures
  • Branch Prediction
Tanenbaum, Chapter 4.4, 4.5
Final Project
  • Paging
  • Segmentation
  • Threading
Tanenbaum, Chapter 6
  • SIMD Architectures / GPUs
  • Multi-threading chips
  • Symmetric Multi-processor architectures
Tanenbaum, Chapter 8