EECS 485: Web Systems

Summer 2020

A holistic course of modern web systems and technologies, covering front end and back end. Build an Instagram clone in the first half of the semester, and a Google clone in the second.


Course Meetings

The course will consist of live lectures and discussion/lab sessions. We will be using Zoom. All lectures and discussions/labs will be recorded and posted to Piazza.

The recordings are managed in a thread on Piazza. The lecture slides will be posted on the schedule below and on the public Google drive.

Course Resources

There are several resources you should be aware of this semester:

Course Staff

Kevin Leach

Primary Instructor

Office Hours:
MW 4 - 5pm Eastern time

Windows 10, Linux

Emily Bao

Graduate Student Instructor

Office Hours:
MRF 9am - 12pm
MW 7pm - 10pm
(all Eastern time)

Andrew Wei

Instructional Assistant

Office Hours
MTW 10am - 12pm
WF 10pm - 12am
(all Eastern Time)

Online Event Calendar

Open calendar in new window

Deadlines and Schedule of Topics

This table will be updated regularly with links to slide decks.

Wed Jul 1 Introduction (Slides) Class Begins
Thu Jul 2 Web Basics (Slides)
Mon Jul 6 Dynamic Pages (Slides)
Tue Jul 7 Sessions (Slides)
Wed Jul 8 Encryption (Slides)
Thu Jul 9 Web Security (Slides)
Fri Jul 10 Project 1 Due
Mon Jul 13 REST APIs (Slides)
Tue Jul 14 Javascript 1 (Slides)
Wed Jul 15 Javascript 2 (Slides)
Thu Jul 16 Asynchronous Programming, React, Closures (Slides)
Fri Jul 17 Project 2 Due
Mon Jul 20 Networking (Slides)
Tue Jul 21 Google File System (Slides)
Wed Jul 22 Map Reduce (Slides)
Thu Jul 23 Exam Review
Fri Jul 24 Project 3 Due
Sat Jul 25 Midterm Exam Released
Mon Jul 27 Blockchain (Slides)
Guest lecture by Tadge Dryja
Midterm Due Noon Eastern!
Tue Jul 28 Information Retrieval 1 (Slides)
Wed Jul 29 Information Retrieval 2 (Slides)
Thu Jul 30 Information Retrieval 3 (Slides)
Fri Jul 31
Mon Aug 3 Systems, Processes, Threads, and Sockets (Slides)
Tue Aug 4 Scaling Static and Dynamic Content (Slides)
Wed Aug 5 Machine Learning (Slides)
Thu Aug 6 Recommender Systems (Slides)
Fri Aug 7 Project 4 Due
Mon Aug 10 Ads and Auctions (Slides)
Tue Aug 11 Ethics (Bias moved to 8/12) (Slides)
Wed Aug 12 Bias, TOR, and Dark Web (Slides)
Thu Aug 13 Final Exam Review
Fri Aug 14 Project 5 Due
Sat Aug 15 Final Exam Released
Mon Aug 17 Career Planning, Interviews Final Exam Due Noon Eastern!
Tue Aug 18 Class Ends
Project 5 Due (no late submissions allowed)
Fri Aug 21


Course Summary: This course is a contemporary exploration of modern web-based information systems. It willintegrate concepts from multiple computer science topics used in the design, development, anddeployment of web-based applications, services, and knowledge systems. While broad inscope, it will also cover several key concepts in depth, including: web networking protocols, webdatabases and applications, web services, web search, web-relevant security issues,web infrastructure, and web-relevant data mining. Students will learn how to incorporate theseconcepts into an engineering process that includes design, analysis, development and testing,using technologies such as HTTP, XML, JavaScript, AJAX, and others.

Students will form teams to implement assignments on Linux-based web servers usingopen-source components. These assignments will culminate in students implementing their ownlarge-scale web search engine, roughly comparable to Google or Bing. At the end ofthis course, students will understand the science behind web-based information systems andthe engineering principles for building them.


This course is about the design and development of information systems in wide area networks.Its primary goal is to take a holistic view of modern web systems and their constituenttechnologies. By the end of this course, successful students will be able to:


Students are required to have taken EECS 281.


There is no required textbook for this course. Optional sources include:

Course Communication

Piazza should be your primary resource for communicating with course staff. You are allowed to ask general questions, however, you must not post your own entire solutions to projects (doing so is a violation of the Honor Code). Please make private posts if you are unsure whether your question contains too much sensitive code.

You can also use the course Slack to communicate with each other and with course staff. However, this is not a guaranteed method of communication (e.g., Kevin may not respond immediately to Slack posts or Direct Messages).

If you have a private issue to discuss, email Kevin Leach (your primary instructor) at Also Cc Emily and Andrew. Please put EECS 485 in the subject line of any email-based correspondence.

Course Projects

This course contains 5 programming assignments. The first is individual, and the remainder are in optional groups of 2 to 3. You can form a different group for each project. Course staff will randomly assign a group if you like. Groups are recommended, but not required.

All team members will normally earn the same grade on their joint work. At the end of each group assignment, we will ask each group member to describe and evaluate the contributions ofother group members. Based on this feedback, we may adjust the grades for students whosubstantially under-participate in projects to reflect their actual level of participation. In case of disputes regarding participation, an instructor may examine commit logs and/or interview group members on the project’s design and implementation.

For those retaking the course: if you submitted a project in a previous term, you may not be in agroup for that same project this term.


There are two exams this semester (see the Calendar). These cover all lecture, discussion, and project materials.

Exams will be delivered remotely. You will download a package containing an Exam PDF and a text file in which to supply answers. You will upload your answer file to a special URL (to be determined). You will have two hours to complete your exam after you download it. You are responsible for downloading, completing, and uploading your own exam.

Exams are open notes and internet, but you cannot discuss any part, question, or concept on the exam with anyone else. If you have a question, you must make a private Piazza post, a slack DM to course staff, or an email to course staff. Any communications during the exam window aside from those with course staff are considered an Honor Code violation.


From time to time, we will administer quizzes via GradeScope to ensure that you are staying on top of the material. These quizzes are trying to make sure you do not binge watch lecture recordings at the last minute. Quizzes will be released after lecture, and will be due before lecture the next day (due at 1:30PM eastern time the following day). There are no extensions or make ups for quizzes, and absolutely no late quizzes accepted. There are four types of quizzes:

Late Policy

The late policy is established only for Projects. We will not accept late quizzes. If you have an extenuating circumstance (bereavement, illness, etc.), then you must provide documentation. Extensions for projects are given at the discretion of course staff. Similarly, we may grant extensions on Exams based on unforeseen emergencies.

If you do not have a documented extenuating circumstance, then late submissions for Projects will be penalized by h% for h hours submitted late. For example, if you submit a Project 48 hours after the deadline on the course calendar, then we will remove 48% from your final score for that specific project. It is your responsibility to know the project deadlines and how late you are submitting.


Your grade is computed as follows

AssignmentPercentage of Grade
Programming Projects10% each (50% for all 5)
Exam 120%
Final Exam20%

To pass the course, you must receive a passing average Project score and a passing average Exam score. By default, the treshold for "passing" is 70%. However, if exam averages are lower than 80%, the passing threshold for the exams will be lowered to one standard deviation below the average exam score.


As a remote and compressed course, you are expected to comport yourself professionally. By default, you will be given your Professionalism points at the start (5% of your grade). There are three ways to lose your five Professionalism points.

At the instructor's discretion, if you receive a 0 on your Professionalism score, we reserve the right to give you a failing grade.