Backend Web Architecture
Spring 2026 β’ UC Berkeley School of Information
Lecture
Monday, 9:00 AM - 11:00 AM
210 South Hall
Lab
Friday, 9:00 AM - 10:00 AM
210 South Hall
Instructor
Kay Ashaolu
Email: kay@ischool.berkeley.edu
Office Hours: Tue/Thu 4:00-4:30 PM (Virtual)
Announcements
Week 7: SQLAlchemy & Migrations Materials Available
Week 7 lecture slides on SQLAlchemy and database migrations are now available. This week covers persistent data storage with Flask-SQLAlchemy and schema evolution with Flask-Migrate.
The Week 7 In-Class Exploration (Library Book Manager) is ready. You'll convert an in-memory Flask API to use SQLAlchemy.
Also: Week 6 lecture recording is now posted.
Check this website regularly for the latest course updates, materials, and announcements.
Course Overview
This course is a survey of technologies that power the server-side of web applications. We will explore Python, REST APIs, databases, containerization, authentication, async processing, and system design principles that enable scalable backend systems.
π How This Course Works
πΉ Video Prep (2 hrs/week): Watch focused O'Reilly video chapters before each Monday lecture to learn core concepts at your own pace
π₯ Monday Lectures: Recap prep material, introduce advanced concepts, and practice with hands-on in-class exercises for immediate feedback
π§ͺ Friday Labs: Apply the week's concepts through guided exercises that reinforce learning and prepare you for assignments
π¨ Two Major Assignments: Build complete backend applications - REST APIs with databases and authentication
π― Learning Path: Master fundamentals β Practice in class β Reinforce in labs β Apply in assignments β Design scalable systems
Learning Objectives
- Build RESTful APIs using Python (Flask) following industry best practices
- Design and implement relational databases with SQLAlchemy ORM
- Implement secure authentication and authorization using JWT
- Containerize applications using Docker and docker-compose
- Process background tasks asynchronously with Redis and task queues
- Apply system design principles to architect scalable backends
- Deploy backend applications to cloud platforms
Prerequisites & AI Policy
- INFO 153B: CS 61A or equivalent programming experience
- INFO 253B: Familiarity with programming in at least one language
π€ AI Usage Policy
- Assignment and Lab Initial Submissions: NO AI (build fundamentals)
- Assignment Resubmissions: AI encouraged for enhancements
- Final Projects (253B): AI encouraged
- Take-Home Final (153B): AI encouraged
- Extra Credit Exam: AI encouraged
In-Class Explorations
Throughout the semester, a number of lectures will include in-class explorations. These are hands-on exercises designed to reinforce the concepts covered in that day's lecture.
- Explorations are meant to be completed during class time
- Graded on a Pass/No Pass basis
- Pass: You worked on the exploration and showed evidence of engagement
- No Pass: You did not work on the exploration
- Correctness is NOT graded - we are looking for evidence of exploration and effort, not perfect solutions
Assignment Structure
Assignment 1: Task Manager REST API
Build a REST API for a Task Manager with full CRUD operations
Focus: Flask routes, HTTP methods, JSON responses, error handling
Timeline: 2-week window (Week 4-6)
Assignment 2: Production Task Manager API
Build a production-ready API with database, validation, and background tasks
Focus: SQLAlchemy, Marshmallow validation, Redis/rq, Docker Compose
Timeline: 3-week window (Weeks 8-11)
Grading
INFO 153B (Undergraduate)
| In-Class Explorations | 10% |
| Labs (6 graded: Lab 1-6) | 40% |
| Assignments (2 total) | 30% |
| Take-Home Exam | 20% |
*Lab 0 ungraded; lowest 2 lab grades dropped
INFO 253B (Graduate)
| In-Class Explorations | 10% |
| Labs (4 graded: Lab 1-4) | 20% |
| Assignments (2 total) | 30% |
| Final Group Project | 40% |
*Lab 0 ungraded; lowest 1 lab grade dropped
π View Letter Grade Ranges - See how numerical grades map to letter grades
π View Detailed Syllabus - Complete syllabus with all course policies
Course Schedule
All students complete 2-hour video prep before each Monday lecture. Videos are from the O'Reilly course "REST APIs with Flask and Python in 2024" with chapters listed below.
| Week | Topic | Prep Materials | 153B Friday | 253B Friday | Important Notes |
|---|---|---|---|---|---|
| 1 Week of 1/26 |
Course Introduction | πΉ Recording |
|
Lab 0: Environment Setup | Lab 0: Environment Setup | π Mandatory Form |
| 2 Week of 2/2 |
Python Fundamentals | πΉ Recording |
|
Lab 1: Python Practice | Lab 1: Python Practice | In-Class Exploration |
| 3 Week of 2/9 |
REST APIs with Flask | πΉ Recording |
|
Lab 2: Flask API | Lab 2: Flask API | In-Class Exploration |
| 4 Week of 2/16 |
NO LECTURE |
|
Assignment 1 Review | Assignment 1 Review | Assignment 1 released Friday, 2/20 |
| 5 Week of 2/23 |
Docker | πΉ Recording |
|
Assignment 1 Review | Assignment 1 Review | In-Class Exploration |
| 6 Week of 3/2 |
Validation & Data Schemas | πΉ Recording |
|
Lab 3: Validation | Lab 3: Validation | In-Class Exploration Assignment 1 due before Friday lab |
| 7 Week of 3/9 |
SQLAlchemy + Migrations |
|
Lab 4: Database | Lab 4: Database | In-Class Exploration |
| 8 Week of 3/16 |
Async Task Queues |
|
Assignment 2 Review | Assignment 2 Review | Assignment 2 released Monday, 3/16 253B Group Project Proposal assigned Monday, 3/16 |
| 9 Week of 3/23 |
SPRING BREAK |
|
β | β | β |
| 10 Week of 3/30 |
Integration Week |
|
Assignment 2 Review | Assignment 2 Review | 253B Group Project Proposal due Monday, 3/30 |
| 11 Week of 4/6 |
System Design Fundamentals |
|
Lab 5: System Design | Group project work | Assignment 2 due before Friday, 4/10 |
| 12 Week of 4/13 |
Technology Mapping |
|
Lab 6: Technology Selection | Group project work | β |
| 13 Week of 4/20 |
System Design Case Studies |
|
β | Group project work | 153B Take-Home Exam assigned Monday, 4/20 |
| 14 Week of 4/27 |
Group Project Presentations |
|
Extra Credit Exam | Presentations + Extra Credit Exam | Monday, 4/27: 153B Exam due, 253B Project due Friday, 5/1: Extra Credit Exam |
Class Prep Strategy
Before Class (2 hours max)
- Watch only essential videos
- Focus on "what" not "why"
- Get basic familiarity
- Tip: Watch at 1.5x speed
During Class (2 hours)
- Deep dive into concepts
- Live coding together
- Answer the "why" questions
- Practice and debugging
Course Resources
bCourses
Assignment submissions and grades
GitHub Organization
Code repositories for labs and assignments
O'Reilly Learning
Free access to course video materials
Course Survey
Initial course setup and preferences
Required Course Materials
REST APIs with Flask and Python in 2024
Author: Jose Salvatierra Fuentes
Video Chapters: 2, 3, 4, 5, 6, 9, 12
Content: ~12 hours total videos for our course
Topics: Python, Flask, Docker, Validation, SQLAlchemy, Migrations, Task Queues
Universal Building Blocks (Instructor Course)
Author: Kay Ashaolu
Video Lessons: 1, 2, 4, 6
Content: ~1.5 hours of system design fundamentals
Topics: Systems thinking, building blocks, technology mapping, external entities
Access: Available via bCourses
Getting O'Reilly Access
- Visit Berkeley Library O'Reilly Guide
- Click "O'Reilly for Higher Education"
- Select UC Berkeley and sign in with CalNet
- Search for the course titles above
Assignments
Two standalone assignments building a Task Manager APIβthe backend for the frontend you may have built in INFO 253A.
π€ AI Usage Policy
Assignment and Lab Initial Submissions
NO AI allowed
Build fundamentals yourself
Assignment Resubmissions
AI encouraged
Enhance and improve your work
Final Projects & Exams
AI encouraged
Group projects (253B), take-home final (153B), and extra credit exam
Assignment 1: Task Manager REST API
Weeks 4-6 (2 weeks)Released: Week 4 Friday
Due: Week 6 before Friday lab
Goal: Build a REST API for a Task Manager application with full CRUD operations and in-memory storage
Skills You'll Master:
- Flask routes and request handling
- HTTP methods (GET, POST, PUT, DELETE)
- JSON request/response handling
- HTTP status codes (200, 201, 400, 404)
- Input validation and error handling
Deliverable: Fully functional Task Manager REST API
Assignment 2: Production Task Manager API
Weeks 8-11 (3 weeks)Released: Week 8 Monday
Due: Week 11 before Friday
Goal: Build a production-ready Task Manager API with database, validation, background tasks, and Docker (standalone project)
Skills You'll Master:
- SQLAlchemy ORM and model relationships
- Database migrations with Flask-Migrate
- Input validation with Marshmallow schemas
- Background task processing with Redis/rq
- Docker Compose for multi-service apps
Deliverable: Dockerized backend with PostgreSQL, Redis, and background workers
Grading Approach
Each assignment uses an itemized rubric with specific point values for features, similar to software engineering requirements:
- API Endpoints: Do all endpoints work as specified with correct HTTP methods?
- Data Handling: Proper JSON responses, status codes, and error messages
- Validation: Input validation and edge case handling
- Technical Implementation: Proper use of Flask, SQLAlchemy, and related tools
Final Projects & Exam
INFO 253B: Group Project
Proposal Assigned: Week 8 Monday
Proposal Due: Week 9 Friday
Work Period: Weeks 8-14
Project Due: Week 14 Monday
Presentations: Week 14 Friday
Team Size: 4-5 students (instructor assigned for balanced skills)
Scope: Full-stack backend application using Flask, SQLAlchemy, Docker, and async processing
AI Tools: Encouraged for professional-level development
INFO 153B: Take-Home Final
Exam Assigned: Week 13 Monday
Due Date: Week 14 Monday
Duration: 1 week practical project
Format: Individual practical coding project
Content: Demonstrates mastery of backend development concepts
AI Tools: Encouraged - use AI assistants to build professional-level code
Extra Credit Exam (Both 153B & 253B - Optional)
When: Week 14 Friday
Duration: 50 minutes in-class
Format: Single problem, in-class coding challenge
Reward: 10 bonus points applicable to any single assignment
Grading: All or nothing - full credit for correct solution, zero for incorrect
AI Tools: Allowed - you may use AI assistants during the exam
Note: Available to both undergraduate and graduate students
Course Staff
Kay Ashaolu
Instructor
Office Hours: Tuesdays & Thursdays 4:00-4:30 PM (Virtual)
π
Book 15-min slot
Email: kay@ischool.berkeley.edu
Suk Min Hwang
Graduate Student Instructor
Office Hours: Monday, Wednesday, Friday 1:00-2:00 PM
π
Book appointment
Email: sukmin@berkeley.edu
Lab sessions and assignment support