We will study how web browsers work by building our own web browsers from scratch in python.
The course is based on the online textbook Web Browser Engineering. We will cover one chapter per week of the book, for 10 weeks. The calendar page is the best place to get up-to-date information about the schedule.
Each week, students will implement 1 core feature in their browser, plus several extensions. The core feature is covered in detail by the corresponding book chapter. The implementation of this feature usually involves some refactoring of existing code, as well as understanding the content of the book and putting together the starter code into a working implementation. The remaining extensions are exercises that extend the core feature of the week with additional functionality. These exercises will be selected from the list of exercises at the end of each book chapter.
"Week N" of the course proceeds as follows.
Week 1 and Week 10 are a little different. See the schedule.
There are no quizzes or exams.
Lectures will be recorded and made available to all students. Not all sections will be recorded, but we will make some information about section available for those who cannot attend.
jrw12@cs.washington.edu
c7834@uw.edu
feathr@cs.washington.edu
egreisz@cs.washington.edu
tngo2001@cs.washington.edu
gy020306@cs.washington.edu
You can email the entire staff at
cse493x-staff@cs.washington.edu
,
but we usually prefer you make a private post on Ed if possible.
The best way to contact the staff is to make a post on Ed. If your question is likely to be useful to other students, please consider making it public. (You can make the post "anonymous" to hide your identity from your classmates, but note that course staff can still see your identity on anonymous posts. See anonymous feedback at the very bottom of this page for submitting feedback without revealing your identity to course staff.) If your message is not relevant to other students, make it private. We prefer you send messages via Ed if at all possible, because it allows any staff member to assist you. If you need to contact an individual staff member directly, you can also use email.
There are three kinds of assignments in this class:
For the browser programming assignments, we have created a Gitlab repository for each student containing starter code and a description of the assignment. Each student should clone their repository, do their work there, and commit and push it back to Gitlab, and then submit on Gradescope when completely finished.
For "typing", we will collect volunteer names at the beginning of each class and then each typist will get about 10-12 minutes as we work through the exercise.
The weekly reflections will also be submitted on Gradescope as a PDF. See the weekly reflections page for more details on what to include
The class will be graded on an additive points system.
In total, there are roughly 2250 points available, assuming you are a typist once and not including any debugging post mortems.
The course is not curved. Your grade on a 4.0 scale is computed by the following formula.
In other words, your grade will be computed by the following table:
Points | Grade on 4.0 scale |
---|---|
≥2135 | 4.0 |
≥2074 | 3.9 |
≥2013 | 3.8 |
≥1952 | 3.7 |
≥1891 | 3.6 |
≥1830 | 3.5 |
≥1769 | 3.4 |
≥1708 | 3.3 |
≥1647 | 3.2 |
≥1586 | 3.1 |
≥1525 | 3.0 |
... | ... |
≥1342 | 2.7 (grad sat) |
... | ... |
≥ 915 | 2.0 (undergrad sat) |
... | ... |
Every homework has a 48-hour grace period, during which work is accepted without penalty. No credit after the grace period expires.
Note that, unlike some other course policies you might be familiar with, in this class there is no cap on how much total grace time you can use over the quarter. You can use all 48 grace hours on every single homework and still get full credit.
Please read CSE's Academic Misconduct Policy.
You are encouraged to discuss all aspects of the course with and ask for help from the instructor, the TAs, and other students. However, do not cross this line:
Do not share code or written text. Do not look at lab or problem set solutions that might be on the Internet. Do not use someone else's code or text in your solutions or responses.
It is ok to share ideas, explain your code at a high level to someone to see if they know why it doesn't work, or to help someone else debug if they've run into a wall.
Anonymous feedback can be sent to the instructor or TAs via
feedback.cs.washington.edu
.