Syllabus


Course Description

Includes substantial programming experience in languages that expose machine characteristics and low-level data representation (e.g., C and C++); explicit memory management; interacting with operating-system services; and cache-aware programming.

Prerequisites: CSE 351 (The Hardware/Software Interface)



Course Materials

CSE Linux Environment

All assignments (homeworks and exercises) in this class will be graded on the CSE Linux environment. We strongly recommend that you work on the assignments in this same environment. There are three ways to do this:

  1. Log into a Linux PC located in one of the undergraduate workstation labs.
  2. Remotely log in to attu.cs.washington.edu.
  3. Install and use the CSE home VM on your personal machine.

Textbooks

There are no strictly required texts for this courses. Most people will find it useful to have both a C and a C++ reference; suggestions are given below. We strongly recommend that you have a copy of the C++ Primer, as C++ is a big, complex language and it is hard to understand how it all fits together from just Google and Stack Overflow snippets and folklore.

Strongly Recommended:

Suggested:



Course Components

  1. Lectures: Attendance is expected at all lectures.
  2. Exercises: People become great programmers by writing lots of code and learning from that experience. We will be assigning a mandatory programming exercise with most lectures, due before the next lecture. These will be short and reinforce the material from the lecture.
  3. Homeworks:This course is designed to give you substantial experience with programming. There will be 4 major programming homeworks during the quarter that build on top of each other.
  4. Exams: There will be a midterm and a final; see the Exams page for dates.

Policies


Grading Policies

Your grade in the class will be broken into the following components:

  • Exercises: 25%
  • Homework: 40%
  • Midterm Exam: 15%
  • Final Exam: 20%
  • Course-Wide Participation: 5%

You will note these components sum to 105%, with the extra 5% coming from Course-Wide Participation. You will not be penalized if you do not engage with the course staff or other students; however, your deliberate and active participation will have a positive impact on both your grade and your mastery of these materials.

These percentages may be adjusted if appropriate.


Course-Wide Participation

You can earn credit toward your course-wide participation grade for any of the following:

  • Attending and asking questions in office hours, lectures, and sections.
  • Keeping up with the course discussion list.
  • Voting on peer instruction questions during lecture
  • Helping others in lecture, during office hours, and on discussion lists.

Course-wide participation scores are kept internal to the staff (i.e. not disclosed to students).


Piazza Careers

The discussion platform we use, Piazza, provides an optional "Piazza Careers" service. It is NOT required and you do not need to put any personal information into this website. It is also an opt-in service; by default, you will not participate in Piazza Careers.


Lecture Polling

Lecture will be supplemented with in-class peer instruction questions that will give you a chance to solve a question related to lecture content, discuss with your peers, and vote on the answer. This is 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. You will receive "credit" for voting on peer instruction questions; note that this "credit" is based on based on participation, not correctness (ie, your response does not need to be correct), and that lecture polling is part of your optional course-wide participation. To particpate in polls, first register your UWNetID on the Poll Everywhere website (more information can be found from IT Connect). Then, in lecture, you may vote using either of the following options:



Assignment Policies

  • Exercises are submitted to Gradescope and are typically due at 11:00 am on the day of the next lecture. Exercises will be graded in an environment equivalent to attu using the following coarse-grained guideline:
    • Exemplary (4 pts): A commendable solution in every way. Compiles with no warnings; runs correctly with no memory leaks; has great style. Your TA will be excited to share this solution with the entire staff, as no more than 5% of submitted solutions will achieve this score.
    • Great (3 pts): A great solution that compiles, produces the desired output for all specified inputs (but may misbehave on a few abstruse edge cases); doesn't leak memory, segfault, or run infinitely; has good-but-possibly-imperfect style.
    • Good (2 pts): A solution that compiles, but may not produce the desired output for all specified inputs; minor correctness problems; minor style or linter errors; missing functionality/requirements..
    • Fair (1 pt): A solution that compiles, but with major correctness errors or major style errors. This may include memory leaks, disallowed linter messages, poor code organization, non-trivial compilation warnings, or more.
    • Poor (0 pts): Late; compilation errors; major correctness errors and style errors.
  • Homework is distributed and submitted via Gitlab. To submit, you must push a tag that ends with -final (e.g. hw2-final); homeworks are typically due at 8:59 pm. Homeworks will be tested and graded in an environment equivalent to attu so make sure that your code works in the CSE Linux Environment.
  • Exams are graded by the staff and uploaded to Gradescope along with the rubric. See the Exams page for dates and resources.

Late Policy

For exercises, no late submissions will be accepted.

For homework, you are allocated a total of 4 late days for the entirety of the quarter to utilize should the need arise.

  • A late day is defined as the 24 hour period after a homework's due date: num_late_days = ceil(hours_late / 24).
  • The entire weekend (Saturday + Sunday) counts as a single late day.
  • You are not allowed to use more than two late days for any given homework.

If you exceed the late days afforded to you, you will lose 20% of the score for each day a homework is overdue. Note that all homework submissions close at most 3 days (ie, the equivalent of 2 late days) after the due date. We strongly encourage you to save late days for emergencies.



Academic Conduct

We encourage collaboration, but there is a fine line between collaboration and cheating. We can learn from working with each other, but remember the goal is for YOU to learn the material so that YOU will be prepared for the exams, for job interviews, etc.

Cheating consists of sharing code or solutions to assignments by either copying, retyping, looking at, or supplying a copy of a file. Examples include:

  • Coaching a friend to arrive at a solution by simply following your instructions (i.e. no thinking involved). An example is helping a friend write a program line-by-line.
  • Copying code from a similar course at another university or using solutions/code on the web, including GitHub.
  • Communicating your solution with another student via electronic or non-electronic means.

You are responsible for understanding and applying the department's Academic Misconduct Policy. 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.



Inclusion

Our code and our projects are made better by considering a variety of viewpoints. Your course staff is committed to the values outlined in department's inclusiveness statement, and you are expected to uphold a supportive and inclusive learning environment.

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. Should you feel uncomfortable bringing up an issue with a staff member directly, consider sending anonymous feedback or contacting the Office of the Ombud.



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 accommodations, 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.



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

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 (eg, in office hours or via email) to discuss your situation. The sooner we are 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.