You'll implement all the labs in Go. The Go web site contains lots of tutorial information. You should use Go 1.15 or any later version. You can check your Go version by running go version.

We strongly recommend that you work on the labs on your own machine, so you can use the tools, text editors, etc. that you are already familiar with. Most free / open-source editors have plug-ins for Go, e.g. go-plus for Atom and the officially-supported Go extension for VS Code. Some commercial IDEs like GoLand have free educational licenses. We are happy to provide support over Piazza and in office hours for helping you set up tooling. As a fallback, you can work on the labs on Athena, but we do not recommend this option.


You can use Homebrew to install Go. After installing Homebrew, run brew install go.


Depending on your Linux distribution, you might be able to get an up-to-date version of Go from the package repository, e.g. by running apt install golang. Otherwise, you can manually install a binary from Go's website. First, make sure that you're running a 64-bit kernel (uname -a should mention "x86_64 GNU/Linux"), and then run:

$ wget -qO- https://go.dev/dl/go1.17.6.linux-amd64.tar.gz | sudo tar xz -C /usr/local
You'll need to make sure /usr/local/go/bin is on your PATH. You can do this by adding export PATH=$PATH:/usr/local/go/bin to your shell's init file ( commonly this is one of .bashrc, .bash_profile or .zshrc)


It seems to be painful or impossible to get the labs to work correctly on Windows or on Windows Subsystem for Linux (WSL). Use Athena, a Mac, or Linux.


You can log into a public Athena host with ssh {your kerberos}@athena.dialup.mit.edu. Once you're logged in, to get Go 1.15, run:

$ setup ggo

If you get the following error:

bash: setup: command not found
you might have removed something important from your shell's startup scripts. Compare your ~/.bashrc to /usr/prototype_user/.bashrc and add anything that you're missing.

If you use a shell other than bash on Athena, the 'setup' command might not work properly, and you might need to add /mit/ggo/current/bin/ to your path manually.