IntroCS Tools

CS50 Tools

VS Code for CS50

VS Code for CS50 is a web app that adapts GitHub Codespaces for students and teachers. It automates the process of creating a repository inside of CS50’s GitHub organization, pushing to it an initial .devcontainer.json, and creating a “codespace,” which is a Docker “container” in the cloud (akin to your very own virtual server). Ultimately, it allows students to start programming with just a browser, without needing to install or configure anything locally on their own computer. Within their browser is a full-fledged version of Visual Studio Code, aka VS Code, including a tabbed text editor, terminal window (connected to a Docker container running cs50/codespace), and graphical file explorer.

You can also use VS Code locally, even offline without internet, particularly if feeling more comfortable. To set up a VS Code for CS50 you require a GitHub account. You should also take a look at the comprehensive documentation.

CS50 Sandbox

The CS50 Sandbox is an introduction to Integrated development environments and a lite version of the CS50 IDE. They are useful as they offer the possibility to work easily on simple programs temporarily. You are also able to use Submit50 and Check50 within the Sandbox. To gain access to a Lab you must have a GitHub account.

CS50 Labs

The CS50 Labs are a step up from the Sandbox environment. Throughout the course, problem sets by the Chair will often be offered in a Lab environment. The advantage is that the course coordinators and tutors can provide instructions that can be used conveniently and synchronously to the students’ coding and working on problems. You are also able to use Submit50 and Check50 within the Labs. To gain access to a Lab you must have a GitHub account.

*To access a Lab you require the specific Links which we will provide on our course Website.

Command-Line Tools

help50 - CS50 prettifier for compiler and valgrind messages

Usage: help50 ./program command line args or
help50 valgrind ./program command line args

debug50 - CS50 debugger

Usage: debug50 ./program command line args


Checks for alignment to the CS50 style guide
Usage: style50 program.c

check50 - CS50 checks runner

Usage: check50 cs50/problems/2021/x/problem_name

submit50 - submits problem sets’

Usage: submit50 fau-is/introcs/folder_name/problem_name

To use submit50 you will have to sign up first with this Link. To do so you require a GitHub account.

CS50 Documentation


GitHub is a online repository for version control and collaboration between developers. As already stated above in order to gain access to most of the Tools used during the course you require a GitHub account.

SSH (Key Generation)

In this course we facilitate authentication via the SSH protocol, which replaces looging in with your GitHub logins and only has to be set up once. The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. In other words this means that you will be required to generate an SSH key only when working on your first problem set. This then also enables you to use command line tools such as “submit50”.

Here is a step-by-step guide to generate an SSH key!

  1. Open a terminal window, if not open already, within Visual Studio Code, CS50 IDE, CS50 Sandbox, or CS50 Lab.
  2. Execute ssh-keygen. When prompted to “save the key,” just hit Enter, without typing anything.
  3. You’ll then be prompted for a “passphrase” (i.e., password). If you only use your GitHub account for CS50, no need to input a passphrase; just hit Enter. Otherwise, input a passphrase (that you won’t forget!), then hit Enter, then input it again, then hit Enter again. For security’s sake, you won’t see what you type. You’ll then see a “randomart image” that you can ignore.
  4. Execute cat ~/.ssh/ You’ll then see your “public key,” multiple lines of seemingly random text. Highlight and copy all of those lines, starting with ssh-rsa to the end. But don’t highlight your terminal window’s prompts (which contain $) before or after those lines.
  5. Visit, logging in with your GitHub username and password as usual. Don’t use the passphrase you just created, if any.
  6. Click New SSH Key.
  7. Paste your public key into the text box under Key. Optionally input a title under Title (e.g., CS50).
  8. Click Add SSH Key.
  9. Execute ssh -T -p 443.
  10. Enter “yes” and press enter if you see the following prompt (the IP address might be different):
    The authenticity of host '[]:443 ([]:443)' can't be established.
    ED25519 key fingerprint is SHA256:7KMZvJiITZ+HbOyqjKJV2AeC5As3GSZES5abcd1NIe4.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
  11. If you input a “passphrase” (i.e., password) earlier, enter the passphrase and press Enter when you see the following prompt "Enter passphrase for key 'home/ubuntu/.ssh/id_rsa':"
  12. You should be greeted with "Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access." If you don’t see that, review the above steps to verify you didn’t skip something.

You should now be able to use check50 and submit50 (and git) without GitHub username and password. But if you created a passphrase, you might still be prompted for that.


There are different Platforms we will use throughout the course to communicate with you.


The StudOn course also contains all the information just as the website. StudOn will be used for class room management and for the grade improvement. The Quizzes are available on the main StudOn page.


Microsoft Teams is a requirement for the course. You will require an account to be able to receive updates and real-time help from Coordinators and Tutors.

Teams Installation Guide Course Code: bpssb9s


The Tutorials and Lectures will be held in person this WS23/24. However, we want to keep open the possibility of switching to digital teaching via Zoom, should external circumstances dictate this.

Zoom Installation Guide

Tool Guide - Video