Syllabus

Course Goals

This course should develop students' sense of what really happens when software runs – and that this question can be answered at several levels of abstraction, including the hardware architecture level, the assembly level, the C programming level, and the Java programming level. The core around which the course is built is C, assembly, and low-level data representation, but this is connected to higher levels (roughly how basic Java could be implemented), lower levels (the general structure of a processor), and the role of the operating system (but not how the operating system is implemented).

For (computer science) students wanting to specialize at higher levels of abstraction, this could, in the extreme, be the only course they take that considers the "C level" and below. However, most will take a subset of Systems Programming (CSE333), Operating Systems (CSE451), Compilers (CSE401), etc.

For students interested in hardware, embedded systems, computer engineering, computer architecture, etc., this course is the introductory course after which other courses will delve both deeper (into specific topics) and lower (into hardware implementation, circuit design, etc.). Of particular interest are Introduction to Digital Design (CSE369), Design of Digital Circuits and Systems (CSE371), Introduction to Embedded Systems (CSE474), and Computer Architecture I (CSE469).


Course Themes

The course has four principal themes:

  • Representation: How different data types (from simple integers to arrays of data structures) are represented in memory, how instructions are encoded, and how memory addresses (pointers) are generated and used to create complex structures.
  • Translation: How high-level languages are translated into the basic instructions embodied in process hardware with a particular focus on C and Java.
  • Control Flow: How computers organize the order of their computations, keep track of where they are in large programs, and provide the illusion of multiple processes executing in parallel.
  • History and Society: The principles computers are built upon were influenced by the societal context of the historical periods in which they were designed and, in turn, computers influence society in ways far beyond pure computational power.

Course Learning Objectives

At the end of this course, students should be able to:

  • Describe the multi-step process by which a high-level program becomes a stream of instructions executed by a processor;
  • Describe the basic organization of the memory hierarchy and the effect of its parameters on system performance;
  • Trace the execution of assembly code (x86-64), map the assembly to high-level language constructs, and write simple pieces of assembly programs;
  • Write C code using pointers to create and manipulate data structures;
  • Write (or rewrite) code to take advantage of the computer execution model to improve execution efficiency;
  • Debug small-ish C and assembly programs using GDB;
  • Perform basic navigation and file system operations in Linux using a terminal;
  • Explain the basic role of an operating system in executing processes;
  • Identify some of the ways that computers and their design principles affect society today.

Course Syllabus

Approximate list of topics:

  • Memory and data representation
  • Number representation for integers and floats
  • Machine code and the C programming language
  • x86-64 assembly language
  • Procedures and stacks
  • Arrays and other data structures
  • Memory and caches
  • Memory allocation
  • Operating system process model
  • Virtual memory

Note that even more important than the topics at various levels of abstraction is the connection between them: students should get an informal sense of how Java could be translated to C, C to assembly, and assembly to binary.


Course Components

The course consists of the following elements:

  • Pre-Lecture Reading: The main technical material will be introduced via interactive readings and check-in questions on the Ed STEM platform. These should be completed before engaging with lecture material.
  • Lectures: There will be 29 lectures. In-person attendance is strongly encouraged, but lecture recordings and activities will be made available afterward.
  • Homework (Online Assignments): There are 27 online homework assignments, corresponding to most of the class sessions. These are intended to solidify the lesson concepts and are due at least two class sessions later, though they are intended to be completed before the next lecture.
  • Labs (Programming Assignments): There are 6 total labs, due roughly every other week. Students will access the necessary tools in the CSE Linux environment (learn how here). We will use these assignments to reinforce key concepts and will strive to have them be as practical as possible.
  • Optional Reading: There are corresponding optional readings from the recommended course textbook that correspond to lesson topics.
  • Exams: There will be a midterm and a final – see the Exams page for more information.

We will try to ensure that the workload is typical for a 4-credit course, namely, 9-12 hours per week outside of the lectures. If we do not succeed, please let us know in whichever way you feel the most comfortable (in-person, email, anonymous feedback) and explain which parts of the course are causing you to spend too much time non-productively.

Policies

Grading Policies

We will compute your course grade as follows:

  • Pre-Lecture Readings: 7%
  • Homework: 20%
  • Labs: 40%
  • Midterm: 10%
  • Final: 20%
  • Effort, Participation, and Altruism: 3%

The grading policies are designed to be relatively forgiving, so we expect a high grade distribution. We will use an approximate "straight-scale" grading scheme:

  • 97% → 4.0, 92% → 3.5+, 85% → 3.0+, 75% → 2.5+, 65% → 2.0+

EPA: Effort, Participation, and Altruism

You can earn "points" for each of the following:

  • Effort: Attending section and support hours; keeping up with Ed Discussion.
  • Participation: Participating during lecture and section, including lecture polls and interacting with TAs and other students; asking questions and commenting on Ed Discussion.
  • Altruism: Helping others in section, during support hours, and on Ed Discussion.

Midterm "Clobber" Policy

The clobber policy allows you to override your Midterm score with the score of the Midterm section of the Final. Note that the reverse is not true – you must take the entire Final, regardless of your Midterm score.

  • Potential replacement score = (Final_MT_subscore - Final_MT_mean) / Final_MT_stddev * MT_stddev + MT_mean
  • Clobbered Midterm score = MAX(original MT score, potential replacement score)
    • Final_MT_subscore is your score on the Midterm section of the Final
    • Final_MT_mean and Final_MT_stddev are the mean and standard deviation of the Midterm section of the Final
    • MT_stdev and MT_mean are the standard deviation and mean of the Midterm.

"Clobbered Midterm score" is then filled in as your Midterm score for the final grade calculation.

Extra Credit (Labs)

The later labs provide opportunities for "extra credit" in the form of fun extension activities. However, these don't affect your lab grade. These will be accumulated over the course and may be used to bump up borderline grades at the end of the quarter at the discretion of the instructor(s).


Assignment Policies

Pre-Lecture Readings

  • Ed Lesson label: RD<#>
  • Grading: Autograded on completion (answer ~80% to get full credit)
  • Deadlines: 11:00 am the morning of the associated lecture
  • Late submissions: No
  • Solutions: Once answered correctly or revealed
  • Regrades: Not applicable

The reading check-in problems are intended to help you synthesize the material, which will be practiced and expanded upon in lecture. After submitting an answer, you are encouraged to revisit your work and submit again, though you are able to reveal the correct answer and solution (detailed explanations provided) if you are short on time.

Lecture Polls

  • Ed Lesson label: LC<#>
  • Grading: Autograded on completion (answer ~80% to get full credit; part of EPA)
  • Deadlines: 11:00 am the morning of the following lecture
  • Late submissions: No
  • Solutions: Covered during lecture and/or inked slides
  • Regrades: Not applicable

Every lecture will contain one or more polling questions (mostly multiple choice) to give you a chance to apply the material on the spot and interact with your classmates. You should have Ed Lessons open during lecture (whether live or watching the recording). There won't be explanations for these questions in Ed, but we will cover the solutions during each class session and the correct answers will be displayed after the deadline.

Homework (online assignments)

  • Ed Lesson label: HW<#>
  • Grading: Autograded on correctness
  • Deadlines: 11:59 pm the night of two lectures later (typically 4-5 days)
  • Late submissions: No
  • Solutions: Generally not provided – since you are allowed multiple attempts, make sure to go to office hours or talk to classmates if you feel stuck
  • Regrades: Not applicable

These questions reinforce the concepts from the associated reading and lecture; most do not involve programming. You are allowed to collaborate on homework and we encourage you to use these as the main avenue to discuss course topics with peers and course staff. You are allowed an unlimited number of attempts for each question and you will receive credit for every question that you answer correctly. We will drop your lowest homework score at the end of the quarter.

Labs (programming assignments)

  • Ed Lesson label: LB<#> (dummy lessons; actually submitted to Gradescope)
  • Grading: Correctness (lab: autograded, synthesis: manually)
  • Deadlines: 11:59 pm on the deadline stated at the top of the lab spec
  • Late submissions: Yes, see the late day policy below
  • Solutions: Not provided – use testing tools for lab, synthesis grading will include comments for any portion deemed incorrect
  • Regrades: Gradescope interface – make sure to include a short summary describing why your work should be looked at again

Synthesize and apply the major course concepts through programming exercises in a real computing environment (CSE Linux environment). At the end of each lab, you will have "synthesis" questions to answer in a text document. You can submit your lab files as many times as you'd like to but only the last submission will be graded. We run autograders on Gradescope, which should complete within minutes of submitting; make sure to read the output to sanity check your submission (e.g., missing file, compilation errors). Labs are to be completed individually or, optionally, with a partner. See the section above about extra credit.

Exams (In Person)

  • Ed Lesson label: MT and FL (dummy lessons; actually done on paper)
  • Grading: Manually graded for correctness
  • Deadlines: See the schedule or Exams for exam times
  • Late submissions: No, but see the disability section if you need accommodations
  • Solutions: Not explicitly provided, though they can be inferred from the grading rubrics that will become visible once exam grades are released
  • Regrades: Gradescope interface – submit separate requests for each subquestion and explain why you believe that your exam has been misgraded based on the Gradescope rubrics.

Summative assessments to check your progress of the course learning objectives. All relevant details can be found on the Exams page.

Lab Late Day Policy

You are allocated a total of 6 late day tokens for the entirety of the quarter to utilize on labs, should the need arise.

  • A late day is defined as the 24-hour period after an assignment's due date: num_late_days = ceil(hours_late / 24).
    • An exception is made for weekends, which count as a single late day. That is, if an assignment is due at 11:59 pm on Friday, submitting before Sunday at 11:59 pm counts as using only ONE late day (submitting by 11:59 pm on Monday would count as using TWO late days).
  • All lab submissions will close two late days past the original due date. This means that you will not be able to submit past this date without prior authorization from the instructor.
  • There is no bonus for having leftover late days at the end of the quarter.

For each late day you use that exceeds the total late day tokens given to you, you will be penalized 10% of your score on one of the assignments that you submitted late. The penalties will be applied in a manner that maximizes your overall grade (i.e., minimizes your total penalties). No individual assignment will be penalized more than twice.


Academic Conduct

In general, we encourage collaboration, but there is a very fine line between collaboration and cheating. We can learn a lot from working with each other and it can make the course more fun, but we also want to ensure that every student can get the maximum benefit from the material this course has to offer. Keep in mind that the overall goal is for *YOU* to learn the material so you will be prepared for the exams, future courses, job interviews, etc. in the future. Cheating turns the assignments into an exercise that is a silly waste of both your time and ours; save us all by not doing it.

Permitted collaboration

  • Pre-Lecture Reading and Lecture Polls: Collaboration and discussion is encouraged to help you build mastery of the course material.
  • Homework: Collaboration and discussion is encouraged (find a homework group!), but you are responsible for understanding the solutions on your own, as the problems are meant to solidify your grasp of the material, which is helpful for labs and exams.
  • Labs: Outside of your (optional) partner, collaboration should be restricted to high-level discussion (i.e., ideas only). A good rule of thumb is that you should never show your own code while helping another student (viewing their code is highly discouraged, as it often leads to problematic situations).
  • Exams: Exams are taken individually and any attempt to use unpermitted resources or copy off of another student's exam will be heavily punished.

Cheating

Cheating is a very serious offense. If you are caught cheating, you can expect a failing grade and initiation of a cheating case in the University system. Cheating is an insult to the instructor and course staff, to the school and program, and most importantly, to you and your fellow students. If you feel that you are having a problem with the material, or don't have time to finish an assignment, or have any number of other reasons to cheat, then talk with the instructor. Just don't cheat.

If you are in doubt about what might constitute cheating, send the instructor an email describing the situation and we will be happy to clarify it for you. For more information, you may consult the school's Academic Misconduct Policy.


Disability Resources

The Disability Resources for Students (DRS) is a unit within the Division of Student Life and is dedicated to ensuring access and inclusion for all students with disabilities on the Seattle campus. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff. If you have a medical need for extensions of exam times or assignment deadlines, these will only be granted through official documentation from DRS. Browse to this link to start the process as soon as possible to avoid delays.

You can refer to the university policies regarding Disability Accommodations for more information.


Religious Accommodations

Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW's policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.


Extenuating Circumstances and Inclusiveness

We recognize that our students come from varied backgrounds and can have widely-varying circumstances. If you have any unforeseen or extenuating circumstance that arise during the course, please do not hesitate to contact the instructor in support hours, via email, or private Ed Discussion post to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances include work-school balance, familial responsibilities, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.

Additionally, if at any point you are made to feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. Should you feel uncomfortable bringing up an issue with a staff member directly, you may consider sending anonymous feedback or contacting the Office of the Ombud.