This course will develop your sense of what really happens when software runs 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).
We also want to provide room for exploring the design goals of the abstractions on which computing is built, both explicit and implicit. These goals can, unintentionally or intentionally, make it difficult for everyone to benefit equally from computing. Thus, this course aims to not only pull back the curtain on how computing is structured right now, but also to empower you to be a force of change in ensuring that it works better for everyone. Knowing why abstractions exist alongside how they work is critically important in understanding how to improve them.
This course serves as a broad introduction to many of the areas of computer science that you can choose to explore more deeply inSystems Programming (CSE333), Operating Systems (CSE451), Compilers (CSE401), etc. Our goal is to give you a broad sense of a computer’s inner workings, so that you can choose which parts (if any) you want to explore further.
Regardless of your past experience with “C-level” computer science, we hope to give you a new understanding of computers that will leave you empowered, informed, and perhaps a little astounded that any of this works at all.
For students interested in hardware, embedded systems, computer engineering, computer architecture, etc., this course is an introduction 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).
The course has three principal themes:
At the end of this course, students should be able to:
Approximate list of topics:
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.
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 EdStem platform. These should be completed before engaging with lecture material.
Lectures: There will be 27 lectures. In-person attendance is highly encouraged, but lecture recordings and activities will be made available afterward. Please do not attend lecture if you are feeling unwell.
Online Assignments (Homework): There are 23 online homework assignments, one roughly every lecture. These are intended to solidify the lecture concepts and are due at least two lectures later, though they are intended to be completed before the next lecture.
Programming Assignments (Labs): There are 6 total labs, due roughly every other week. All the undergraduate lab machines (and the CSE VM) will have access to the necessary tools. We will use these assignments to reinforce key concepts and will strive to have them be as practical as possible.
Textbook Readings: There will be corresponding optional readings from the course textbook that correspond to lecture topics.
Exams: There will be a midterm and a final assessment of some sort; details TBD.
We will compute your course grade as follows:
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:
Percentage | Grade |
---|---|
97% | 4.0 |
92% | 3.5+ |
85% | 3.0+ |
75% | 2.5+ |
65% | 2.0+ |
Participation makes the course more engaging for everyone, including the instructor! Though I really appreciate when students participate, I understand that this doesn't look the same for everyone so I won't allocate points towards judging your participation. I would love for you to try and show up as you, and participate in whatever way works best for you.
You will receive credit for voting on multiple choice questions in lecture. This quarter we will be using EdStem, which you should have open during lecture. These questions will be available for at least 24 hours after their corresponding lectures, so you can fill them out while watching the recorded version if you cannot attend in-person.
These questions are designed to give you a chance to check your understanding of the material by applying it on-the-spot, as well as an opportunity to interact with your classmates. These are intended to be low-pressure and lenient so the grading primarily reflects participation (i.e., your answer does not need to be correct). You will receive full credit in this category for voting on 80% of the lecture poll questions, regardless of correctness.
Pre-Lecture Readings have quiz questions and are graded on completion, so late submissions are NOT allowed. 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 if you are short on time.
Readings are intended to be done before lecture. They are due at 1:00pm (10 minutes before lecture begins).
Online assignments (homework) are autograded and late submissions are not allowed. You are allowed an unlimited number of attempts for each quiz and you will receive credit for every question that you answer correctly.
Homework is due at 11:59 pm.
Programming assignments (labs) are submitted by uploading files to Gradescope assignments. Late lab submissions are subject to the late day policy described below. Note that there may be some optional questions in the labs. These questions are for additional practice and fun. You do not need to submit these questions, and they will not impact your grade.
Labs are due at 11:59 pm.
Exams: Exact format TBD, but make-up options will be provided for students who are unable to attend in-person exams.
You are optionally allowed to choose one partner for your lab work. If you do so, the two of you will submit only once on Gradescope. We will set up groups so that you can both see the submission. In general, you should choose one partner then work with them for the entire quarter. If you have special circumstances that require you to switch partners, please make a private post on Ed discussion.
You are allocated a total of 5 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:59pm on Friday, submitting before Sunday at 11:59pm counts as using only one late day (submitting by 11:59pm on Monday would count as using two late days).
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.
Pre-Lecture Reading: Solutions will be provided for most quiz questions once answered correctly or revealed.
Homework: Solutions will not be provided. Since you are allowed multiple attempts, make sure to attend office hours or talk to classmates if you feel stuck.
Labs: Solutions will not be provided. Most labs will include testing tools to allow you to evaluate whether or not your solution is likely working. Your lab grades will provide comments for any portion deemed incorrect.
Exams: Solutions will not be explicitly provided, though they can be inferred from the grading rubrics that will become visible once exam grades are released on Gradescope. As some exam questions will be open-ended, there may be many acceptable answers.
Learning from our mistakes is often one of the most memorable ways of learning and the staff is not immune from making them, too! If you have a question about a graded assignment or exam, please don't hesitate to ask a staff member about it during their office hours or via private post on Ed Discussion. If, after discussing your question, you feel that your work was misunderstood or otherwise should be looked at again to see if an appropriate grade was given, we ask that you submit an electronic regrade request via the Gradescope interface, which will open and close automatically. Note that when an assignment is regraded, the entire work will be regraded. This means that while it is possible to regain some points, it is also possible to lose points.
Pre-Lecture Reading regrades: These are autograded, but if you believe there might be an error in our answers, please email the instructor or make a private post on Ed Discussion.
Homework regrades: These are autograded, but if you believe there might be an error in our answers, please email the instructor or make a private post on Ed Discussion.
Lab regrades: You may submit regrade requests via Gradescope. Make sure to include a short summary describing why your work should be looked at again.
Exam regrades: You may submit regrade requests via Gradescope. Submit separate regrade requests for each subquestion. Each regrade box is for only that particular part of the exam. Make sure you explain why you believe that your exam has been misgraded based on the provided solutions and Gradescope rubrics.
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 and for your future. Cheating turns the assignments into an exercise that is a silly waste of both your time and ours; save us both by not doing it.
Permitted collaboration:
Pre-Lecture Reading: Collaboration and discussion is encouraged to help prepare you for the lecture.
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 exams.
Labs: Collaboration should be restricted to high-level discussion (i.e., ideas only) except with your optional partner. 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 materials or copy off of another student's exam will be heavily punished.
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.
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.
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 office 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.