Completed: / exercises
These instructions will help you choose a development environment for the programming exercises in this course and later for programming the embedded device in Module 2.
We expect you to have some basic computing skills, such as using a text editor or using a terminal.
NOTE: When compiling the C exercises, use the C99 standard (-std=c99 with gcc).

Main options for programming

In the same way that the famous Western The Good, the Bad and the Ugly has three main characters, here we offer at least three different options for programming in this course: the easy, the safe, and the professional.
Option Best for Module 2
The easy: OnlineGDB Starting immediately with C exercises No
The safe: Course virtual machine Using a ready-to-use environment tested for the course Yes
The professional: Visual Studio Code Learning a development environment useful beyond this course Yes, with additional extensions

The easy: OnlineGDB

The easiest way to start is OnlineGDB. It runs directly in your browser, so you do not need to install a compiler or development environment on your computer.
This is a convenient option for the C programming exercises in Module 1. However, it cannot be used for programming the embedded device in Module 2.

The safe: Course virtual machine

The course virtual machine contains the software required for the course and has been tested with the course exercises and hardware development tools.
It is a good choice if you want an environment that works without having to configure the development tools yourself. The main disadvantages are that the virtual machine requires around 15 GB of disk space and cannot be used on modern Macs.
The course virtual machine can also be used for Module 2.

The professional: Visual Studio Code

Visual Studio Code is the most useful option if you want to learn a development environment that you are likely to encounter again in later courses or professional work.
VS Code is available for Windows, Linux, and macOS. Setting up the C compiler and debugger can require more configuration, especially on Windows.
For Module 2, you will install additional extensions for programming the embedded device.
See Setting up VSCode for instructions.

Other development environments

You are not limited to the three options above. You can also use other development environments, including:
See Other development environments for these alternatives.
?