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)

πŸ“… Book 15-min slot

GSI

Suk Min Hwang

Email: sukmin@berkeley.edu

Office Hours: MWF 1:00-2:00 PM

πŸ“… Book appointment

Announcements

March 9, 2026

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 Explorations10%
Labs (6 graded: Lab 1-6)40%
Assignments (2 total)30%
Take-Home Exam20%

*Lab 0 ungraded; lowest 2 lab grades dropped

INFO 253B (Graduate)

In-Class Explorations10%
Labs (4 graded: Lab 1-4)20%
Assignments (2 total)30%
Final Group Project40%

*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
  • None
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
  • None - Focus on Assignment 1
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
  • None
β€” β€” β€”
10
Week of 3/30
Integration Week
  • Review previous chapters
Assignment 2 Review Assignment 2 Review 253B Group Project Proposal due Monday, 3/30
11
Week of 4/6
System Design Fundamentals
  • Universal Building Blocks Lesson 1 - Introduction to Systems Thinking
  • Universal Building Blocks Lesson 2 - The Seven Building Blocks
Lab 5: System Design Group project work Assignment 2 due before Friday, 4/10
12
Week of 4/13
Technology Mapping
  • Universal Building Blocks Lesson 4 - Technology Mapping
  • Universal Building Blocks Lesson 6 - External Entities
Lab 6: Technology Selection Group project work β€”
13
Week of 4/20
System Design Case Studies
  • Review all Universal Building Blocks
β€” Group project work 153B Take-Home Exam assigned Monday, 4/20
14
Week of 4/27
Group Project Presentations
  • None
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

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

  1. Visit Berkeley Library O'Reilly Guide
  2. Click "O'Reilly for Higher Education"
  3. Select UC Berkeley and sign in with CalNet
  4. 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

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