CS50 IDE: a web-based IDE for students

CS50 IDE screen


  • Project Status: retired
  • Involvement: founder and lead developer until 2016

CS50 IDE was a web-based integerated development environment based on Cloud9 IDE (and, later, AWS Cloud9) for students of Harvard University’s on-campus CS50 and online CS50x courses. The IDE served as a replacement for the previous development environment, the CS50 Appliance, a pre-configured Linux virtual machine that was in use for nine years. CS50 IDE replaced the Appliance by leveraging Cloud9’s technology to allow full terminal access in a web browser to an underlying cloud-based Ubuntu instance in combination with a fully-featured JavaScript-based text editor. By moving to an online environment, we hoped to improve the student experience by allowing opportunities for collaboration, reduce the time to provide code and environment updates to students, minimize reliance on large (~2GB) downloads, and reduce the need to be tied to a single computer for development.

The project included a variety of contributions back to Cloud9’s open source repositories (and were therefore available to all Cloud9 workspaces) including a plugin that allows users to debug C programs with GDB via Cloud9’s GUI debugger. As part of the CS50 IDE project we had created numerous Cloud9 plugins to add features found only in the IDE, including: a toggleable “Less Comfortable” mode that simplifies that GUI and provides a scaffolded experience to using the editor, modifications to the status bar to provide version and host information of the workspace, Bash scripts to simplify configuration and loading of common servers like MySQL and Apache, and pre-configuring the overall environment. We also had developed a fully-featured offline version using Docker of CS50 IDE for those students that must occasionally work on the course while disconnected from the Internet.

CS50 Appliance


  • Project Status: retired and replaced by the CS50 IDE
  • Involvement: contributor from 2013 until its retirement

CS50 Appliance was a pre-configured development environment packaged as a Fedora-based virtual machine or students of Harvard University’s on-campus CS50 and online CS50x. The appliance pre-dated the CS50 IDE. My role was to upgrade the version of Fedora and simplify the processes for future upgrades and live updates.