Syllabus
(Updated 12 January 2013)
There are textbook slides available -- some with audio, but there are no video lectures.
However, it is not a self-paced course. Students need to interact with each other in a timely fashion.
baritra@cs.colostate.edu
Revised Printing,
Fourth edition,
Elsevier (2012),
ISBN: 978-0-12-374750-1.
(The outside cover is dark green
and yellow, not
blue.)
The Revised Printing of the 4th edition of Patterson & Hennessy includes significant changes from the third editions, such as new material on multicore processing. The chapters have been rearranged, and the material in these chapters has changed considerably, especially the exercises. If you do not get this latest edition, I fear you will lose a great deal of information related to the course.
The CD-ROM that comes with the textbook contains additional appendices, some of which are required reading for the course.
- Robert L. Britton,
MIPS Assembly Language Programming,
Pearson, Prentice-Hall (2004),
ISBN-10: 0131420445 and ISBN-13: 9780131420441.
Note: You may be able to find a used edition of this text from Amazon.com or a similar source. -
MIPS Assembly language Programming: CS50 Discussion and
Project Book by Daniel J. Ellard, Harvard University.
- MIPS Quick Tutorial
- MIPS Assembly Language Programmer's Guide
- You may be able to find a similar text to use instead.
Most junior/senior undergraduate courses in Operating Systems and/or Computer Organization would fulfill this requirement. Please contact the instructor to be sure.
- Students are expected to know and understand
the fundamentals of operating systems
as taught in an undergraduate course
using a text such as the first half
of Operating System Concepts
by Silberschatz, Galvin and Gagne.
- Topics understood should include design and implementation of operating
systems, machine organization, and file systems.
- Familiarity with gates, symbolic logic, assembly language,
and basic computer architecture would be helpful.
- Both the CS370 and CS451 courses at CSU fulfill these requirements.
CSU's CS270, Computer Organization, course contains basic background material as well. - Consult the instructor if you are unsure of your background.
- Comprehend the basic concepts on which the stored-program computer is built;
- Perceive the structure, design, and operation of the computer;
- Understand the computer representation of integers and floating-point numbers, as well as algorithms for computer arithmetic;
- Create, debug, and execute assembly programs, gaining an understanding of the relationship between assembly code and the source code in a high level language;
- Differentiate between the different types of parallel architectures;
- Recognize some of the drawbacks, limitations, advantages, and disadvantages of the different computer architectures.
- Weeks 1 and 2: Review and Introductory Material
- Preface: How to use the text
- Appendix C (on CD-ROM): The Basics of Logic Design
- Gates and circuits
- Boolean algebra and truth tables
- Combinational logic
- Sequential logic
- Finite state machines
- Appendix B: Introduction: Assemblers, Linkers, and the
SPIM simulator
- Assemblers, linkers, loaders
- The MIPS assembly language
(For more information, refer to text by Britton -- or similar text) - The SPIM simulator for running MIPS programs
(Version 7.4 currently installed on Computer Science Linux boxes)
- Chapter 1: Introduction: Computer Abstractions and Technology
- What's going on below?
- Computer Performance
- Benchmarks; Metrics
- Some historical comments
- Week 3: Chapter 2: Instructions -- Language of the Computer
(For more information, refer to text by Britton -- or similar text)- Operations; Operands
- Bits, bytes, words
- Signed and unsigned numbers
- Numbers and number bases; Conversions
- Instruction formats for MIPS
- Addressing Modes
- Synchronization
- Decision-making
- Procedure/function calls; Stack
- Arrays; Pointers
(Note: this information is used throughout the course)
- Weeks 4 and 5: Chapter 3: Arithmetic for Computers
- Special purpose codes
- Binary arithmetic and hardware
- Computer arithmetic
- Multiplication and division
- Floating-point numbers
- Weeks 6 through 9: Chapter 4: The Processor
- Logic design conventions
- Structure; Datapaths
- Control unit
- A simple implementation
- Pipelining and a Pipelined implementation
- Pipelined Datapaths
- Data and Control Hazards; Forwarding; Stalls
- Exceptions
- Comparison of different implementations
- Parallelism
- Weeks 10 through 12: Chapter 5:
Large and Fast: Exploiting Memory Hierarchy
- Caches; Measuring performance
- Virtual memory
- Common framework for memory hierarchies
- Virtual machines
- A finite state machine used for cache control
- Parallelism with caches: cache coherence
- Cache control
- Weeks 13 and 14: Chapter 6:
Storage and Other I/O Topics
- Dependability, Reliability, Availability
- Disk and Flash Storage
- Connecting processors with memory and I/O devices
- Interfacing I/O devices with processors, memory, and the operating system
- I/O Performance
- Design of an I/O system
- Redundant arrays of inexpensive disks: RAID
- Networks
- Weeks 15: Chapter 7:
Multicores, Multiprocessors, and Clusters
(Covered briefly, if at all)- Problem: parallel processing programs
- Shared-memory multiprocessors
- Clusters and other message-passing multiprocessors
- Hardware multithreading
- Categories: SISD, MIMD, SIMD, SPMD, Vector
- Multiprocessor networks
- Multiprocessing performance and benchmarks
- Weeks 15-16: Final Exam
Online quizzes are only accessible via the RamCT course page.
All assignments must be submitted electronically through
the RamCT course page.
The RamCT portion of this course is password-protected
and requires the student to have a
CSU electronic ID (eID)
and password.
Most programming assignments need to be coded in MIPS assembly language, and then assembled and tested with the SPIM simulator, available for downloading at www.cs.wisc.edu/~larus/spim.html. It is also installed on the CS department Linux lab machines, (An older, precompiled version of SPIM for OS X can be found here.) Please let us know if you have a link to a more recent version for Mac OS X.
Programming assignments should also be tested via ssh on any of the Computer Science lab Linux machines, for which students are assigned accounts. The instructor or graduate teaching assistant runs your program on these machines to determine your grade. Some assignments may require you to run tests on the Computer Science machines; so be sure that your remote access works early in the semester.
Other work may be done on any computing equipment to which you have access.
RamCT can be used with current browsers on most machines, anywhere. Firefox is preferred to Internet Explorer, but there have been some problems with Firefox with online quizzes. Some firewalls have been known to interfere with RamCT access. Assignments should be submitted on the class RamCT Assignments page. There are also required quizzes accessible only through RamCT. Again, to access RamCT, students must have an account on the CSU network and have a CSU electronic ID (eID) and password.
Students are expected to have adequate computing resources in order to perform the following tasks:
- To easily access the RamCT page regularly via a browser
(Caution: some firewalls may cause problems); - To create, edit, compile, debug, and execute MIPS assembly language programs (taught as part of the course);
- To access, physically or remotely, and execute programs on, the CSU Computer Department Linux machines.
This course is completely Web-based. All interaction between students and the instructor is via the Internet in an asynchronous manner (meaning that the class members do not all need to be logged in at the same time).
However, there are assignments due every week:
- Reading Assignments:
- from the textbook
- from the course notes in RamCT
- Quizzes:
- completed within RamCT
- graded, but also useful for self-assessment
- as drills, may be taken more than once with highest grade recorded
- automatically recorded grades
- Class Discussions:
- as asynchronous interaction with other class members
- via the class discussion/bulletin board
- required approximately once a week and sometimes more often
- have the number of postings per student per topic automatically recorded
- Programming and Homework Assignments:
- approximately one per week
- submitted electronically
- MIPS assembly programs must assemble and execute on the SPIM simulator on the CS Linux lab machines
The student is responsible for checking the RamCT calendar for deadlines and due dates as well as the RamCT discussion board for announcements.
The course schedule follows the normal CSU semester schedule. This is not a self-paced course.
All work must be neat and legible. Illegible work receives no credit. The instructor reserves the right to define what is or is not legible or easily read.
Essays and answers to discussion questions and other assignments must be coherent, succinct, readable, and grammatically correct English prose. Part of the grading for such questions reflects this.
Essays and answers to essay questions on examinations need only list the relevant points. The student does not have time to write more than one draft, and so the instructor must be lenient on grammar, spelling, and style.
All the work for the course must be submitted electronically, using RamCT. To access RamCT, students must have a CSU electronicID (eID). When an assignment is to be submitted via RamCT, it will not be accepted in any other form.
The preferred format of submitted files is as PDF files. When figures or diagrams are required, they may be included within PDF files or saved as stand-alone PDF files. If you want to use some other file format, please ask the instructor/GTA by email at cs470dl@cs.colostate.edu, before submitting your file.
DO NOT E-MAIL assignment solutions to either the instructor or the GTA. If you are having problems submitting an assignment, please send email to both of us, at cs470dl@cs.colostate.edu, with a message about the problems you are having submitting the assignment.
See the Comments on Homework and Programming Assignments. These comments refer only to homework and lab/programming assignments. They do not refer to discussion assignments, online quizzes, or examinations.
All students take their exams online. For more information on examinations, see Test and Examinations.
- programming/homework assignments (38%)
- discussion assignments (12%)
- RamCT online quizzes (12%)
- a mid-term exam (18%)
- a final exam (20%)
Final letter grades are based on the relative distribution of total scores.
With regrades and possible extra credit on some assignments, most
total scores (final averages) are 90 or above, meaning
a final grade of 94 could earn a letter grade of only B+.
For instance, one past semester
of this course was graded as below:
| 93 and up | A | 84 up to 91 | B | 73 up to 82 | C |
| 92 up to 93 | A- | 83 up to 84 | B- | 62 up to 73 | D |
| 91 up to 92 | B+ | 82 up to 83 | C+ | below 62 | F |
The grades for this semester could go either up or down from this scale, depending on the distribution of the grades earned by this semester's students.
Policies on cheating, plagiarism, incomplete grades, attendance, discrimination, sexual harassment, and student grievances are described in the Student Information Guide. You should also be aware of the Computer Science department Code of Conduct, in addition to the CSU Honor Pledge. All other matters follow the policies set in the current Colorado State University General Catalog. Students are responsible for all the information in these documents.
Part of the on-line student's grade is based on his contributions to course topic discussions in the RamCT discussion groups. These asynchronous discussions may be richer and more detailed than for an in-class discussion, as the students have time to consider and prepare their opinions and responses, including references. Furthermore, all students are required to participate in every discussion.
The on-line students may ask questions at any time via email or the discussion groups, whenever they are having trouble. The instructor and/or teaching assistant is likely to check his email and the discussion group messages more often than office hours are held. If posted on the discussion board, other students may respond to these questions -- provided they do not post any assembly code. In fact, since students often run into similar problems, they are probably more familiar with the answers to such questions.