Syllabus for Web Development - Spring 2026

Course Description

This course is intended to prepare students with a general programming background to work on teams producing modern web applications. Students will learn a strong foundation of core web technologies and protocols, an overview of the major design patterns in the history of web development, and a detailed introduction to the current industry standard. We will have an emphasis on learning from publicly-available documentation, so that students are equipped to learn new techniques and frameworks in this rapidly-evolving field.

Specifically, the course will cover content layout and styling with HTML and CSS, dynamically generating page content on the web server, interacting with databases, interacting with remote resources using HTTP and REST, client-side interactivity with modern Javascript, and the creation of single-page applications. This course uses agile software techniques to build real, working software each week. We will work as closely as possible to how software is developed in industry, and all work is asynchronous, open-note and open-internet. Students make individual submissions to assignments, but encouraged to discuss them amongst themselves.

We have a GitHub Organization for the course at https://github.com/UChicagoWebDev. I will be posting lecture notes and slides there, at https://github.com/UChicagoWebDev/course_materials.

We have a Slack channel #web-development on the UChicago CS Slack for the course that everyone should join and use. That's the best place to ask questions about course content, so that the whole class can benefit from the answers.

Course Contents

Contact Info and Office Hours

Lecturer - Trevor Austin (trevoraustin@cs.uchicago.edu)

TAs - Abhyas Mall (mailto:abhyas@uchicago.edu)

Office Hours

Video links for hours are in the Zoom Tab on Canvas

Textbooks

Assignments and Grading

Students will be expected to complete small assignments in class ("Labs") and more substantial take home exercises ("Exercises") due the next week before class. There are 9 weekly take-home exercises, with the last one due on the last day of finals week: https://canvas.uchicago.edu/courses/71107/assignments. There is no final project or final exam.

Grading Policy

Because of our focus on writing working applications, this course can be a lot of work. But the material is accessible and the grading relatively generous. Grades are not curved in this class, and there is no reason every student could not receive an A. Instead they are based on the percentage of all possible points students have earned on their labs and exercises: - 90.0/93.0%: A-/A - 80.0/83.0/87.0: B-/B/B+ - 70.0/73.0/77.0: C-/C/C+ - Below 70.0: Dealt with on a case-by-case basis

Late Policy

In-class exercises and quizzes are due at 8:30 pm. Take-home exercises are due at 5:00pm on the day of the next class session. Work that is submitted after the deadline without an extension is subject to a 1 point penalty per day. Start early. Extensions must be granted before the deadline, and requests will be regarded more favorably the sooner they are made and the earlier your git history for the assignment begins.

Extra Credit

1 point per course session of extra credit may be awarded at the instructor's discretion for significant contributions to in-class discussion.

Collaboration and AI Policy

I strongly encourage students to collaborate on exercises together. Additionally, students may access any resources they find helpful, including online documentation, discussion boards, and generative AI models like ChatGPT or PhoenixAI. For maximum learning (and for consistency with the University's academic honesty policy), we have only two requirements: 1. You must type in your own code yourself and submit it separately. All grades are individual. You simply won't learn anywhere near as much by copy and pasting as you will by typing it out yourself. 1. Your submissions must list anyone you worked with and any sources you consulted (e.g. Stack Overflow, links to an external site, ChatGPT) in their README.md files.

Tentative Weekly Schedule

Web Pages as Documents

Week 1 (1/10/25) - HTML5: Semantic Markup, Elements, Attributes, and the DOM - CSS3: Fonts, Colors, Borders, Ids, Classes, the Box Model, the Inspect panel - Exercise #1: Static Pages: A Resume

Week 2 (1/17/25) - HTML5 Accessibility, Screen Readers, Visual Alerting, Captioning - CSS3: Media Queries, Mobile-First Design, Icons, Web Fonts, Modern Layouts with Border-Box, Flexbox, and Grid - CSS Frameworks - Exercise #2: Advanced Layout: a Landing Page

Web Pages as Catalogs

Week 3 (1/24/25): - HTTP Network Basics, CRUD Operations, URL Parameters, Forms and Validation - Intro to the LAMP Stack and Flask - Intro to Databases - Exercise #3: Web Journal

Week 4 (1/31/25): - Javascript: ES6, Functions, Callbacks, DOM manipulation, Page State - Connecting to REST APIs - Advanced Databases - Exercise #4: Mood Board

Web Applications

Week 5 (2/7/25): - Timers, Asynchronous Functions, Promises - Intro to Node - Exercise #5: Watch Party

Week 6 (2/15/25): - Secure Logins - Single-Page Applications - Exercise #6: Watch Party 2: The Single-Page Experience

Week 7 (2/22/25): - Intro to React: Components, Props, State, JSX - Exercise #7: Watch Party 3: Chain Reaction

Week 8 (3/1/25): - Node - Javscript Modules - Typescript - CORS - Exercise #8: Watch Party 4: Just My Type

Week 9 (3/8/25): - Websockets - Security and Cloud Hosting - Exercise #9: Watch Party 5: For Real Time

Course Prerequisites

Students must be fluent in at least one programming language, preferably an object-oriented language. This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp (https://masters.cs.uchicago.edu/page/mpcs-unix-bootcamp) or take the online MPCS Unix Bootcamp Course on Canvas if you do not have familiarity working on the command line in *nix environments.