Getting Started

The labs apply the classic model of Communicating Sequential Processes (CSP) for distributed and concurrent systems as implemented in Go, a programming language used at Google and other companies.

The Go environment runs in Windows, MacOS, and Linux. We ask you to install and run the Go programming language on your own (laptop) computers. It installs easily from distributions on go.dev. Please contact the instructor if you need an alternate arrangement.

As always, use caution and install software only from trusted sites. The go.dev site is controlled by the Go development tetam at Google. They also provide a Go extension for Visual Studio Code. MacOS users might choose the Homebrew distribution.

Getting ready to go. Go language (golang) will feel strange at first. We will take some class time for aspects that reflect important concepts in programming languages, and particularly concurrency (goroutines) and communication (channels). But there are no shortcuts to come up to speed on a new languagte: you have to dive in and find materials that work for you and spend time with them and play around a little. We recommend the materials on the reading list. Peruse go.dev: it has a tutorial tour, example code snippets, and many talk slides and blog posts on key features.

More on all of that below and elsewhere on this website. If you have questions or problems please post on Ed.

Tools

Background

The OSTEP text is useful for background material in operating systems. We will use certain sections on distributed systems and security for some of our readings.