COMP 230: Computer Architecture and Organization, Fall 2017

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class.



This course aims to convince students that no magic is required to make computers work by teaching the design and operation of digital computers. By learning about the organization of computers, including processor datapath, processor control, memory systems, and I/O, students will develop an intuition about why hardware is the way it is and how software interacts with hardware. Through detailed implementation experience students will learn to make careful tradeoffs between functional, performance and cost goals when selecting and interconnecting hardware components.


Possible topics include:


The course textbook will be:

Other sources will be posted on this webpage as needed.




The course workload is as follows:

Category Number of Assignments
Homework 7–8
Exams 3

Some homework assignments will be written assignments only; some will include programming components. Exams will be open book and notes unless otherwise specified. Each exam focuses primarily, but not necessarily exclusively, on material covered since the previous exam. The final exam will include a small number of cumulative questions, and I reserve the right to include at most two cumulative questions on each of the other exams.


The weekly workload for this course will vary by student but on average should be about 11 hours per week. The follow tables provides a rough estimate of the distribution of this time over different course components for a 16 week semester.

Category Total Time Time/week (hours)
Lectures   3
Homework 80 5
Exam Study 16 1
Reading+Unstructured Study   2


Your final grade is based on a weighted average of particular assignment categories. You can estimate your current grade based on your scores and these weights. You may always visit the instructor outside of class to discuss your current standing.

Category Weight
Homework 35%
Exam 1 15%
Exam 2 15%
Final Exam 25%
Participation 10%

This courses uses a standard grading scale. Assignments and final grades will not be curved except in rare cases when its deemed necessary by the instructor. Percentage grades translate to letter grades as follows:

Score Grade
94–100 A
90–93 A-
88–89 B+
82–87 B
80–81 B-
78–79 C+
72–77 C
70–71 C-
68–69 D+
62–67 D
60–61 D-
0–59 F

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge.


The following tentative calendar should give you a feel for how work is distributed throughout the semester. Assignments and events are listed in the week they are due or when they occur. This calendar is subject to change based on the circumstances of the course.

HW 0

Date Topic Assignment
Tue 08/22 Introduction and Components of a Computer (slides) Read/review Ch. 1
Wed 08/23 Measuring Performance (slides)  
Fri 08/25 (slides) HW 1 out, Read Appendix B.1-B.3
Mon 08/28 Basic Logic Design (slides)  
Tue 08/29 Combinational Logic (slides)  
Wed 08/30 (slides)  
Fri 09/01 ALU (slides) Read B.5
Mon 09/04 (slides) HW 1 due
Tue 09/05 Carry Ahead Addition Read B.6
Wed 09/06 Carry Ahead Addition, Clocks (slides) HW 2 out, Read B.7
Fri 09/08 Memory (slides) Read B.8-9
Mon 09/11 MIPS Instructions (slides) Read 2.1-2.3
Tue 09/12 (slides)  
Wed 09/13 (slides)  
Fri 09/15 Logic and Conditional Instructions (slides) HW 2 due, HW 3 out, read 2.4-2.7
Mon 09/18 Procedures (slides) Read 2.8
Tue 09/19 Leaf Procedures (slides)  
Wed 09/20 Non-leaf Procedures (slides)  
Fri 09/22 More Procedures, Arrays (slides)  
Mon 09/25 Character Data (slides) HW 3 due, Practice Exam 1, Solutions
Tue 09/26 Addressing Modes (slides)  
Wed 09/27 Exam 1 Review  
Fri 09/29 Exam 1 Exam 1 Solutions
Mon 10/02 Translating and Starting Programs (slides)  
Tue 10/03 Pointers versus Arrays (slides)  
Wed 10/04 Programming with SPIM Read A.9, Example source
Fri 10/06 Real x86 Assembly: gdb and objdump HW 4 out
Mon 10/09 Review: Integer Arithmetic (slides) Read 3.1-3.2
Tue 10/10 Multiplication (slides) Read 3.3
(10/11–10/15) (Fall Break) (Fall Break)
Mon 10/16 Multiplication and Division (slides) Read 3.4
Tue 10/17 Division, Floating Point Representation (slides)  
Wed 10/18 Floating Point (slides) Read 3.5
Fri 10/20 In-class exercise HW 4 due, HW 5 out
Mon 10/23 Floating Point Arithmetic (slides)  
Tue 10/24 Processor Overview (slides) Read 4.1
Wed 10/25 Building a Datapath (slides) Read 4.2-4.3
Fri 10/27 Simple Processor Implementation (slides) Read 4.4
Mon 10/30 Control for Jumps, Pipelining Overview (slides) Read 4.5
Tue 10/31 Pipeline Implementation (slides) Read 4.6
Wed 11/01 (slides)  
Fri 11/03 ILP Overview: Static Multiple-Issue (slides) HW 5 due, HW 6 out
Mon 11/06 ILP: Static Multiple-Issue (slides) Read 4.10, Practice Exam 2, Solutions
Tue 11/07 ILP: Superscalar Processors (slides) Read 4.14
Wed 11/08 Finish Chapter 4 (slides)  
Fri 11/10 Exam 2 Review Exam 2 Solutions
Mon 11/13 Exam 2  
Tue 11/14 Memory Hierarchy (slides) Read 5.1-5.2
Wed 11/15 Basics of Caches (slides) Read 5.3
Fri 11/17 Cache Performance (slides) Read 5.4
Mon 11/20 Associativity (slides) HW 6 due, HW 7 out
Tue 11/21 Dependable Memory Hierarchy (slides) Read 5.5
(11/22–11/26) (Thanksgiving Break) (Thanksgiving Break)
Mon 11/27 Virtual Machines and Virtual Memory (slides) Read 5.6-5.7
Tue 11/28 Common Framework for the Memory Hierarchy (slides) Read 5.8
Wed 11/29 Finish Chapter 5 (slides) Read 5.13, 5.15-5.16
Fri 12/01 Parallel Programs (slides) Read 6.1-6.3
Mon 12/04 Multithreading, Multicore, GPU (slides) Read 6.4-6.5, Practice Exam 3, Solutions
Tue 12/05 Clusters and Beyond (slides) Read 6.6-6.13 (optional)
Wed 12/06 Review HW 7 (first half) due
Mon 12/11   HW 7 (second half) due
Tue 12/12 3:00 PM Final Exam Final Exam Solutions

Monmouth College Services