CSE 493X: 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 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.

  • On the previous Friday, Gilbert covers background material.
  • Students should read the book chapter before class on Monday.
  • In lecture on Monday, Gilbert 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 typing 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 exercises.

Week 1 and Week 10 are a little different. See the schedule.

There are no quizzes or exams.

Lectures may be recorded and made available to all students. They may also not be recorded. Lecture notes will definitely be available for those who cannot attend a given lecture.

Course Resources

Course Staff

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.

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.

Please note that the staff all have busy lives. Do not assume that you will get responses more quickly than 24 hours from when you ask a question. (though we will try to be responsive) Likewise, do not assume that staff will respond on weekends. (This is a good reason to get assignments done by Friday.)

Assignments

There are three kinds of assignments in this class:

  • The browser project, including code and tests
  • Leading group work in class by being our typist (optional)
  • Debugging Post Mortems (optional)

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 or section in which students live code. Then each typist will get about 10-12 minutes as we work through the exercise.

The debugging post-mortems can be submitted using a form provided on the debugging post-mortem page.

Grading

The class will be graded on an additive points system.

  • Each week's browser project is worth 210 points, divided evenly across N+1 features (1 "core" plus N exercises, where N is usually between 4 and 6).
    • You must pass all the tests for a feature to get the points for that feature. If you do not attempt the feature, you get 0 points for that feature. If you attempt the feature but do not pass all the tests, you get half credit.
  • Being a typist for a session is worth \(45\cdot\left(2\middle/3\right)^{n-1}\) where \(n\) is the number of times you have driven. In other words, the first time you type, \(n=1\) so you get 45 points. The second time you get 30 points. The third time 20 points, and the fourth time 13ish points.
  • We give priority when seeking volunteers to students who have not typed yet.
  • If you submit the optional debugging post mortem, then you can earn up to an additional 45 points subject to staff discretion. (Short/contentless post mortems will earn substantially less than 45 points.)

In total, there are roughly 2100 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.

\[ \min\left( \left.\left\lfloor\frac{\mathrm{points}}{58}\right\rfloor \middle/ 10 \right. + 0.6,\ 4.0 \right) \]

In other words, your grade will be computed by the following table:

Points Grade on 4.0 scale
≥1972 4.0
≥1914 3.9
≥1856 3.8
≥1798 3.7
≥1740 3.6
≥1682 3.5
≥1624 3.4
≥1566 3.3
≥1508 3.2
≥1450 3.1
≥1392 3.0
... ...
≥1218 2.7 (grad sat)
... ...
≥ 812 2.0 (undergrad sat)
... ...

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.

Academic Honesty

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.

AI Tools

Chatbots powered by LLMs and LLM-powered code completion features in text editors have become very popular. Many of you probably use Co-pilot or ChatGPT. Here is our policy on what is and is not allowed.

  • Be Honest If you make use of one of these tools, please write to the staff and tell us that you did so. Please tell us how you used that tool. This will help us improve our AI policy. Even if we have to ask you to change how you are using one of these tools, you cannot get in trouble for being honest. You can get in a lot of trouble if you use these tools without telling us.
  • The old rules still apply It is definitely ok to use a chatbot as a replacement for a search engine. In this case, the same rules apply as for any other content you find on the web. e.g. you should not copy code from an LLM without attributing that source.
  • Use your common sense It is not ok to ask an LLM (via a chat or co-pilot) to write your assignment for you, in whole or in (substantial) part. This applies to both code and debugging post-mortems.

Consequences and Enforcement

I do not want to waste my time or your time policing you, trying to catch cheaters, etc. We're all here to learn and we're all adults. So by default I am going to trust you. This trust is sacred. Do not violate it.

The upside of the trust approach is that we don't waste time trying to catch cheaters, and you don't waste time trying to prove you're not a cheater. The downside of the trust approach is that if I find out you are breaking the rules, you will not get leniency or understanding from me. (e.g. I am happy to fail anyone caught cheating from the class.)

Anonymous feedback

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