Primary Instructor
kevin.leach@vanderbilt.edu
Office Hours:
MW after class until 5p CT*
Sony 4110 (or in classroom)
Windows 11, Linux
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.
Note: Kevin will stay after class until 6pm, but only if students are present. Kevin will leave office hours if no students are in the room. Please do not leave and come back before 6pm; Kevin may have left.
Sony 4120
There are several resources you should be aware of this semester:
Primary Instructor
kevin.leach@vanderbilt.edu
Office Hours:
MW after class until 5p CT*
Sony 4110 (or in classroom)
Windows 11, Linux
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
| 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 |
w3Schools HTML Intro
w3schools CSS Intro
Official Python Tutorial
Install web dev tools on your operating system
git and GitLab
Web dev features in popular web browsers
python3 -m venv
pdb and pdb++
pytest
Command line automation
w3Schools SQL Intro
Projects: P2, P3, P5
SQLite Tutorial
Projects: P2, P3, P5
Dynamic pages
Projects: P2, P3, P5
Projects: P2, P3, P5
Projects: P3, P5
curl, HTTPie
Projects: P3, P5
Toolchain, demo
Projects: P3, P5
Headless Chrome
Projects: P3, P5
Projects: P4
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.
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:
Students are required to have taken CS 3251.
There is no required textbook for this course. Optional sources include:
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.
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.
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).
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.
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.
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.
Your grade is computed as follows
| Assignment | Percentage of Grade |
|---|---|
| Programming Projects | 5% each (25% for all 5) |
| Exam 1 | 15% |
| Exam 2 | 15% |
| Final Exam | 20% |
| Quizzes | 20% |
| Participation | 5% |
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).
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.
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.
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.
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 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.