Course Information

Cross Listed CS 4420 Computer Architecture
Instructor Prof. Christina Delimitrou, 332 Rhodes Hall, delimitrou _at_ cornell dot edu
Office Hours: 332 Rhodes Hall, Thursday, 3:00–4:00pm
Admin. Assistant Jennifer Sandora, 314 Rhodes Hall,
Lectures 203 Phillips Hall, Monday and Wednesday, 2:55–4:10pm
Disc. Section 203 Phillips Hall, Friday, 2:30–3:20pm
Graduate TAs Yu Gan, yg397, Office/Lab Hours: 314 Phillips, Mon 7:30-9:30pm
Undergraduate TAs Felipe Fortuna, fb262, Office/Lab Hours: 314 Phillips, Wed 7:30-9:30pm
Brandon Quinlan, bmq4, Office/Lab Hours: 314 Phillips, Fri 7:30-9:30pm
Joo Yeon Chae, jc2464, Office/Lab Hours: 314 Phillips, Tue 7:30-9:30pm
Eli Marks, em755, Office/Lab Hours: 314 Phillips, Thu 7:30-9:30pm
J. L. Hennessy and D. A. Patterson
"Computer Architecture: A Quantitative Approach"
5th edition, Morgan Kaufmann, 2012
Cornell bookstore (new: $90, used: $46), Amazon ($67)
On reserve online as an e-book and in Uris Library as a hard copy
D. M. Harris and S. L. Harris
"Digital Design and Computer Architecture"
2nd edition, Morgan Kaufmann, 2012
Cornell bookstore (new: $90, used: $56), Amazon ($63)
On reserve online as an e-book and in Uris Library as a hard copy
"ECE 4750 Course Packet"
Available at Cornell bookstore ($79) or on reserve in Uris Library
Selected portions will be available electronically
Staff Email ece4750-staff-fall18-l@cornell edu


This course is meant to be a capstone course in computer engineering that draws together concepts from across the ECE curriculum including digital logic design, computer organization, system-level software, and engineering design. The course will prepare students for jobs in the computer engineering industry and can act as a springboard to more advanced material in graduate-level courses. This course can also provide a foundation for students interested in performance programming, compilers, and operating systems; and it can provide system-level context for students interested in emerging technologies and digital circuits. By the end of this course, students should be able to:


This course is targeted towards senior-level undergraduate students, although it is also appropriate for advanced juniors, M.Eng., and first-year Ph.D. students. An introductory course on computing is required (CS 1110 or equivalent). A course in digital logic design and computer organization (ECE 2300 or equivalent) and a course in system-level programming (ECE 3140 or equivalent) are also required. CS 3410 is a suitable replacement for ECE 2300 and ECE 3140 for the purposes of satisfying the prerequisites. Students should feel comfortable working with a hardware description language such as Verilog, SystemVerilog, or VHDL and have a reasonable understanding of digital logic, assembly-level programming, storage systems, basic pipelining, and simple cache design.

M.Eng. and Ph.D. students coming from undergraduate institutions other than Cornell may want to spend additional time reviewing the secondary required textbook, "Digital Design and Computer Architecture, 2nd edition" by D. M. Harris and S. L. Harris (Morgan Kaufmann, 2012), to refresh their understanding of basic concepts. Students who have never used Python before may want to spend additional time reviewing the optional textbook titled "Think Python: How to Think Like a Computer Scientist" by A. B. Downey (Green Tea Press, 2014). Students are not required to use the Verilog hardware description language for the lab assignments. If a student has less experience working with Verilog but still wants to use this language, then they are strongly encouraged to read Chapter 4 in Harris and Harris on digital design with Verilog and/or to review the optional text ``Verilog HDL: A Guide to Digital Design and Synthesis, 2nd edition'' by S. Palnitkar (Prentice Hall, 2003). Students should also plan to attend the optional discussion sections, which will cover the basics of the Python and Verilog hardware modeling frameworks.


The course includes five parts: the first three parts cover the fundamentals of processor, memory, and network design, while the final two parts cover more advanced processor and memory design. In addition, one lecture in the middle of the course and one lecture at the end of the course will present in detail a few example architectures to help illustrate the concepts discussed in class. A tentative list of topics for each part is included below. The exact topics covered in the course are subject to change based on student progress and interest.

Required Materials

There are three materials that students are required to have access to for the course: the primary course textbook, the secondary course textbook, and the course packet. Note that if students are unsure about whether or not they will enroll in the class, they should be able to delay purchasing these items until the second or third week of class without significantly hindering their progress in the course. These materials are on reserve at Uris Library and/or available online to Cornell students.

Optional Materials

There are a few additional books that students may find useful for providing background on Python, Verilog, and SystemVerilog.

Format and Procedures

This course includes a combination of lectures, short in-class quizzes, optional discussion sections, assigned readings, problem sets, laboratory assignments, and exams.

Grading Scheme

Each part or criteria of every assignment is graded on a four-point scale. A score of 4.25 is an A+, 4 roughly corresponds to an A, 3 roughly corresponds to a B, 2 roughly corresponds to a C, and so on. A score of 4.0 usually indicates that the submitted work demonstrates no misunderstanding (there may be small mistakes, but these mistakes do not indicate a misunderstanding) or there may be a very small misunderstanding that is vastly outweighed by the demonstrated understanding. A score of 3.0 usually indicates that the submitted work demonstrates more understanding than misunderstanding. A score of 2.0 usually indicates that the submitted work demonstrates a balanced amount of understanding vs. misunderstanding. A score of 1.0 usually indicates that the submitted work demonstrates more misunderstanding than understanding. A score of 4.25 is reserved for when the submitted work is perfect with absolutely no mistakes or is exceptional in some other way.

Total scores are a weighted average of the scores for each part or criteria. Parts or criteria are usually structured to assess a student's understanding according to four kinds of knowledge: basic recall of previously seen concepts, applying concepts in new situations, qualitatively and quantitatively evaluating design alternatives, and creatively implementing new designs; these are ordered in increasing sophistication and thus increasing weight. In almost all cases, scores are awarded for demonstrating understanding and not for effort. Detailed rubrics for all quizzes, problem sets, and exams are provided once the assignment has been graded to enable students to easily see how the score was awarded. For lab assignments, a detailed Lab Assignment Assessment Rubric is available on the public course webpage.

Note that only a subset of the problems on each problem set may be graded for a score. Which problems will be graded for a score will not be announced ahead of time; students are expected to complete all problems. Those problems not graded for a score will still be graded for effort, and incomplete submissions will be penalized. As mentioned above, solutions to all problems are released soon after the problem set is due; this will allow students to compare their submission to the correct solutions for formative self-assessment. Students are always encouraged to review their solutions with the instructor or TAs during office hours.

The final grade is calculated using a weighted average of all assignments. Each problem set and lab assignment is weighted equally. All quiz grades are averaged to form a single total. Students can drop their lowest quiz score. At the instructor's discretion, additional quiz scores may be dropped depending on the total number quizzes in the semester and pseudo-quiz grades may be used to encourage participation, completing student evaluations, etc. The weighting for the various assignments is shown below.

Quizzes 5% (students can drop lowest score)
Problem Sets 15% (all problem sets weighted equally)
Lab Assignments 30% (all lab assignments weighted equally)
Midterm 20%
Final 30%

Note that the midterm and final exam account for half of a student's final grade. The exams in this course are very challenging. Successful students begin preparing for the exams far in advance by carefully reviewing the assigned readings, independently developing study problems, and participating in critical study groups.

To pass the course, a student must at a bare minimum satisfy the following requirements: (1) submit two out of the four problem sets; (2) submit three out of the five lab assignments; (3) take the midterm exam; and (4) take the final exam. If a student does not satisfy these criteria then that student may fail the course regardless of the student's numerical grade.


This section outlines various policies concerning auditors, usage of cellular phones and laptops in lecture, turning in assignments late, regrading assignments, collaboration, and accommodations for students with disabilities.

Auditor Policy

Casual listeners that attend lecture but do not enroll as auditors are not allowed; you must enroll officially as an auditor. Auditors are allowed to enroll in the course as long as there is sufficient capacity in the lecture room. The requirements for auditors are: (1) attend most of the lectures; (2) take the short in-class quizzes; and (3) perform reasonably well on these quizzes. If you do not plan attending the lectures for the entire semester, then please do not audit the course. Please note that students are not allowed to audit the course and then take it for credit in a later year unless there is some kind of truly exceptional circumstance.

Course Re-Enrollment Policy

Students are not allowed to enroll for credit for a significant fraction of the course, drop or switch to auditor status, and then re-enroll for credit in a later year. A "significant fraction of the course" means after the second problem set is due; by this time the student will have: attended eight lectures, completed two lab assignments and two problem sets, and completed several short in-class quizzes. The student should have plenty of experience to decide whether or not they should drop and take the course in a later year. It is not fair for students to have access to assignment solutions and possibly even take the midterm before deciding to drop the course and take it again in a later year; this would essentially enable students to take the course twice to improve their grade.

Cellular Phones and Laptops in Lecture Policy

Students are prohibited from using cellular phones and laptops in lecture unless they receive explicit permission from the instructor. It is not practical to take notes with a laptop for this course. Students will need to write on the handouts, quickly draw pipeline diagrams, and sketch microarchitectural block diagrams during lecture. The distraction caused by a few students using (or misusing) laptops during lecture far outweighs any benefit. Tablets are allowed as long as they are kept flat and used exclusively for note taking. If you feel that you have a strong case for using a laptop during lecture then please speak with the instructor.

Late Assignment Policy

Problem sets must be submitted electronically in PDF format, and lab assignments must be submitted electronically as a tar/gzip file (as explained in the lab handout). No other formats will be accepted! Problem sets and lab assignments must be submitted by 11:59pm on the due date. No late submissions will be accepted and no extensions will be granted except for a family or medical emergency. We will be using the online CMS assignment submission system. You can continue to resubmit your files as many times as you would like up until the deadline, so please feel free to upload early and often. If you submit an assignment even one minute past the you submit an assignment even one minute past the deadline, then the assignment will be marked as late.

As an exception to this rule, each student has a set of slip days that may be used when submitting problem sets and lab assignments throughout the semester. Each slip-day provides an automatic 24-hour extension. You may use up to two slip-days on any single assignment, meaning that the maximum automatic extension is 48 hours. For lab assignments, we use the majority to determine how many slip days. So if after some changes in lab groups, two students have three slip days and one student has one slip day then the group essentially now has three slip days available. If one student has three slip days, one student has two slip days, and one student has one slip day, then the group essentially now has two slip days. Students have three slip days exclusively for use on problem sets and three slip days exclusively for use on lab assignments. These slip days are not interchangeable. To use a slip day, simply submit your assignment late; CMS will allow assignments to be uploaded up to two days late. You are responsible for keeping track of how many slip days you have remaining. If you accidentally submit an assignment late without the proper number of slip days remaining then although the system will allow the upload we will not grade the assignment (or we will grade the latest upload before the due date). The purpose of the slip-day system is to give you the freedom to more effectively manage your time. The due dates for the course are available at the beginning of the semester, so please plan ahead so you can handle weeks with many other deadlines.

Regrade Policy

Addition errors in the total score are always applicable for regrades. Regrades concerning the actual solution should be rare and are only permitted when there is a significant error. Please only make regrade requests when the case is strong and a significant number of points are at stake. Regrade requests should be submitted online via a private post on Piazza within one week of when an assignment is returned to the student. You must provide a justification for the regrade request.

Collaboration Policy

The work you submit in this course is expected to be the result of your individual effort only, or in the case of lab assignments, the result of you and your partner's effort only. Your work should accurately demonstrate your understanding of the material. The use of a computer in no way modifies the standards of academic integrity expected under the University Code.

You are encouraged to study together and to discuss information and concepts covered in lecture with other students. You can give "consulting" help to or receive "consulting" help from other students. Students can also freely discuss basic computing skills or the course infrastructure. However, this permissible cooperation should never involve one student (or lab group) having possession of or observing in detail a copy of all or part of work done by someone else, in the form of an email, an email attachment file, a flash drive, a hard copy, or on a computer screen. Students are not allowed to seek "consulting" help from online forums outside of Cornell University. Students are not allowed to use online solutions (e.g., from Course Hero) from previous offerings of this course. Students are encouraged to seek "consulting" help from their peers and from the course staff via office hours and the online Piazza discussion forums. If a student receives "consulting" help from anyone outside of the course staff, then the student must acknowledge this help on the submitted assignment.

During examinations, you must do your own work. Talking or discussion is not permitted during the examinations, nor may you compare papers, copy from others, or collaborate in any way. Students must not discuss an exam's contents with other students who have not taken the exam. If prior to taking it, you are inadvertently exposed to material in an exam (by whatever means) you must immediately inform the instructor or a TA.

Should a violation of the code of academic integrity occur, then a primary hearing will be held. See for more information about academic integrity proceedings.

Examples of acceptable collaboration:

Examples of unacceptable collaboration:

Notice that the key is that students should not share the actual solutions or code with each other. Consulting with your fellow students is fine and is an important part of succeeding in this course. If the vehicle for consulting is a whiteboard (and you avoid writing the actual solution on the whiteboard) then you should be fine.

Accommodations for Students with Disabilities

In compliance with the Cornell University policy and equal access laws, the instructor is available to discuss appropriate academic accommodations that may be required for students with disabilities. Requests for academic accommodations are to be made during the first three weeks of the semester, except for unusual circumstances, so arrangements can be made. Students are encouraged to register with Student Disability Services to verify their eligibility for appropriate accommodations.

Online and Computing Resources

We will be making use of a variety of online websites and computing resources.