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
- Fundamentals of HTML5, CSS3, and JavaScript/ES6 for front-end programming
- Visual design, accessibility requirements, and assistive technologies
- Mobile website development
- Essentials of HTTP 1.1 and 2.0
- Server-side page rendering and the LAMP stack
- Database-driven application development
- Content Management Systems
- REST API development
- Single-page application development in React
- Debugging tools and techniques
Contact Info and Office Hours
Lecturer - Trevor Austin (trevoraustin@cs.uchicago.edu)
TAs - Abhyas Mall (mailto:abhyas@uchicago.edu)
Office Hours
- To be decided soon
Video links for hours are in the Zoom Tab on Canvas
Textbooks
- MDN Web Docs: https://developer.mozilla.org/en-US/
- SQLite Documentation: https://www.sqlite.org/docs.html
- Node Documentation: https://nodejs.org/en/docs/guides/
- Python Documentation: https://www.python.org/doc/
- Flask Documentation: https://flask.palletsprojects.com/en/2.0.x/
- React Documentation: https://reactjs.org/docs/getting-started.html
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.