Skip to main content

Section 5 How Will I Learn in This Course?

Overview..

Ultimately, you are the person in charge of your learning. This will require you to be pro-active about learning, to not be shy about asking questions and seeking help, and to burnish your time management skills. There is a lot of material in this course, and things will move at a rapid pace, so try to avoid falling behind.
It is expected that you will need to do some struggling, grappling, and persevering, and that you will need to learn to accept ambiguity. To quote from Make It Stick by Peter C. Brown, Henry L. Roediger III, and Mark A. McDaniel (The Belknap Press, 2014; ISBN 978-0-674-72901-8), an excellent book on effective learning:
’’Failure underlies the scientific method, which has advanced our understanding of the world we inhabit. The qualities of persistence and resiliency, where failure is seen as useful information, underlie successful innovation in every sphere and lie at the core of nearly all successful learning. Failure points to the need for redoubled effort, or liberates us to try different approaches. ... It’s not the failure that’s desirable, it’s the dauntless effort despite the risks, the discovery of what works and what doesn’t that sometimes only failure can reveal. It’s trusting that trying to solve a puzzle serves us better than being spoon-fed the solution, even if we fall short in our first attempts at an answer.’’
However, none of this is to suggest that the course should overwhelm you. Our guiding principle is that the course should be CBNO: Challenging but not overwhelming. If you ever find yourself getting overwhelmed, reach out to a member of the instructional team immediately.

Lectures..

The coverage of lectures will be announced via Canvas on a weekly basis. Each lecture will typically cover one or more topics in their entirety. All sessions will remain synchronized on a daily basis. Attendance is not mandatory, but is highly recommended. You are expected to follow along and actively participate in class, although we may sometimes choose to take a question offline.
Recordings of the lectures will be made available through Lectures Online, but you should not primarily rely on these recordings to learn. Recordings are provided to enable you to review or catch up when necessary. The recordings will not capture whiteboard content and may miss in-class interactions.

Discussion Sections..

The discussion sessions are scheduled for Friday and are led by the TAs. Almost always, these sessions will be structured as follows: a weekly 15-minute quiz; working as a group on pre-assigned problems or worksheets; demonstration and demystification of one or more tools; and time to respond to additional questions from students.
As with lectures, attendance is not mandatory, but is highly recommended. These sessions are part of instructional time, and any materials covered in them is fair game for quizzes and exams. Tools will be covered exclusively in these sessions.

Programming Assignments..

There will be four programming assignments (lab sequences) over the course of the semester: CI, MM, AC, and SE. The programming language for all assignments is either C or A64 assembly. Unless noted otherwise, all assignments are individual.
  • Command Interpreter (CI Lab): Set up environment; write a REPL interpreter for a simple low-level programming language (ASML) and integrate it into a test harness. This assignment serves as an immersion into C programming using the GNU toolchain for experienced Java programmers. 4 weeks, 4 submissions: Week 1 (Setup) due Thursday, August 27, 2026; Week 2 due Thursday, September 3, 2026; Week 3 due Thursday, September 10, 2026; Week 4 due Thursday, September 17, 2026; AI Usage Survey due Saturday, September 19, 2026.
  • Memory Manager (MM Lab): Write an explicit memory allocator to replace the C runtime’s malloc library. 2 weeks, 2 submissions: Week 1 due Thursday, September 24, 2026; Week 2 (code and writeup submissions) due Thursday, October 1, 2026; AI Usage Survey due Saturday, October 3, 2026.
  • Assembly Coding (AC Lab): Implement a number of small functions in A64 assembly code. 2 weeks, 2 submissions: Week 1 due Thursday, October 22, 2026; Week 2 due Monday, November 2, 2026; AI Usage Survey due [FILL: AC Lab AI Usage Survey due date not given on the Fa26 Canvas page].
  • System Emulator (SE Lab): Write a pipeline simulator for a small subset of Arm instructions; write a cache simulator for a two-level memory hierarchy; integrate the two. 4 weeks, 4 submissions: Week 1 due Thursday, November 5, 2026; Week 2 due Thursday, November 12, 2026; Week 3 due Thursday, November 19, 2026; Week 4 (final code submission) due Thursday, December 3, 2026; AI Usage Survey due [FILL: SE Lab AI Usage Survey due date not given on the Fa26 Canvas page]. Extra credit options (chArm-v5plus, a CI/SE comparison essay, and tree_depth optimization) are also due Thursday, December 3, 2026. You may be given the option of working in pairs on this assignment.

Problem Sets..

Problem sets will be made available throughout the semester to help you master the material. You do not have to turn these in and may freely work with others. Solution keys will be released approximately a week after each set’s release.

Quizzes..

There will be a quiz during your discussion section almost every Friday of the semester, for a total of eleven quizzes. Quizzes are timed; you will have 15 minutes to complete each quiz. You must take the quiz in person during the discussion section for your unique ID. There will be no alternate mode or make-up opportunities for taking quizzes. The quiz will have multiple-choice questions. The quiz is individual, single-attempt, open-book, open-notes, and open-internet. The quiz will be administered on Canvas. You cannot post the questions of the quiz on any forum. You are not allowed to collaborate or communicate with others on the quizzes.

Exams..

There will be two midterm exams during the semester: Exam 0x1, due Friday, October 9, 2026, 11:59pm, and Exam 0x2, due Friday, October 30, 2026, 11:59pm. Both are held in the evening (not during the normal lecture hour). [FILL: exact clock start time and room for Exam 0x1 and Exam 0x2 are not stated on the Fa26 Canvas page]. These exams are timed (two hours each). There will be no alternate mode or make-up opportunities without a verified excuse. The exams are individual, single-attempt, closed-book, and limited-notes. They are paper-and-pencil exams. Calculators are allowed.
There will be a final exam, Exam 0x3, due Thursday, December 10, 2026, 11:59pm, within the Fall 2026 final exam period (December 10–16, 2026), along with the corresponding makeup exam. [FILL: exact clock start time, room, and whether Exam 0x3 is the registrar-scheduled unified final are not stated on the Fa26 Canvas page]. The exam is timed (two hours). You must take the exam in person during the scheduled time, or in the makeup timeslot in case of a verified conflict. The exam is individual, single-attempt, closed-book, and limited-notes. Calculators are allowed.

Mastery..

A mastery requirement (the C/Linux Toolchain Proficiency, or CLTP) will require you to demonstrate proficiency in C coding and the Linux toolchain on a Pass/Fail basis. No AI tools are allowed for this assessment. You have up to three attempts: Attempt 1 due Thursday, October 15, 2026, 7:00pm; Attempt 2 due Thursday, November 5, 2026, 7:00pm; Attempt 3 due Thursday, November 19, 2026, 11:59pm.