Syllabus
(To be updated January 2016)
Fifth Edition, Elsevier (2013), ISBN: 978-0-12-407726-3.
The 5th edition of Patterson & Hennessy includes significant changes from the third and fourth editions, including new material on ARM (mobile computing) devices, x86 (cloud computing architectures), and optimization.
The CD-ROM that came with the earlier editions of the textbook contained
additional appendices,
some of which is required reading for the course.
This material is now available online at
http://booksite.elsevier.com/9780124077263/appendices.php.
- 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.
Please contact the instructor to be sure.
- Students are expected to know and understand
the fundamentals of operating systems,
gates, symbolic logic, assembly language,
and basic computer architecture.
- 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) - A Mac MIPS simulater can be found at http://sourceforge.net/projects/spimsimulator/i.
- 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.
A Mac MIPS simulator can be found at
"http://sourceforge.net/projects/spimsimulator/".
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 Canvas calendar for deadlines and due dates as well as Canvas discussion board for announcements.
The course schedule follows the normal CSU semester schedule. This is not a self-paced course.
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 Canvas. To access Canvas, students must have a CSU electronicID (eID). When an assignment is to be submitted via Canvas, 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 (15%)
- discussion assignments (12%)
- Online quizzes (About 15%)
- Two mid-term exams (15% each)
- a final exam (25%)
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.