8. Appendix: Course Software

You can choose either or both of the following options.

8.1. Cloud-based development environment

This option is recommended if you have any problems with your local setup or if you prefer a basic cloud-based setup.

8.1.1. Pros

  • consistent, cloud-based environment

  • out-of-the-box integration with GitHub

8.1.2. Cons

  • requires good network connection

  • might lack some code completion features

  • free plan might be underresourced (CPUs, RAM, disk space, etc.)

  • lack of integration with external GUI-based tools

8.2. Locally installed development environment

This option will give you an advanced development environment with code completion, type info, etc.

8.2.1. Pros

  • provides powerful capabilities, including code completion and refactoring

  • does not require network connection once installed

8.2.2. Cons

  • might be slow on older machines

  • need to maintain on each machine you use, but can use settings sync to keep settings and extensions consistent

  • it can be challenging to match the versions of the various packages

  • GitHub account access might be tedious to configure

  • possible difficulty managing coexisting Java versions

8.2.3. Required packages

  • Java 21 LTS recommended

  • Git distributed version control system (usually preinstalled on Mac OS and Linux)

    • recommended installation option on Windows: Use Git and optional Unix tools from the Windows Command Prompt

    • optional on any platform, especially when not an IDE: some GUI-based Git client

  • Maven build and dependency management tool for the Java ecosystem

  • Mac and Linux users are strongly encouraged to use SDKMAN! to manage their Java, Maven, VisualVM, and other command-line development tools.

8.2.4. Choices of local development environments

  • Visual Studio Code (recommended for PlusCal/TLA+ development, supports Java development)

    • need to install the actively developed TLA+ extension

    • see below for recommended VS Code extensions

  • IntelliJ IDEA CE integrated development environment (alternative for Java development)

    • has unofficial Alloy and TLA+ plugins

    • check specific prerequisites for your platform

    • for the following steps, make sure you have no projects open and are looking at the welcome window as in the attached screenshot

    • JDK configuration: IntelliJ IDEA > Configure > Project Defaults > Project Structure > Platform Settings > SDKs > + > JDK > navigate to the installation directory of your Java 21 JDK > OK

  • conventional text editor (OK for general development but not recommended for working with Alloy or PlusCal/TLA+, though one can use them with the standalone TLA Toolbox)

    • Emacs

    • vim

    • etc.

8.4. GitHub

GitHub is a provider of hosted Git repositories, which emphasizes community and collaboration. For this reason, we use it to host our course examples.

  • Create a GitHub account if you don’t already have one.

  • Get the GitHub Student Developer Pack using your official @luc.edu address. This will give you free unlimited private repositories.

  • Find and follow a few practitioners you respect. For example, I follow these developers. You’ll probably recognize a number of them.

  • Review these notes to understand the community-based development process.

  • For credit toward class participation, create some meaningful GitHub issues and/or GitHub pull requests for one or more of our course examples. (Make sure to navigate to the original repos as these forks do not have their own issue trackers). These can be functional or nonfunctional enhancements, requests for clarification, etc.

  • To enhance your visibility in the professional community, start doing the same for some open-source projects you are interested in.

You may find both of these cheat sheets useful:

8.5. Remote participation

This software allows you to participating in class remotely in case of weather emergencies, pandemics, etc. For security and privacy reasons, be sure to update it frequently.

In case of a Zoom outage, we will fall back to MS Teams chat and reorganize from there.