CS 4288: Web Systems (Section 02; Leach)

Fall 2025

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.

Syllabus

Note well: This site only applies to section 02 of CS4288/5288.

Important note for VU students. There are two sections of CS4288/5288. Professor Graham Hemingway teaches section 01. Professor Kevin Leach teaches section 02. This website is only for Leach's section. The materials, lectures, assignments, deadlines, quizzes, and exams are all different between the sections.

If you are not in section 2 (class number "10245" on YES), then please refer to Prof. Hemingway's materials.

Course Meetings

Course Resources

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

Course Staff

Kevin Leach

Primary Instructor

kevin.leach@vanderbilt.edu

Office Hours:
MW after class until 5p CT*
Sony 4110 (or in classroom)

Windows 11, Linux

Skyler Grandel

Graduate Teaching Assistant

skyler.h.grandel@vanderbilt.edu

Office Hours:
TR 2:30p - 4:00p CT
Sony 4120

Windows 11, Linux

Online Event Calendar

Open calendar in new window

Deadlines and Schedule of Topics

Date Content Deadline
Wed Aug 20, 2025 Introduction (slides) Class Begins
Mon Aug 25, 2025 Web Basics (slides)
Wed Aug 27, 2025 Dynamic Pages (slides)
Fri Aug 29, 2025 Last day to add/drop classes.
Mon Sep 1, 2025 Sessions (slides)
Wed Sep 3, 2025 Encryption (slides)
Fri Sep 5, 2025 Project 1 Due
Mon Sep 8, 2025 Web Security (slides)
Wed Sep 10, 2025 REST APIs (slides)
Fri Sep 12, 2025 Project 2 Due
Mon Sep 15, 2025 Javascript 1 (slides)
Wed Sep 17, 2025 Javascript 2 (slides)
Mon Sep 22, 2025 Asynchronous Programming, React, Closures (slides)
Wed Sep 24, 2025 Networking (slides)
Fri Sep 26, 2025 Project 3 Due
Mon Sep 29, 2025 Google File System (slides)
Wed Oct 1, 2025 Midterm Exam Midterm Exam
Mon Oct 6, 2025 Optional: Career Development
Wed Oct 8, 2025 Fall Break - No Class
Mon Oct 13, 2025 Map Reduce (slides)
Wed Oct 15, 2025 Systems, Processes, Threads, and Sockets (slides)
Mon Oct 20, 2025 Information Retrieval 1 (slides)
Wed Oct 22, 2025 Information Retrieval 2 (slides)
Fri Oct 24, 2025 Project 4 Due
Mon Oct 27, 2025 Information Retrieval 3 (slides)
Wed Oct 29, 2025 Scaling content + Blockchain, ft. Skyler
(Kevin at DIGIHEALS PI meeting)

Mon Nov 3, 2025 Scaling Static and Dynamic Content (Slides, these are the same as above)
Wed Nov 5, 2025 Scaling Static and Dynamic Content ft. virtualization and datacenters (Slides, these are the same as above)
Mon Nov 10, 2025 Machine Learning (slides)
Wed Nov 12, 2025 Recommender Systems (slides)
Mon Nov 17, 2025 Auctions / Ethics (slides)
Wed Nov 19, 2025 TOR and the Dark Web (slides)
Fri Nov 21, 2025 Project 5 Due
Mon Nov 24, 2025 Thanksgiving Break - No Class
Wed Nov 26, 2025 Thanksgiving Break - No Class
Mon Dec 1, 2025 TOR Wrap up / Enshittification (slides)
Wed Dec 3, 2025 Final Exam Review
Sat Dec 6, 2025 Final Exam (9:00 AM Central) Final Exam
Mon Dec 8, 2025 Class Ends
Absolutely all course material must be turned in!

Syllabus

Course Summary: This course is a contemporary exploration of modern web-based information systems. It will integrate concepts from multiple computer science topics used in the design, development, and deployment of web-based applications, services, and knowledge systems. While broad in scope, it will also cover several key concepts in depth, including: web networking protocols, web databases and applications, web services, web search, web-relevant security issues,web infrastructure, and web-relevant data mining. Students will learn how to incorporate these concepts 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 using open-source components. These assignments will culminate in students implementing their own large-scale web search engine, roughly comparable to Google or Bing. At the end of this course, students will understand the science behind web-based information systems and the engineering principles for building them.

Objectives

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:

Prerequisites

Students are required to have taken CS 3251.

Textbook

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

Why is this section different from Prof. Hemingway's?

There are three primary reasons:

First, I previously taught EECS 485 at the University of Michigan. This is a course that routinely serves approximately 600 students per semester, and has been around since 2017. As such, thousands of students have gone through this version of the course, and I thoroughly believe it is a well-tested, rigorous, and valuable course to you as a student. Moreover, it is already familiar to me, and thus easier to prepare for and to accommodate student questions.

Secondly, I am absolutely convinced that it is important to future-proof students by providing access to materials and practice with relevant technology and best practices that will aid you throughout your career. While this is primarily a web systems course, I am under no delusion that most students will not end up in full-stack development careers. As such, I would rather expose you to a broader set of technology and practices.

As an example, this version of the course uses Python Flask as the backend for the project assignments. Prof. Hemingway's version of the course uses a nodejs backend. While both are great technologies, I would rather expose students to Python as it is, in my opinion, more broadly applicable. For example, if a student decides to pursue machine learning, a safe bet is that they will have to touch pytorch or tensorflow, which are both Python libraries.

Third, I am a big believer in oracle/comparator testing. This is the industry standard for software development in industry, and is how junior engineers spend a huge amount of their time. As such, I would rather expose you to strict autograded assignments that encourage you to develop rigorous testing infrastructure for your projects and assignments. I am convinced that this is the best way to prepare students to enter the job market and gain value from their education.

Course Communication

Piazza is the 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.

If you have a private issue to discuss, email Kevin Leach at kevin.leach@vanderbilt.edu and Cc our TA Skyler. Please put CS 4288 in the subject line of any email-based correspondence about this course.

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. You are expected to resolve conflicts that may arise with your group members. The course staff may ask group members about each member's contributions if conflicts arise.

You must register your groups on the autograder before you submit. If you attempt to submit assignments and form a group later, we may not grade your assignment submission.

The autograder will show you your grade for each assignment. You have 5 submission tokens per day. After you run out of tokens, you cannot submit any more for a grade. This is meant to encourage you to test locally before submitting (e.g., to reflect industrial practice of testing software before shipping it to the customer).

Exams

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

A midterm exam will be administered during a course lecture slot. The final exam will be comprehensive and take place on our scheduled slot of Saturday, December 6, at 9am (sorry!).

During exams, you are allowed to refer to a single sheet of notes, front and back, on letter paper, 8.5"x11". You can use this sheet however you like, typed or handwritten, etc. You may not use electronic devices during exams.

Quizzes

From time to time, we will administer quizzes to ensure that you are staying on top of the material. There are no extensions or make ups for quizzes, and absolutely no late quizzes accepted.

Late Policy

The late policy is established only for Projects. We will not accept late quizzes. The autograder provides up to 4 late day tokens that you can use throughout the semester. If you want to submit a Project late, each day late you submit will consume 1 late day token. Note that students have their own late day tokens; thus, a group submission will use a late day token from each member. If group members have different numbers of late day tokens, then only those members with a token remaining will be able to receive a grade for the late submission.

To the extent possible, you must let us know in advance if you need to delay taking an exam.

Please contact the course staff via Private Piazza post or via email (to both Kevin and Skyler with CS4288 in the subject line) if you have some other extenuating circumstance (e.g., illness, bereavement). We may make extensions or other arrangements for students with such circumstances.

It is your responsibility to know the project deadlines and how late you are submitting.

Grading

Your grade is computed as follows

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

To pass the course, you must receive a passing average Project score and a passing average Exam score. By default, the threshold 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.

Participation

The Participation component of the grade is primarily used to reward students for in-class participation and participation in the Piazza. We may take attendance each class from time to time, provide extra credit to students who attend class, and give credit to students who contribute meaningfully to the Piazza forum.

Student Accommodations and Disabilities

Please let the course staff know in advance if you require accommodations for exams. We require you to submit accommodation requests at least 2 weeks before each exam.

We do not provide accommodations for quizzes.

Research Data

As a research university, we may collect data about your completion of assignments in anonymized or de-identified form for aggregate analysis. If you would not like to participate in any research, please let the instructor know via email at kevin.leach@vanderbilt.edu.

Honor Code Policy

This course is adapted from another course at the University of Michigan, which has successfully been taught since 2017 to thousands of students. It is possible that you come across online materials that relate to this course. Although the material changes every semester, we do retain every single submission ever made by any student who ever took this course. We will use automatic plagiarism detection software (take CS3276 for more information about why software plagiarism detection is feasible). Please do not use online repositories of similar project code -- odds are, we almost certainly know about it and will discover your use of it.

Generative AI Policy

Generative AI and Large Language Models are disruptive technologies that provide increasingly fascinating capabilities. While I am not opposed to attempts to use LLMs for completing the Projects, I will note the following caveats: