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.
VSCode – We recommend using Visual Studio Code (VSCode). Be sure to get VSCode only from the official site controlled by Microsoft. The site also has documentation and other helpful materials. We recommend you install the VSCode Live Share extension in your container as it provides a way to share a view of your code with collaborators and/or TAs remotely. You can also install the GoLang extension for VSC.
GitLab and Git – We use the Git version control system and the CS GitLab service (coursework.cs.duke.edu) to distribute, store, and submit code for labs. You must log in to access the content: select “Duke OAuth2” and log in with your NetID. You will need to an installation for git on your laptop with an SSH keypair and the public key installed on the coursework GitLab service. You may find it helpful to review the tutorial from Duke OIT. For Windows users, consider trying the git extension for VSC.
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.