Tools
Documentation
CS 301 Computing Environment
CS 301 supports computing with the CS GNU/Linux workstations in the Microfocus lab or SCI S173. Please work in the lab. Team programming works better with a larger screen and a keyboard/mouse that is not owned by any individual. When many people work in the lab, it builds community and concentrates more collective wisdom to tap while working. (See also: unsupported alternatives.)
First-Time Lab Setup
Follow the Getting Started guide to setup the basic tools in your CS account.
Scala
- Scala 2.12 Language Documentation (← start here)
- More Learning Resources:
- REPL:
scala
- Scala Style Guide
- Scaladoc Guide
- Physical books on the lab shelf:
- Programming in Scala. Oderksy, Spoon, and Venners.
- Programming Scala. Wampler and Payne.
IntelliJ IDEA
- Launch:
idea.sh
(or from the Applications > Programming menu) - IntelliJ IDEA Documentation (← start here)
- Splashy documentation landing page with more variety
- Emacs (or other) keybindings in IntelliJ: Preferences > Keymap
- Using Emacs as an External Editor
- IntelliJ IDEA Scala Plugin Documentation (← start here)
Git and GitLab
- Git Documentation (← start here)
- GitLab Documentation (← start here)
- GitLab Merge Requests for submitting project checkpoints and stages.
- GitLab Issues for tracking bugs, features, to-dos, etc.
Command Line Tools and Editing
- GNU/Linux Skills (← start here) for the command line (ignore
drop
), Scott Anderson, Wellesley College- Remote access with SSH:
ssh wendy@cs.wellesley.edu
- Bash commands, Ruth Anderson, University of Washington
- Some useful Unix commands, Tia Newhall, Swarthmore College
- Remote access with SSH:
- Emacs Basics (← start here) for life (and text editing)
Alternative Computing Environments (Unsupported)
If the preferred – and only officially supported – option of working in the lab is not feasible, you can install the programming tools elsewhere.
Beware that running your full compiler (or the executables it produces) will require GNU/Linux.
- It may work (no guarantees) on macOS or the Windows Subsystem for Linux, but not plain Windows.
- You can run a GNU/Linux distribution in a virtual machine (such as the csenv appliance from CS 240 and CS 251) on any common OS. You should give the virtual machine access to at least 2GB of memory (probably 3GB+) for reasonable performance with IntelliJ IDEA.
The programming tools you need are somewhat flexible depending on your work preferences and goals. The lab environment has all of these. Choose your favorite installation method.
- IntelliJ IDEA Community Edition 2018.3 and Scala Plugin 2018.3 for IntelliJ IDEA (usually offered on the first launch of IDEA) if you want full IDE support, otherwise use your favorite text editor.
- SBT 1.2.8 if you want to build your compiler from the command line.
- Scala 2.12 if you want to run your compiler from the command line.
- Git if you want to do anything.
- GCC or Clang (included in the command line tools for Xcode on macOS) if you want to assemble binary executables from the assembly code your compiler generates.