🔧 Tools
Documentation
Scala
- Scala Language Documentation (← start here)
- More Learning Resources:
- Scala Standard Library API Documentation
- Java Standard Library API Documentation
- REPL:
scala
- Scala Style Guide
- Scaladoc Guide
IntelliJ IDEA
- Install the latest IntelliJ IDEA Community
Edition.
- Launch IntelliJ IDEA and find the preferences/settings from the menu bar.
- Open the Plugin section. Search for “Scala”. Install the Scala plugin.
- Open the Build, Execution, Deployment > Compiler section and check the box to Build project automatically.
- When opening a project, if IntelliJ complains that “Project JDK is
not defined” in a bar at the top of the window, click Setup JDK
(other end of the bar).
- If there is no option besides Add JDK or Download JDK,
install a Java 11 JDK:
- macOS: Download and run this macOS AdoptOpenJDK installer package to install OpenJDK. (Additional macOS installation information is available here if needed.)
- Windows: Download and run this Windows AdoptOpenJDK MSI installer package to install OpenJDK. Additional Windows installation information is available here if needed.)
- Linux, etc.: Use your distribution’s package manager to install the default JDK option.
- Ubuntu:
sudo apt install default-jdk
- Ubuntu:
- After installing, quite and restart IntelliJ.
- From the same Setup JDK drop-down, select a JDK (probably the Java 11 JDK you just installed, which may appear under Detected JDKs).
- If there is no option besides Add JDK or Download JDK,
install a Java 11 JDK:
- Launch IntelliJ IDEA and find the preferences/settings from the menu bar.
- IntelliJ IDEA Documentation (← start here)
- Splashy documentation landing page with more variety
- Emacs (or other) keybindings in IntelliJ: Preferences > Keymap
- IntelliJ IDEA Scala Plugin Documentation (← start here)
- IntelliJ IDEA Code with Me Remote Collaborative Editing Support
- By default, Code with Me supports an unlimited number of sessions, each capped at 30 minutes.
- Sign up for an educational license for unlimited session length.
Alternatives
The course project assumes a Linux or macOS environment in some parts. Here are two alternatives for working on Windows (or if you prefer not to use IntelliJ).
Windows Subsytem for Linux (WSL)
If you are working on Windows, one convenient local option is the Windows Subsystem for Linux, which basically provides an integrated Linux system inside Windows.
- You will do all command-line work inside WSL.
- Install and setup WSL. If you do not have a preferred Linux distribution, I suggest Ubuntu.
- Your WSL Linux distribution will need a JDK, Git, and Python 3
installed. On Ubuntu:
sudo apt install default-jdk git python3
- You will use IntelliJ from Windows:
- Install IntelliJ IDEA Community Edition.
- The project setup steps have notes about working across the bridge.
If you need assistance with setup, or if this will not work for you, get in touch about alternatives such as remote access to the CS machines or a virtual machine.
(If you are well-versed in Windows command-line work, you may be able to get many parts of the project running directly in Windows, but I lack the Windows experience to be helpful with that.)
VSCode
If you prefer not to use IntelliJ or if setup is not working out on your computer, an alternative to IntelliJ is to use VSCode. You can develop locally on your machine (Linux, macOS) or remotely on the CS server (Windows). The remote option is workable with a solid low-latency network connection to campus. It’s not always a great experience from the other side of the globe.
-
Install VSCode.
-
If you will work remotely on the CS server: Install the Remote Development extension and connect to cs.wellesley.edu.
Otherwise: Install a Java JDK as above if you have not done so yet.
-
Install the Scala Metals extension. This should give syntax highlighting, live error reporting, and maybe completion for Scala code. (Documentation)
-
Do Git operations on the command line (or in the VSCode UI if you understand it).
-
Run command-line builds in the terminal:
- Over SSH if working remotely (such as in the VSCode remote terminal).
- Or locally.
Git and GitHub
- Git Documentation (← start here)
- GitHub Documentation (← start here)
- GitHub Pull Requests for project submission, code review, and (optionally internal team coordination).
- GitHub Issues for tracking bugs, features, to-dos, etc.
- You can practice Git skills with the Tutorial from CS 240, even though you’re not in that course currently.
Command Line Tools
- GNU/Linux Skills (← start here) for the command line (ignore
drop
), Scott Anderson, Wellesley College- Bash commands, Ruth Anderson, University of Washington
- Some useful Unix commands, Tia Newhall, Swarthmore College