CS 4288: Web Systems (Section 02; Leach)

Fall 2026

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 "4484" 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

Nikki Leali

Graduate Teaching Assistant

nikki.l.leali@vanderbilt.edu

Office Hours:
M 12:00 - 1:00PM CT, T 1:30 - 2:30PM CT
Sony 4120 or the surrounding common area.

Windows 11, Linux

Online Event Calendar

Open calendar in new window

Deadlines and Schedule of Topics

Date Content Deadline
Wed Aug 26, 2026 Introduction (slides)
Mon Aug 31, 2026 Web Basics (slides)
Wed Sep 2, 2026 Dynamic Pages (slides)
Fri Sep 4, 2026 Last day to add/drop classes.
Mon Sep 7, 2026 Sessions
Wed Sep 9, 2026 Encryption
Fri Sep 11, 2026 Project 1 Due
Mon Sep 14, 2026 Web Security
Wed Sep 16, 2026 REST APIs
Fri Sep 18, 2026 Project 2 Due
Mon Sep 21, 2026 JavaScript 1
Wed Sep 23, 2026 JavaScript 2
Mon Sep 28, 2026

TBA Exam Review

Kevin away at conference

Wed Sep 30, 2026

Exam 1 (in class, proctored by Nikki)

Exam 1
Mon Oct 5, 2026 Asynchronous Programming, React, Closures
Wed Oct 7, 2026 Networking
Fri Oct 9, 2026 Project 3 Due
Mon Oct 12, 2026 Google File System
Wed Oct 14, 2026 Map Reduce
Mon Oct 19, 2026 Systems, Processes, Threads, and Sockets
Wed Oct 21, 2026 Bonus Lecture: Career Development
Thu Oct 22 - Fri Oct 23, 2026 Fall Break
Mon Oct 26, 2026 Information Retrieval 1
Wed Oct 28, 2026 Information Retrieval 2
Fri Oct 30, 2026 Project 4 Due
Mon Nov 2, 2026 Information Retrieval 3 + Exam 2 Review
Wed Nov 4, 2026 Exam 2 Exam 2
Mon Nov 9, 2026 Scaling Static and Dynamic Content
Wed Nov 11, 2026 Scaling Content, Virtualization, Datacenters, Blockchain
Mon Nov 16, 2026 Machine Learning
Wed Nov 18, 2026 Recommender Systems
Mon Nov 23, 2026 Thanksgiving Break — No Class
Wed Nov 25, 2026 Thanksgiving Break — No Class
Mon Nov 30, 2026 Auctions / Ethics
Wed Dec 2, 2026 TOR and the Dark Web
Fri Dec 4, 2026 Project 5 Due
Mon Dec 7, 2026 Enshittification
Wed Dec 9, 2026 Final Exam Review
Mon Dec 14, 2026

Final Exam 2pm - 5pm CT

Class Ends — Absolutely all course material must be turned in!

Final Exam

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:

How does this section differ from Prof. Hemingway's?

Both sections cover the same concepts -- full stack development, including front-end, back-end, and databases. The differences are in the assignments. This section has you reproduce an Instagram clone, a MapReduce server, and a basic search engine.

This section will use the autograder because I am a big believer in oracle/comparator testing. It remains an industry standard practice (even with AI involved), and students will benefit from the process of developing test cases (or guiding an AI to produce relevant test cases).

This section uses Python for the backend. In contrast, Prof. Hemingway's section uses JavaScript (nodejs) for backend. Both are popular, however I believe Python is more broadly applicable. We still cover JavaScript through the frontend (e.g., via React), however I want you to become broadly familiar with technologies relevant to computing, and Python is a huge one.

Regardless of which section you take, we follow the same grading distribution (i.e., very generous) for final grades. You will also be equally prepared to take the follow on project course if you like.

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 Nikki. 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 Nikki 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 Projects5% each (25% for all 5)
Exam 115%
Exam 215%
Final Exam20%
Quizzes20%
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%. We may lower the threshold depending on exam and assignment outcomes (i.e., we will only ever make it easier to earn a better grade).

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, you are absolutely required to disclose how you use them. Failing to disclose your use of generative AI is a violation of the honor code and will result in a referral to the honor council.