Carter Zenke profile picture

Carter Zenke

I teach as a Senior Instructor in Computer Science at Harvard University. As academic head of CS50, I oversee educational productions and operations for CS50's 5M+ students, online and on-campus. With CS50's team of producers, I recently created our Introduction to Databases with SQL and am now teaching our new Introduction to Programming with R, both freely available online.

I have also recently made technical and pedagogical contributions to https://cs50.ai/, the learnings from which we will present at SIGCSE 2024.

👋 Contact me at carter@cs50.harvard.edu.

📸 Photography by Andrew Markham

CS50's Introduction to Databases with SQL

This is CS50's introduction to databases using a language called SQL. This course picks up where CS50 left off, teaching learners how to create, read, update, and delete data with relational databases, which store data in rows and columns.

Audience

Within CS50's communities, many learners expressed an interest in a follow-on course to dive more deeply into databases. This course provides an introduction to databases learners can take before, during, or after CS50.

Learning Outcomes

Per the course's syllabus, among the course's overarching goals are:

  • To equip learners with the tools to use and design modern databases, via which they can efficiently store information, and
  • To support learners in using SQL to build something of meaning to them.

Ultimately, the course provides learners with a foundation in databases that can support learners' further study, work, or play in computer science. The same foundation can also empower them to apply their knowledge to problems in other domains, far beyond computer science alone.

Design Process and Principles

Taking a page from the Understanding by Design (UbD) framework, this course's design process began by defining the learning outcomes above. Design then turned to defining the courses's learning strategies. The strategies the course employs are:

  • Direct instruction, in the form of lectures, to introduce content
  • Reflection, in the form of checks for understanding, to elicit understanding from lectures
  • Peer learning, through sections, to promote hands-on practice with the course's concepts
  • Problem- and scenario-based learning, through problem sets, in which students test their skills in assignments inspired by real-world scenarios

Below is a typical student's path through the course:

flowchart TD A[Watch Lecture] --> B[Complete Check for Understanding] B --> C[Attend Section] C --> D[Submit Problem Set] D --> A
Results

As of March 2024, approximately 50,000 learners have registered via EdX. The experience level of learners varies significantly: approximately 50% of learners have taken 3 or more courses in computer science before enrolling, while approximately 30% have never taken a computer science course before.