# CSE 490X: Web Browser Engineering

## Course Overview

We will study how web browsers work by building our own web browsers from scratch in python.

## Structure of the course

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.

• On the previous Friday, James covers background material.
• Students should read the book chapter before class on Monday.
• In lecture on Monday, James will highlight some aspects of the book's presentation and live code the week's core feature
• Due Tuesday night: Students submit the core feature.
• In lecture on Wednesday, students take turns driving as the group works on the exercises.
• In section on Thursday, we continue working on the exercises as a group.
• (In lecture on Friday, we begin the background for the following week.)
• Due Friday night: Students submit the four exercises.

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.

## Course Staff

• James Wilcox, instructor, he/him or they/them jrw12@cs.washington.edu
• Jimmy Cheong, TA, he/him c7834@uw.edu
• Mehul Joshi, TA, he/him mjoshi3@cs.washington.edu
• Yijie Deng, TA, he/him yijied@cs.washington.edu

## Staff Contact

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.

• Each browser feature (one core plus four exercises) is worth 20 points. You must pass all the tests for a feature to get 20 points. If you do not attempt the feature, you get 0 points. If you attempt the feature but do not pass all the tests, you get 10 points.
• Driving a session is worth 50 points. Students can drive more than once, but priority is given to those who have driven the least.
• The debugging worksheet is worth a variable number of points to be assigned by course staff on a case-by-case basis. The rough idea is that you can recover about 10 points per hour of "additional" work you put in. But this is a fuzzy concept. The worksheet requires a fairly substantial effort to submit, presenting the situation precisely and reflecting on the experience. A typical worksheet for one exercise that declared 1 or 2 additional hours of work might earn 10-20 points. We estimate that most students will fill out around 3 worksheets throughout the quarter, earning about 50 points.

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:

≥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.

## Late Policy

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.

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

Anonymous feedback can be sent to the instructor or TAs via feedback.cs.washington.edu.