CS-343 Syllabus

This syllabus gives the intended structure and requirements for CS-343, but the actual topics and amount of time spent on each topic varies from semester to semester. The course schedule for this semester, including exam dates and assignments to be handed in, is on this semester’s schedule page.

Course Objectives

“Computer Architecture” covers an extremely broad range of topics that relate to how computers are designed and implemented—far more topics than could reasonably be covered in a one-semester undergraduate course in a computer science department. The computer science major at Queens College requires two courses (CS-240 and CS-343) that, together, cover a basic set of architecture–related topics that are essential for all computer science majors, and which provide a background for further studies in the area for those who are interested. But computer architecture is such a large and dynamic field that many topics do not get the attention we would give them in a more–perfect world.

The topics for this course (listed below) build on programming, assembly language, boolean algebra, and basic logic design skills that you developed in CS-240 and other courses in the major. Although you do not need to have worked with the particular assembly language for the processor studied in CS-240 (MIPS), you must have an understanding of assembly language programming for some processor before undertaking this course.

Students who complete this course successfully will be able to:

Instructor

The instructor for the course is Dr. Christopher Vickery. See Dr. Vickery’s Contact Information and Office Hours for that information.

Course Structure and Assessment

There are two 75 minute class meetings per week. Attendance will not be taken (except at the beginning of the semester to verify your registration for the course), but students who often miss class will probably fail the course. The reading assignments for the course are listed below, and will be broken down further in the course schedule page for the semester.

Assignments

There will be up to ten homework assignments, each of which will be given a grade from the set {ok, good, not ok, late ok, inc, late not ok}. A grade of "ok" gives full credit for the assignment (2 points); "good" gives extra credit for the assignment (3 points) and any of the other grades gives half credit for the assignment (1 point), except "late not ok," which counts half a point. The assignments will count 10% of your course grade.

Some of the homework assignments involve using computer software to design logic circuits. These logic circuits are then downloaded to logic design kits for implementation and testing using FPGA (field programmable logic array) technology. The department provides computers, software, and logic kits for doing these assignments, but you can get a copy of the software (Windows or Linux hosted) to run on your own computer if you prefer. There are normally enough logic kits available to allow students who do not want to work on-campus to borrow one for use off-campus. Although these assignments generally require more time and effort than other assignments in the course, they are graded the same way and count the same as the the other assignments for the course.

It is all right to collaborate on homework assignments, and there is a course discussion board for exchanging questions and answers about the assignments with other students in the course. The purpose of the assignments is to help you master the material in the course, not to assess your mastery of the material. Having said that, each student must submit his or her own solutions to the homework assignments, even if it is substantially similar to others’.

Exams

There will be three exams: two midterms and a final, each of which will count 30% of your course grade. There is an archive of past exams for the course to let you see my “exam style,” but should not in any way be construed as study-guides for this semester’s exams. Exam questions are a mix of short answer, multiple-choice, and diagram-drawing questions. Difficult exams are normally curved to bring the class average up to something in the 75-80 range. (Note: when this happens, class rank on an exam is important.) However, exam scores are never curved downward.

Exams are not cumulative except in the sense that you need to remember material from earlier in the course in order to understand some of the questions on later exams.

Grades

Exam and assignment grades become permanent one week after they have been posted, even if there has been a scoring error. Be sure to check that your exam was scored correctly and that the correct grade has been recorded (using the “Check My Grades” form on the course schedule page) as soon as exams are returned.

The College has a standard policy for converting course averages into letter grades, which I follow mechanically, with two exceptions: (a) I calculate course averages to one decimal place and round up instead of working with integers. So, for example, the college policy assigns a grade of B+ to a course average between 87 and 90; I interpret that to mean that any score between 86.5 and 89.5 is a B+. (b) Because a grade of C- (or less) cannot be counted towards the computer science major, I let my personal judgment (based primarily on class attendance and participation) influence how to handle course grades that are just below 71.5. But I do not automatically raise C– grades to C.

Textbook and Reading Material

The textbook for the course is Patterson, D. and Hennessy, J.; Computer Organization and Design, Fourth Edition, Elsevier, 2009. ISBN 978-0-12-374493-7.

This edition of the textbook (not any of the earlier ones) is required for this course. Unless otherwise indicated, all reading assignment listed below come from it. At the present time, I know of no way to obtain the book other than to purchase a new or used copy; I have not found any source that will rent copies, for example. (Let me know if you find one.) Some of the material in the textbook, Appendix C in particular, is available only on the CD that comes with the book, so be sure the copy you get has the CD. (See me if this is a problem.)

Updated information: There are now a number of web sites that provide textbook rentals for this text, with one-semester rentals running less than half the cost of buying the book new. One site that acts as a clearinghouse for rentals is bigwords.com. But I have had no direct experience with them.

I know that textbook costs are a burden, but I strongly recommend getting a copy of the book; people who try to get by without it have a very difficult time with the course. Don’t jeopardize the tuition you paid for the course by avoiding the cost of the book. And to be sure you get full value out of your investment in it, be sure you read the assignments multiple times!

Topics

Download CS-343 Course Outline (PDF) for a full outline of the topics to be covered in the course. The table below lists the class meetings planned for the topics, and the associated reading material. You should plan on going through the reading assignments more than once, and you should complete your first pass before the material is covered in class.

Classes Topic Reading Assignment
1 Measurement Measurement and Units of Measure (PDF)
2—4 Combinational Logic Sections C-1 through C-4; Section C-12
5—7 MIPS ALU Design Sections C-5 through C-6
8—9 Clocks and Finite State Automata Sections C-7, C-10, and C-11
10 First Exam
11—14 Storage Elements and Register File Design Section C-8
15—16 Instruction Set Architectures and the MIPS ISA Chapter 2
17—19 Single-cycle MIPS Datapath Design Sections 4.1 through 4.4
20 Second Exam
21—22 Pipelined Designs Sections 4.5 through 4.10
23—24 Multicore and Multiprocessor Architectures Sections 7.1 through 7.7
25 Memory Hierarchies Sections C-9 and 5.1
26—27 Cache Principles and Implementations Sections 5.2 through 5.4
27—28 Storage and I/O Sections 6.1 through 6.9
Finals Final Exam