CSCI 40: Computing for the Web
Instructor: R. Teal Witter. Please call me Teal.
Class Times: Mondays and Wednesdays from 1:15 to 2:30pm in Robert Day 126.
Office Hours: Tuesdays from 1:00 to 4:00pm in Adams Hall 213.
Labs: Most weeks have a short lab. Public tests and GitHub Actions give preliminary feedback; instructor-owned tests on Gradescope determine the grade. You keep resubmitting until you score 100%, so a lab is done when it is done.
Quizzes: Short weekly quizzes, taken on paper. They are open-note: bring any printed or handwritten notes you like, but no electronic devices. Each week’s practice bank is linked below; we work through it together in class, and the graded quiz is a short version I hand out on paper the day of.
Projects: Every two to three weeks you build something real: a webpage, a web scraper, your own ChatGPT, a Twitter clone. Projects carry generous extra credit and “choose your own adventure” tasks.
Resources: There is nothing to buy. Each week has a reading in place of a textbook; the primary references are Shay Howe’s Learn to Code HTML & CSS and Al Sweigart’s Automate the Boring Stuff with Python. Course materials are adapted from Mike Izbicki’s CSCI 040.
Course overview: The course starts with a webpage and ends with a working web application. Each project reuses tools from earlier weeks.
- The Web - A few lines of HTML and CSS can turn an idea into a public artifact that anyone with a browser can use.
- Python Foundations - Python gives us a precise way to break repetitive work into small steps a computer can perform reliably.
- Working with Data - Programs can collect, transform, and connect information from different places.
- Web Applications - A web application brings the whole course together by responding to people, remembering state, and producing a new page on demand.
| Date | Topic | Lab | Quiz | Project |
| The Web | ||||
| Mon Aug 31 · Wed Sep 2 | HTML | Hello, Homepage (due 9/9) | Practice · Answers | Project 0 (due 9/16) |
|
|
CSS | Dress It Up (due 9/16) | Practice · Answers | |
| Python Foundations | ||||
| Mon Sep 14 · Wed Sep 16 | Python | Doctests (due 9/23) | Practice · Answers | |
| Mon Sep 21 · Wed Sep 23 | Strings & Files | Video Download & Encodings (due 9/30) | Practice · Answers | Project 1 (due 10/7) |
| Mon Sep 28 · Wed Sep 30 | Exceptions | Cowsay & Password Cracking (due 10/7) | Practice · Answers | |
| Working with Data | ||||
| Mon Oct 5 · Wed Oct 7 | Web Scraping | Trump Tweets & Selector Golf (due 10/14) | Practice · Answers | Project 2 (due 10/21) |
| Mon Oct 12 · Wed Oct 14 | The Shell | The Messy Repo (due 10/21) | Practice · Answers | |
|
|
Objects & Classes | Pull Requests & Classes (due 10/28) | Practice · Answers | |
| Mon Oct 26 · Wed Oct 28 | LLMs | More Project Setup (due 11/4) | Practice · Answers | Project 3 (due 11/11) |
| Mon Nov 2 · Wed Nov 4 | Syntactic Sugar | Wardialing (due 11/11) | Practice · Answers | |
| Mon Nov 9 · Wed Nov 11 | Regular Expressions | Redacted (due 11/18) | Practice · Answers | |
| Mon Nov 16 · Wed Nov 18 | JSON & Alternatives | Rosetta Stone (due 12/2) | Practice · Answers | Project 4 (due 12/2) |
| Web Applications | ||||
|
Mon Nov 23 · |
SQL | APIs & Web Interfaces (due 12/2) | Practice · Answers | Final Project (due 12/16) |
| Mon Nov 30 · Wed Dec 2 | Backend Web Dev | FastAPI App (due 12/9) | Practice · Answers | |
| Mon Dec 7 · Wed Dec 9 | Last Day | Capture the Flag (optional; due 12/16) | Practice · Answers | |
| Wed Dec 16 · 2:00–5:00pm | Final project demos | Final Project (due 12/16) | ||