Zoom Meetings

CS50 occasionally holds live lectures and seminars (as well as office hours and even quiz shows!) via Zoom that anyone on the internet is welcome to attend, whether taking any of CS50’s courses or not!

For any Zoom meeting you attend, please take care to

  • participate from a quiet office or similar space (and not from a bed, car, hammock, plane, or train), and
  • participate with your camera turned on, using horizontal (not vertical) video.

If unable to accommodate these norms some week, please watch the live stream or recording at youtube.com/cs50 instead.


CS50’s team is in the process of filming a brand-new course, CS50 SQL, an Introduction to Databases with SQL, designed to supplement CS50 itself for students at Harvard College and Harvard Extension School.

Starting October 2023, CS50 SQL will be freely available to anyone online via edX at cs50.edx.org/sql and via OpenCourseWare at cs50.harvard.edu/sql.

Recall that CS50 itself, also known as CS50x, is an Introduction to Computer Science. Whereas CS50x focuses on computer science more generally as well as programming with C, Python, SQL, and JavaScript, CS50 SQL will be entirely focused on SQL. You can take CS50 SQL before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!

You’re welcome to attend one, some, or all of CS50 SQL’s live lectures, below. Space is limited, so please forgive if a Zoom Meeting fills up! You’re welcome to watch live via YouTube instead.


Lecture 0 Querying


A live lecture on querying databases. You’ll learn about tables, via which databases can store information; database engines, which are the software via which you can interact with databases; and SQL, the language via which you can write queries to answer questions about tables of data in a database.

Lecture 1 Relating


A live lecture on relating data across tables in a database. You’ll learn about keys, both primary and foreign, via which you can reference data across tables; joins and nested queries, via which you can write queries that span multiple tables; and groups, via which you can aggregate data into categories.

Lecture 2 Designing


A live lecture on designing database schemas to better organize your data. Learn to create tables that effectively model real-world systems (a subway system, for instance!); to strategically apply constraints, via which you can ensure the integrity of data; and to alter the design of your database as your system changes.

Lecture 3 Writing


A live lecture on writing to databases, which includes inserting, updating, and deleting data. Learn how to insert data manually or import data from a given CSV file; how to perform updates that clean and correct your data; and how to delete data while managing constraints across tables. Learn, too, how to create “triggers,” via which you can automate the execution of SQL statements upon an insertion, deletion, or update of some table.

Lecture 4 Viewing


A live lecture on creating views of a database. Learn how to use views to simplify your queries across multiples tables and to see data from disparate tables in a single virtual table. Use views to create aggregate statistics (e.g., minimum, maximum, mean) from underlying data points. And get a taste of hows can be used both to secure data, as by removing personally identifiable information, or to implement “soft deletes” via which you can remove data from a view but keep it in an underlying table.

Lecture 5 Optimizing


A live lecture on optimizing databases. Learn how to optimize your queries using indexes, which enable quicker look-ups on columns of your choice (at the expense of some space!). Dive deeper into indexes by learning about B-trees, the underlying data structure that often powers database indexes. Finally, learn how databases consistently handle high volumes of (almost simultaneous!) requests, by using transactions, locks, and more.

Lecture 6 Scaling


A live lecture on scaling applications with databases. Take what you’ve learned in SQLite and apply it in the context of full-fledged database servers, including both MySQL and PostgreSQL. Understand the differences between SQLite’s, MySQL’s, and PostgreSQL’s type systems and learn about the unique affordances of each. Learn key ideas that help you design a database architecture for scale, including replication and sharding. And finally, get a grasp on how to guard against SQL injection attacks in order to build resilient database applications.