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

Project Source

Table of Contents

  1. Introduction
  2. Learning Goals
  3. Student Assignment
  4. Instructor Guides
  5. Requirements

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 .zip file (src/compile_starter.py and Makefile)
  • 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