CS 250: Computer Architecture

MWF 08:30-09:20


Chris Clifton

Email: clifton_nospam@cs_nojunk.purdue.edu

Course Topics

Concepts of computer system organization and programming; instruction and data representations; basics of digital logic design; instruction set decoding and addressing modes; fundamentals of assembly language; the organization and the operation of the central processing unit, memory system, and I/O interfaces; I/O structures; direct memory access; interrupts; bus protocols.

Why should you take this course? A lot of real-world use of computer science involves embedded systems - and knowing the hardware is important.

Teaching Assistants

Hicham Elmongui
Office: LWSN 2149
Office hours: Monday 15:00-16:00
Phone: 49-69393
Email: elmongui@cs.purdue.edu

Despoina Perouli
Office: LWSN B132
Office hours: Thursday 12:30-13:30, 16:30-17:30, or by appointment
Phone: 49-69444
Email: depe@cs.purdue.edu

David Stites (section-specific questions only)
Email: dstites@purdue.edu

Course Methodology

The course will be taught through lectures, with class participation expected and encouraged. There will be frequent reading assignments to supplement the lectures, from an excellent and easily readable text Essentials of Computer Architecture by our own Professor Comer. The workload will include written assignments, as well as both hardware and software labs / projects.

WebCT Vista will be used for distributing course material and grades. We may also start using it for other communications, but for now you should check the course newsgroup purdue.class.cs250. If you have questions, you should feel free to post them to the newsgroup. That way the rest of the class (including students who may not have figured out what they don't know) will have the benefit of your insight and the answer. If you have something you don't want made public, send it to cs250@mentor.ics.purdue.edu. Critical announcements will be made via the course mailing list.


Labs will be held in Lawson B131, which has both equipment and facilities. You will need to purchase a hardware kit in the Union (Boiler CopyMaker - actually a price card saying you have paid, then the kit will be provided in lab.) You do need to have it by your lab the week of January 16, or you will be unable to complete the lab. For $17.05 you get:

If you have this equipment from another course, you don't need to purchase it from us - we'll save your kit for next semester.


This course requires an understanding of basic theoretical concepts underlying computer science, as well as programming experience. Foundations of Computer Science and Programming in C provide sufficient preparation.


Douglas E. Comer, Essentials of Computer Architecture Pearson / Prentice Hall, 2005.


Evaluation will be based on a mix of assignment, quiz, lab, and project scores. The exact formula will be available in WebCT. As to how these scores map to letter grades, see my grading standards. I do not grade on a strict pre-defined numeric cutoff, or on a curve, but based on how scores reflect understanding of the material and ability to apply it. Because of the inherent subjectivity in exams and assignments (e.g., I may develop harder exam questions one semester than another), it is difficult to say in advance what specific score is required to demonstrate a certain level of understanding.

Six written assignments (equally weighted, lowest 2 scores dropped)10%
Labs (equally weighted, lowest score dropped)33%
Midterm Exam16%
Project 15%
Project 212%
Final Exam22%
Evaluation of instructors based on in-class/lab contributions, discussions, and overall performance2%

I will provide feedback before drop date, and again before the final examination, giving an estimate of the mapping from score to date to letter grade. I will also make a point of individually contacting any students that I feel are in danger of getting lower than a C.

Exams will be open note / open book. To avoid a disparity between resources available to different students, electronic aids are not permitted.

Late assignments will be penalized 10% per day (24 hour period). This penalty will apply except in case of documented emergency (e.g., medical emergency), or by prior arrangement if doing the work in advance is impossible due to fault of the instructor (e.g., you have a travel commitment and ask to start a project early, but needed lab equipment hasn't arrived.)

Due to the difficulty in making up labs, late lab work will only be allowed in cases of verified emergencies. However, the lowest lab score will be dropped, so missing one won't kill you (as long as you do well on the rest of them.)

Policy on Intellectual Honesty

Please read the departmental academic integrity policy above. This will be followed unless I provide written documentation of exceptions. In particular, I encourage interaction: you should feel free to discuss the course with other students. However, unless otherwise noted work turned in should reflect your own efforts and knowledge.

For example, if you are discussing an assignment with another student, and you feel you know the material better than the other student, think of yourself as a teacher. Your goal is to make sure that after your discussion, the student is capable of doing similar work independently; their turned-in assignment should reflect this capability. If you need to work through details, try to work on a related, but different, problem.

If you feel you may have overstepped these bounds, or are not sure, please come talk to me and/or note on what you turn in that it represents collaborative effort (the same holds for information obtained from other sources that you provided substantial portions of the solution.) If I feel you have gone beyond acceptable limits, I will let you know, and if necessary we will find an alternative way of ensuring you know the material. Help you receive in such a borderline case, if cited and not part of a pattern of egregious behavior, is not in my opinion academic dishonesty, and will at most result in a requirement that you demonstrate your knowledge in some alternate manner.

Course Outline (numbers correspond to week):

  1. Course overview, turning Transistors into Logic. Sequential Circuits. Reading: Essentials of Computer Architecture Chapters 1, 2.
  2. Digital Logic: Feedback/Flip-Flops. Reading: Essentials of Computer Architecture Chapter 2
    Assignment 1 (Due 26 January.)
  3. Data Representation. Processor architecture/organization. Reading: Essentials of Computer Architecture Chapters 3, 4.1-4.10.
    Optional (for those who really want to know about floating point): David Goldberg, What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Assignment 2 (Due 2 February.)
  4. January 29: Guest Lecture by Professor Doug Comer.
    Processor and Computer Organization. Instruction sets and pipelining. Reading: Essentials of Computer Architecture Chapters 4.11-4.15, 5.
    Assignment 3 (Due 9 February.)
  5. More on instruction sets. Operands and addressing. Reading: Essentials of Computer Architecture Chapters 6, 7.1-7.8. More on CPUs: Protection modes, microcode, processor modes. Reading: Essentials of Computer Architecture Chapter 7.9-7.24, 8.1-8.5.
  6. Assembly language examples/discussion. Reading: Essentials of Computer Architecture Chapter 8.6-8.22.
  7. Memory architectures and technologies. Reading: Essentials of Computer Architecture Chapters 9, 10.1-10.10.
  8. More on memory: Addressing technologies. Reading: Essentials of Computer Architecture Chapter 10.11-10.30.
    Midterm Review (PDF). Midterm covers material presented in class and labs through previous week.
    Midterm, March 2 in class. Open book/notes (no electronic aids.) (Exam and solutions.)
  9. Virtual Memory. Reading: Essentials of Computer Architecture Chapter 11.
    Cache Technology. Reading: Essentials of Computer Architecture Chapter 12
  10. Input/Output Concepts, Bus Architectures. Reading: Essentials of Computer Architecture Chapter 13.
    March 21: Guest Lecture: Prof. Zhiyuan Li: Parallelism (including the latest from recent visits to HP and Intel.) Reading: Essentials of Computer Architecture Chapter 17.
    Bus Architectures. Reading: Essentials of Computer Architecture Chapter 14.
    Assignment 4 (Due 30 March.)
  11. Programming with I/O devices. Reading: Essentials of Computer Architecture Chapter 15.
    Interrupts and asynchronous programming. Additional Slides. Reading: Essentials of Computer Architecture Chapter 15. You may also want to read the MIPS architecture documentation, specifically, chapter 5 of the Programmer's Guide Volume III (login using cs250 / cs250).
  12. More on Device Drivers. Reading: Essentials of Computer Architecture Chapter 16.
    April 6: Guest Lecture: Prof. Dongyan Xu.
  13. More on Parallelism. Reading: Essentials of Computer Architecture Chapter 17.
  14. More on pipelining. Reading: Essentials of Computer Architecture Chapter 18.
  15. Question and Answer session, catch-up, review, or topic of your choice. Please email suggestions.
    Course review, prepare for final exam (a draft solutions).
    Assignment 5 Solutions

Assignment and Lab schedule on WebCT.

Final exam (draft solutions), Monday, April 30, 2007, 19:00-21:00, SC 239.

Valid XHTML 1.1