Course Information

Cross Listed ENGRD 2300 Digital Logic and Computer Organization
Instructor Prof. Christopher Batten, 323 Rhodes Hall
Office Hours: Thursday, 4:30–5:30pm, 323 Rhodes Hall
Head TA Niklas Schmelzle
Graduate TAs Vesal Bakhtazad, Han Mo, Nicholas Papapanou, Htoo Wai Htet, Xingze Xu
Undergraduate TAs Mohammad Al-Labadi, Stephen Barlett, Madison Costello, Yaqi Gao
Jamayne Gyimah-Danquah, Rohan Kalluraya, Rachel Lee
Zephan Sanghani, Md Shad, Cynthia Shao, Anthony Song, Simeon Turner
Irwin Wang, Paige Yun
Lectures Tue/Thu, 11:40–12:55pm @ 155 Olin Hall
Lab Sections Mon, 11:15– 2:15pm @ 238 Phillips Hall
Mon, 7:30–10:30pm @ 238 Phillips Hall
Tue, 1:25– 4:25pm @ 238 Phillips Hall
Wed, 7:30–10:30pm @ 238 Phillips Hall
Discussion
Sections
Fri, 1:25–2:15pm @ 225 Upson Hall
Fri, 2:30–3:20pm @ 225 Upson Hall
Fri, 3:35–4:25pm @ 225 Upson Hall
Office
Hours
Mon, 5:30–7:00pm @ 203 Phillips Hall
Tue, 5:30–7:00pm @ 203 Phillips Hall
Tue, 7:30–9:00pm @ 203 Phillips Hall
Wed, 5:30–7:00pm @ 203 Phillips Hall (some exceptions, see Canvas)
Thu, 5:30–7:00pm @ 203 Phillips Hall
Thu, 7:30–9:00pm @ 203 Phillips Hall (some exceptions, see Canvas)
Required
Textbook
D. M. Harris and S. L. Harris
"Digital Design and Computer Architecture: RISC-V Edition"
1st edition, Morgan Kaufmann, 2021
Available through Canvas via the Cornell Academic Materials Program
Available in paperback from Amazon ($70)
Communication All communication should use Ed Discussion unless a student needs to discuss a personal matter in which case they should email the instructor. Students should never directly email any teaching assistant.

Objectives

This course is meant to be a foundational course in computer engineering. The course will prepare students for more advanced coursework in computer engineering (e.g., embedded systems, computer architecture) as well as provide context for more advanced coursework that focuses lower in the computer systems stack (e.g., micro-electronics, digital VLSI) or higher in the computer systems stack (e.g., compilers, operating systems). By the end of this course, students should be able to:

Prerequisites

This course is targeted towards sophomore-level undergraduate students, although it is also appropriate for advanced freshman students and upperclassman. An introductory course on computing is required. Students need to be comfortable using Python (i.e., through CS 1110 or CS 1112). Students must have a strong understanding of variables, expressions, conditionals, iteration, lists/arrays, and functions in addition to the practical aspects of developing, testing, and debugging software. No prior knowledge of the Verilog hardware description language is necessary.

Topics

The course includes two parts. The first part covers digital logic, while the second part covers computer organization. A 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 Textbook

The required textbook for the course is "Digital Design and Computer Architecture, RISC-V Edition," by D. M. Harris and S. L. Harris (Morgan Kaufmann, 2021). There are three different editions of this book for three different instruction set architectures: MIPS, ARM, RISC-V. It is critical that students use the RISC-V edition. All students will have access to the textbook online through Canvas via the Cornell Academic Materials Program.

Format and Procedures

This course includes a combination of lectures, quizzes, discussion sections, readings, practice problems, lab assignments, and exams.

Grading Scheme

This course will be adopting a philosophy of "grading for equity" where grading is exclusively used to assess mastery of the material covered in the course as opposed to rewarding effort and/or incentivizing specific behaviors. To this end, each part or criteria of every assignment is graded on a five-point scale without any curve according to the following rubric.

A score of 5 corresponds to an A, 4 corresponds to a B, 3 corresponds to a C, and so on. A score of 5.25 is reserved for when the submitted work is perfect with absolutely no mistakes or is exceptional in some other way.

Total scores for an assignment 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 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, lab assignments, and exams are provided once the assignment has been graded to enable students to easily see how the score was awarded.

The final grade is calculated using a weighted average of all assignments.

Quizzes 5%
Lab 1 4%
Lab 2 6%
Lab 3 9%
Lab 4 15%
Prelim Exam 1 16%
Prelim Exam 2 16%
Verilog Exam 2 5%
Final Exam 24%

All quiz grades are averaged to form a single total. We will drop a student's two lowest quiz grades. This means students can miss up to two quizzes without penalty due to official student disability service accommodations, official varsity athletic accomodations, religious observance accomodations, serious illness, medical emergencies, family emergencies, and/or any other reason. Students do not need to notify the instructor of these excused or unexcused absences. No additional quiz scores will be dropped except in extremely unusual circumstances.

Note that the exams account for 61\% 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, working through practice problems, independently developing study problems, participating in critical study groups, and writing their own Verilog code from scratch.

To pass the course, a student must at a bare minimum take all four exams. If a student does not take all four exams then that student may fail the course regardless of the student's numerical grade. The instructor reserves the right to award a D letter grade for students who barely satisfy this criteria but are clearly making no real effort to engage in the course and their own learning.

Policies

This section outlines various policies concerning auditors, usage of cellular phones and laptops in lecture, turning in assignments late, regrading assignments, collaboration, artificial intelligence, copyright, 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. If you would like to audit the course please talk to the instructor first! Usually we wait until the second week of classes before allowing auditors to enroll, to ensure there is sufficient capacity in the lecture room. The requirements for auditors are: (1) attend most of the lectures; (2) complete most of the in-class quizzes; and (3) perform reasonably well on these quizzes. If you do not plan on attending the lectures, then please do not audit the course.

Cellular Phones and Laptops in Lecture Policy

Students are prohibited from using cellular phones and/or 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 timing diagrams, and sketch gate- or block-level diagrams during lecture. The distraction caused by a few students using (or misusing) cell phones and/or 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

Lab assignment code must be submitted electronically via GitHub. Lab reports must be submitted electronically in PDF format via Canvas. No other formats will be accepted! Assignments must be submitted by 11:59pm on the due date unless otherwise specified. No late submissions will be accepted and no extensions will be granted except for serious illness, family emergency, or medical emergency. The instructors must be notified of this emergency in advance if at all possible. You can continue to push your code to GitHub and resubmit your report to Canvas 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 deadline, then the assignment will be marked as late and not graded. We simply cannot accept late work given the tight timeline of the course. Please plan your time accordingly! If you do not finish the code for the simulation part of an assignment, push what you have to GitHub by the deadline. You can continue working on it after the deadline to: (1) ensure you have working code for the FPGA parts; and (2) earn some points back through the revision process. If you do not finish the lab report, then upload what you have finished by the deadline.

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 either through Gradescope or a private post on Ed within one week of when an assignment is returned to the student or within one week of when an exam is reviewed with the class. You must provide a justification for the regrade request.

Collaboration Policy

The work you submit for the lab assignments is expected to 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 discuss information and concepts covered in lecture and relevant to the lab assignments with other students. You can give "consulting" help to or receive "consulting" help from other students about the lab assignments. Students can also freely discuss basic computing skills or the course infrastructure. However, this permissible cooperation should never involve one student (or 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, or on a computer screen. Students are not allowed to seek consulting help from online sources outside of Cornell University. If a student receives consulting help from anyone outside of the course staff, then the student must acknowledge this help on the submitted assignment using the post-lab survey.

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

Violating the collaboration policy will be considered a violation of the code of academic integrity, and a primary hearing will be held. See https://deanoffaculty.cornell.edu/faculty-and-academic-affairs/academic-integrity 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 code with each other unless expressly permitted by the course instructors; and that all submitted work must represent a student's understanding.

Artificial Intelligence (AI) Policy

Students are allowed to use artificial intelligence (AI) systems (e.g., OpenAI ChatGPT, Anthropic Claude, Google Gemini, Microsoft Copilot) in this course as long as this usage adheres to an AI as TA policy. This means students can ask AI anything they would ask a TA. Students can ask AI to explain concepts from lecture, to brainstorm design or test case ideas, to provide help debugging their code, to provide a qualitative assessment of their code quality, and to provide advice on how to improve their lab report. If a student does use AI, then the student must acknowledge this help on the submitted assignment using the post-lab survey. They may not ask AI anything they would not ask a TA. Students cannot ask AI to write code, write test cases, fix their code, write comments, or write portions of the lab report.

Students must not enable AI coding assistants within VS Code (e.g., Microsoft Copilot) nor use AI-enabled integrated development environments (e.g., Cursor) since these tools will automatically write code for the student which violates the AI as TA policy.

Violating the AI policy will be considered a violation of the code of academic integrity, and a primary hearing will be held. See https://deanoffaculty.cornell.edu/faculty-and-academic-affairs/academic-integrity for more information about academic integrity proceedings.

Examples of acceptable AI usage:

Examples of unacceptable AI usage:

Notice that the key is that students should only ask AI something they would ask a TA. Following the AI as TA policy in the context of the lab assignments will ensure students are prepared to demonstrate their understanding of Verilog coding on both prelim exams, the final exam, and the Verilog exam.

Copyright Policy

All course materials produced by the course instructor (including all handouts, tutorials, quizzes, exams, videos, scripts, and code) are copyright of the course instructor unless otherwise noted. Download and use of these materials are permitted for individual educational non-commercial purposes only. Redistribution either in part or in whole via both commercial (e.g., Course Hero) or non-commercial (e.g., public website) requires written permission of the copyright holder.

Violating the copyright policy will be considered a violation of the code of academic integrity, and a primary hearing will be held. See https://deanoffaculty.cornell.edu/faculty-and-academic-affairs/academic-integrity for more information about academic integrity proceedings.

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. All communications concerning accommodations should be done privately with the instructor either via email or in-person. 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 must register with Student Disability Services to verify their eligibility for appropriate accommodations. Note that students cannot simply rely on Student Disability Services to email the instructor without actually speaking to the instructor in person. Students with a disability must speak with the instructor in person during the first three weeks to discuss their accommodations.

Online and Computing Resources

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