We Have Spotify at Home - CS 61A / DATA C88C
Class Type: Intro Computer Science (CS1)In this project, students will create a full stack web application similar to Spotify's Daylist feature, a daily customized music playlist. In the process, they'll learn a breadth of modern, practical software engineering skills.
Authors:Presentations
- Slides: https://docs.google.com/presentation/d/1vRfwFCQPNcqwgUklYpY7cupvxkh3ZbCmVxaSypDVeLQ/edit?usp=sharing
Project Source
- Github public starter: https://github.com/abigailrb03/daylist-at-home-starter
- Google drive: https://drive.google.com/drive/folders/1d3JhFyjGt5JCn0-c4dcXqRt-z_IiVfuZ?usp=drive_link
- Github private materials: https://github.com/abigailrb03/cs294-project
Table of Contents
Introduction
At UC Berkeley, the introductory computer science courses offered are CS 61A: Structure and Interpretation of Computer Programs (for intended EECS/CS majors) and DATA C88C: Computational Structures in Data Science (for intended DS majors). Both courses offer an introductory survey of programming fundamentals like Python and SQL syntax, basic data structures, algorithmic thinking, and interpretation of programming languages (CS 61A only). Both are large courses, with CS 61A serving 1000+ students and DATA C88C serving 500+ students each semester, typically first-year undergraduates.
Currently the projects in these courses are all autograded, tell students exactly what they need to do, and lean more toward the theoretical side of programming. The projects were also developed several years ago, and since then the tech stacks and cultural zeitgeist have matured (Ants vs. SomeBees, the OOP/Inheritance project for both courses, is a play-on-words of Plants vs. Zombies, but now students might not even be familiar with the game). Therefore, this project aims to bridge the gap between classroom learning and real-world applications by teaching students real world software engineering skills (software design and abstraction, reading documentation, databases, web development, APIs, HTTP requests/responses, error handling, computer security, pseudorandom number generation, integrating LLMs into an app, etc.) with modern technologies (Python >= 3.11, uv, pytest, Ollama) while remaining culturally relevant.
Learning Goals
- Integrate knowledge of abstraction and OOP to implement a full stack web application
- Design and implement a set of classes that represent entities in the song dataset
- Implement API endpoints using Flask, SQLite, and the classes above
Student Assignment
From the “Github public starter” link above, all instructions are in README.md.
Instructor Guides
Request access from the project authors to access the “Github private materials” link above.
The private GitHub includes:
- Project solutions (
src/project/directory) - Script to compile solutions into starter code
.zipfile (src/compile_starter.pyandMakefile) - Script to fetch fresh data from the Spotify API (
src/spotify-data/directory) - GitHub Actions workflows to ensure code quality and tests pass (
.github/workflows/directory)
Requirements
- Technical software requirements
- Python >= 3.11.14
- Dependencies listed in pyproject.toml (see uv.lock for full lock file of dependencies)
- uv >= 0.9.13
- macOS 14 Sonoma or later, Linux, or Windows 10 or later to install Ollama desktop app
- Classroom/logistical requirements
- Many TAs to be able to grade the design document component (Task 1A)
- [Suggested] Gradescope for manual grading of design doc PDFs and for autograding