EECS 485: Web Systems Syllabus

The University of Michigan, Fall 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.


Andrew DeOrio and Raed Almomani

Remote Instruction

Due to COVID-19, EECS 485 will be remote this semester. You can complete the the entire course from anywhere in the world.

Many web programmers work remotely even in normal times. We see this as the bright side of a remote semester of Web Systems.


Lectures will be short videos released twice a week. During regularly scheduled lecture time, Prof. DeOrio and Prof. Almomani will host Lecture Q&A video conferences to discuss the lecture material.

Reasoning: Unfortunately, no more than 50 people are allowed in a room. All our lectures are bigger than 50 people.


Projects will be completed in groups and turned in to an autograder. Groups will use Git to share code, and the communication technology of their choice. If you'd like, we'll help you find a group based on preferences like time zone.

Reasoning: Most aspects of the programming projects were already remote!


Labs will be completed remotely in optional groups. Expect hands-on tutorials that teach useful web tools and help you get started on projects. During regularly scheduled lab time, IAs and GSIs will host office hours to help with the labs.

Reasoning: There's a shortage of rooms big enough to maintain a minimum 6 ft. between individuals. The rooms where we used to hold labs aren't big enough for physical distancing. As a side note, COVID was good motivation to improve our labs. We're planning to provide more project help during lab, and some cool cloud compute tutorials on AWS.


Exams will be completed remotely and be similar in format to our practice exams.

Reasoning: In-person exams would exceed the 50 people in a room guideline. On the bright side, this forced us to move to an open note/book/Google exam policy.

Office hours

Office hours will be held via video conference, both one-on-one and in groups.

Reasoning: Are in-person office hours really useful if we can't get close enough to see your computer screen?

Computer and network recommendations

Make sure you have a laptop consistent with CAEN recommendations.

Test your internet connection with the U-M Custom Speedtest website and make sure it meets the minimum requirements for any UM service. You'll need more bandwidth if there will be multiple simultaneous users in your household.

Resources for help with computing equipment:


Please direct technical questions to our Piazza forums linked from For other questions, email


EECS 485 is a contemporary exploration of modern web systems. The course integrates concepts from multiple computer science disciplines used in the design, development, and deployment of web applications and services.

While broad in scope, this course will cover several key concepts in depth, including: web applications, web services, web search, web-relevant security issues, and scalable web infrastructure. Students will use technologies such as HTTP, HTML, CSS, JSON, Python, JavaScript, asynchronous programming, map reduce and others.

Projects include life-like web applications that mimic a social network like Instagram or Facebook, and a search engine like Google or Bing. Project implementions use open source components on Linux-based web servers.

At the end of this course, students will understand the science behind web-based information systems and the 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 constituent technologies. By the end of this course, successful students will be able to:


The prerequisite for EECS 485 is EECS 281.

This course requires substantial independent learning. Programming languages and libraries will not be a major topic of lectures. Independent learning of HTML, CSS, SQL, Python, Javascript, and several libraries and frameworks will be required.


There is no comprehensive textbook. Optional books include:

JavaScript: The Good Parts, 1st Edition, by Douglas Crockford. O’Reilly, 2008. University of Michigan Library digital access.

Flask Web Development: Developing Web Applications with Python by Miguel Grinberg, O'Reilly. University of Michigan Library digital access.

Website (

The first place to go for any course materials or resources is our course website at All course materials and assignments are made available there, and are considered required reading. A detailed schedule, including lecture topics, assignment due dates and exam dates, is also available there. Other resources such as Piazza, and the Autograder are linked from the site.


See the course website,


Our course forum will be on Piazza and linked from Read it regularly for announcements.

Do not post solutions, project code, test cases, or output to the forum. Doing so is considered a violation of the Honor Code.


This course contains 5 programming assignments. The first is individual, and the remainder are in groups of 2 to 3. You may modify group membership between projects. If you need help forming a group, contact the staff.

All team members will normally earn the same grade on a project. We may adjust the grades of students who substantially under-participate based on feedback from their group members.

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


There will be a lab each week. Labs will be hands-on tutorials that teach useful web tools and help you get started on projects. Each lab will be graded on short questions at the end of the lab.

Complete labs and lab questions in optional groups of 2-3. You may modify lab group membership between labs.


There will be one midterm and one final examination. Exams will cover material from lecture, lab and projects. There will be no make-up exams. The exam dates are posted on


Your grade for the class will be determined by the following weighting. Updated 2020-08-19 to reduce exam weight.

Assignment Percentage of Grade
Programming Projects 5 projects x 10% each = 50%
Labs 10%
Midterm Exam 20%
Final Exam 20%
Total 100%

To pass EECS 485, your average project score must be a passing score, and your average exam score must be a passing score.

Regrade Requests

If you believe we graded an assignment of yours incorrectly, you can submit a regrade request no later than one week after the graded work is first returned to students. The deadline for the final will be shorter due to the need to submit final grades. Regrade requests must be submitted in writing via GradeScope or email.

Due Dates

Due dates are written on each assignment. Late assignments will receive a zero. We will consider extension requests made in person and at least 2 weeks in advance. Additionally, we will consider requests for documented, unanticipated medical or personal emergencies. If you can't see the instructor in advance due to the emergency, then see him/her as soon as you possibly can. In all cases, we require documentation of nature and the date of the emergency.

Academic Integrity

You may give or receive help on any of the concepts covered in lecture, lab, or the textbook, and on the specifics of the language or library syntax. You are allowed to consult with other students in the class to help you understand the assignment specification (the definition of the problem).

You may not collaborate in any way with people outside your group when constructing your solution; your group working alone must generate the solution to a programming assignment and must submit your code for grading together (i.e. your partnership may only submit one version of your code for grading). You are not allowed to work out the programming details of the problems with anyone outside your own partnership or to collaborate to the extent that your programs are identifiably similar. You may not derive your solution in any way from other solutions. You may not share code outside of your partnership, including making it publicly available in any form (e.g. a public GitHub repository).

If you have any questions as to what constitutes unacceptable collaboration, please talk to the instructor right away. You are expected to exercise reasonable precautions in protecting your own work. Do not let other students borrow your account or computer. Ensure that the computers you use to access project code are password protected. Do not leave your program in a publicly accessible directory, neither during the semester, nor after. Take care when discarding printouts. You are still responsible for following these rules even after finishing the course.

We report suspected violations to the Engineering Honor Council. To identify violations, we use both manual inspection and automated software to compare present solutions with each other and with prior solutions. The Honor Council determines whether a violation of academic standards has occurred, as well as any sanctions. Read the Honor Code for detailed definitions of cheating, plagiarism, and other forms of academic misconduct

Accommodations for Students with Disabilities

If you think you need an accommodation for a disability, please let your instructor know during the first three weeks of the semester. Some aspects of this course may be modified to facilitate your participation and progress. As soon as you make us aware of your needs, we can work with the Services for Students with Disabilities (SSD) office to help us determine appropriate academic accommodations. SSD (734-763-3000; typically recommends accommodations through a Verified Individualized Services and Accommodations (VISA) form. Any information you provide is private and confidential and will be treated as such.

Commitment to Equal Opportunity

As indicated in the General Standards of Conduct for Engineering Students, we are committed to a policy of equal opportunity for all persons and do not discriminate on the basis of race, color, national origin, age, marital status, sex, sexual orientation, gender identity, gender expression, disability, religion, height, weight, or veteran status. Please feel free to contact us with any problem, concern, or suggestion. We ask that all students treat each other with respect.