Course Overview
This page covers the overall philosophy and motivations behind the course. For detailed information about grading and policies, see the syllabus.
Why 61D?
After taking an introductory computer science course, such as Berkeley's CS61A or Harvard CS50, there is no immediately obvious next step for learning how to design, build, and deploy a modern full stack application.
Knowledge of functions, loops, recursion, and data structures is foundational — but it is not enough to actually ship a real web application. Even after completing a computer science degree, many students have never:
- Built a production-style user interface
- Designed a relational database schema
- Created a backend API
- Connected a frontend to persistent data
- Deployed a live application
61D bridges that gap.
Designed to be taken after a first-semester university-level computer science course, 61D teaches a focused, opinionated, modern stack for building full stack applications from scratch. The course is structured to be accessible to students with no prior web development experience, while still maintaining professional engineering standards.
All course materials are open source and free. The goal of 61D is simple: to be the default next step for students who want to move from “I can code” to “I can build and ship software.”
Technologies We Cover
61D focuses on a coherent, modern full-stack ecosystem built around TypeScript. Rather than surveying dozens of tools, the course teaches one integrated stack deeply, so that students understand how all parts of a real application fit together.
Core Foundations
- Git & GitHub — Version control and collaboration
- JavaScript & TypeScript - Modern application development with static typing
- Developer Tooling — Command line workflows, debugging, formatting, and project structure
Frontend
- React — Component-based UI development
- Tailwind CSS — Utility-first styling
- Next.js — React framework for building full stack applications
- React Hook Form + Zod — Type-safe form handling and validation
Backend
- tRPC — End-to-end type-safe API development
- Drizzle ORM — Type-safe database access
- PostgreSQL — Relational database fundamentals
APIs
Students will learn how to design backend routes and interact with third-party APIs.
This stack enables students to build real applications with persistent data, structured APIs, and modern frontend architecture, without unnecessary abstraction layers.
Course Content
Lectures
All course content is covered in a structured sequence of 10 core lectures. Lectures combine conceptual foundations with live coding demonstrations. Most lectures include starter repositories that students can follow along with and extend.
Readings
Readings serve as concise references and cheat sheets for lecture material. They include:
- Code snippets
- Concept summaries
- Links to official documentation
- Optional supplemental resources
The goal is to reduce friction and provide clear guidance without overwhelming students.
Labs
Weekly labs align with the lecture modules and focus on guided application of concepts. Labs are designed to reinforce material, provide hands-on practice, and create space for questions.
Assignments
All major concepts are practiced in coding assignments. Each assignment includes:
- Starter code
- Clear specifications
- Required functionality
- A submission rubric
Assignments begin highly guided and gradually require more independent implementation.
Assignments progressively build real application components, including:
- Git workflow and repository management
- TypeScript fundamentals
- Building a React-based todo application
- Creating validated forms
- Connecting frontend to backend APIs
- Modeling and querying relational databases
The goal is not open-ended exploration, but deliberate practice of core engineering patterns.
Projects
The course includes two projects:
Project 1 — Frontend Application
Students build an in-browser image format converter using React and browser APIs.
This project reinforces:
- Component structure
- State management
- File handling
- UI design
Project 2/Final Project — Final Full Stack Application
Students design and implement a complete full-stack application using the course stack.
More info will be released as we approach the project release.
The name of the course is inspired by the naming of UC Berkeley lower division computer science courses. CS 61A, 61B, and 61C are official courses, and 61D represents the next step: applied software development.