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 5 features in their browser. The first feature is the core content of the 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 4 features are exercises that extend the core feature of the week with additional functionality. These 4 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
mjoshi3@cs.washington.edu
yijied@cs.washington.edu
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: browser programming, driving during group exercises, and debugging worksheets.
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.
For "driving", James will track who has driven, probably in Canvas.
The debugging worksheet can be submitted through this form.
The class will be graded on an additive points system.
In total, there are roughly 1100 points available, assuming you drive once and fill out 50 points of debugging worksheets.
The course is not curved. Your grade on a 4.0 scale is computed by the following formula. \[ \min\left( \left.\left\lfloor\frac{\mathrm{points}}{24}\right\rfloor \middle/ 10 \right.,\ 4.0 \right) \] In other words, your grade will be computed by the following table:
Points | Grade on 4.0 scale |
---|---|
≥960 | 4.0 |
≥936 | 3.9 |
≥912 | 3.8 |
≥888 | 3.7 |
≥864 | 3.6 |
≥840 | 3.5 |
≥816 | 3.4 |
≥792 | 3.3 |
≥768 | 3.2 |
≥744 | 3.1 |
≥720 | 3.0 |
etc. | ... |
This grading scheme may be somewhat unfamiliar to you. We will discuss it on the first day of lecture. Be sure you understand it, and feel free to ask any questions about it.
An important consequence the additive points-based grading scheme is that there is a sense in which every assignment is optional. You are most welcome to select a grade to target and strategically decide to simply not turn in assignments whose points you do not need.
If you are taking the class S/NS, note that per university policy, undergraduates receive S credit for any grade 2.0 or higher, while graduate students (including BS/MS students) receive S credit for any grade 2.7 or higher. Thus, an undergraduate would need to earn at least 480 points to receive S credit, while a graduate student would need to earn at least 648 points to receive S credit.
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.
If you have an extenuating circumstance that causes you not to be able to complete the work on time, please contact the staff. Often, we are able to work something out that is agreeable to everyone involved.
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 homework 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 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.