Syllabus

(Updated 12 January 2013)

When & Where: This course is a completely Web-based course. It is online only.
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.


Instructor: Carolyn J. C. Schauble
           

GTA: Aritra Bandyopadhyay
          baritra@cs.colostate.edu


Textbooks:
Required: David A. Patterson & John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface,

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.

Highly suggested: A reference on the MIPS assembly language. Any of the following may be acceptable:


Prerequisites: The official prerequisite is CS 370: System Architecture and Software
Grade of C or better   (Strictly enforced)

CS 451: Operating Systems is acceptable as a replacement for CS 370.

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.


Objectives: Upon completion of this course, students will be able to:

  • 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.


Topic Outline:   (subject to change)

  1. Weeks 1 and 2: Review and Introductory Material
    1. Preface: How to use the text
    2. Appendix C (on CD-ROM): The Basics of Logic Design
      1. Gates and circuits
      2. Boolean algebra and truth tables
      3. Combinational logic
      4. Sequential logic
      5. Finite state machines
    3. Appendix B: Introduction: Assemblers, Linkers, and the SPIM simulator
      1. Assemblers, linkers, loaders
      2. The MIPS assembly language
            (For more information, refer to text by Britton -- or similar text)
      3. The SPIM simulator for running MIPS programs
            (Version 7.4 currently installed on Computer Science Linux boxes)
    4. Chapter 1: Introduction: Computer Abstractions and Technology
      1. What's going on below?
      2. Computer Performance
      3. Benchmarks; Metrics
      4. Some historical comments

  2. Week 3: Chapter 2: Instructions -- Language of the Computer
        (For more information, refer to text by Britton -- or similar text)
    1. Operations; Operands
    2. Bits, bytes, words
    3. Signed and unsigned numbers
    4. Numbers and number bases; Conversions
    5. Instruction formats for MIPS
    6. Addressing Modes
    7. Synchronization
    8. Decision-making
    9. Procedure/function calls; Stack
    10. Arrays; Pointers
          (Note: this information is used throughout the course)

  3. Weeks 4 and 5: Chapter 3: Arithmetic for Computers
    1. Special purpose codes
    2. Binary arithmetic and hardware
    3. Computer arithmetic
    4. Multiplication and division
    5. Floating-point numbers

  4. Weeks 6 through 9: Chapter 4: The Processor
    1. Logic design conventions
    2. Structure; Datapaths
    3. Control unit
    4. A simple implementation
    5. Pipelining and a Pipelined implementation
    6. Pipelined Datapaths
    7. Data and Control Hazards; Forwarding; Stalls
    8. Exceptions
    9. Comparison of different implementations
    10. Parallelism

  5. Weeks 10 through 12: Chapter 5: Large and Fast: Exploiting Memory Hierarchy
    1. Caches; Measuring performance
    2. Virtual memory
    3. Common framework for memory hierarchies
    4. Virtual machines
    5. A finite state machine used for cache control
    6. Parallelism with caches: cache coherence
    7. Cache control

  6. Weeks 13 and 14: Chapter 6: Storage and Other I/O Topics
    1. Dependability, Reliability, Availability
    2. Disk and Flash Storage
    3. Connecting processors with memory and I/O devices
    4. Interfacing I/O devices with processors, memory, and the operating system
    5. I/O Performance
    6. Design of an I/O system
    7. Redundant arrays of inexpensive disks: RAID
    8. Networks

  7. Weeks 15: Chapter 7: Multicores, Multiprocessors, and Clusters
                        (Covered briefly, if at all)
    1. Problem: parallel processing programs
    2. Shared-memory multiprocessors
    3. Clusters and other message-passing multiprocessors
    4. Hardware multithreading
    5. Categories: SISD, MIMD, SIMD, SPMD, Vector
    6. Multiprocessor networks
    7. Multiprocessing performance and benchmarks

  8. Weeks 15-16: Final Exam


Course Resources:
A number of webpages related to the textbook are available at http://www.mkp.com/cod2e.htm.

CS 470 DL RamCT Page (BlackboardLearn): All other course material, as an online set of web pages, including course announcements, discussions, grades, lecture notes, and assignments, can be found via the RamCT page for the course: CS-470-810-2013SP Computer Architecture.

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.

Course Files: Online copies of handouts, assignments, and other documents for the course are available through the course RamCT page. Current announcements and discussions are accessible through this page as well. The student should access the RamCT page and discussion board frequently, several times a week.


Computing Resources:

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.


Minimal Equipment Requirements (Hardware and Software):

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.


Class Preparation and Attendance:

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.


Assignments:

Written Work: All homework and lab/programming assignments must be submitted electronically. Diagrams or work involving a substantial amount of mathematical notation may be done by hand and then scanned for electronic submission. Computer-aided drawing tools should be used when appropriate.

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.

Late Work / Regrades:

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.


Tests and Examinations:

All students take their exams online. For more information on examinations, see Test and Examinations.


Grading  : (Subject to change): A student's grade is based on
  • 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.


Other Policies:

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.


Comparison to Traditional Delivery

Student Experience: In the on-line version of this course, the student has the course text, along with on-line course notes giving examples and explanations related to the course material. Automatically-graded on-line quizzes provide instant feedback on student comprehension.

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.

Content Delivery: The course is delivered on-line using RamCT, and it follows the 16-week semester schedule during the regular school year.

Interaction: Students interact with the instructor via email and the discussion groups. Students interact with each other using the discussion groups; they may also use email. Note: if you are having trouble coding or debugging an assignment, do not post or email code. You should be able to formulate a question (or response) without needing to use lines of code. However, it is certainly appropriate to remind each other of certain instruction opcodes and their properties, especially as some students have never programmed in assembly language before.

Student Assessment: The student may take on-line examinations or written examinations. In either case, the examinations must be proctored. In order to access an on-line examination, the student needs to present his individual password. All examinations are proctored according to the security standards set by the Division of Educational Outreach.

Time Commitment: The on-line course covers the same material that is covered in the on-campus version of the course. The assignments are similar. The structured discussions are more important for distance students than for students on campus and are a required part of the course.

Equipment: Students are expected to have adequate computing resources to easily access the course RamCT page regularly and to create, edit, compile, debug, and execute a variety of programs for assignments. This can be via a personal computer and modem, or a terminal connected to a local area network that is connected to the Internet. The course programs can be developed and executed on the CS department's lab computers, but the student must have a means of accessing these computers, probably via ssh (secure shell) over the Internet.