Contents:
Options for where to work
There are five main options for where to do your work. We recommend that you at least complete option 1, Install software on your own computer, so you are able to work on your personal device. You can use multiple options if you choose to, but doing so requires you follow set up steps and clone your repository multiple times.
-
Install software on your own computer
Most people will do this. The following instructions in this document detail how to set up for this step. We will complete most of our set up together in our "Software Setup" section, but please complete the Before Attending the CSE 331 "Software Setup" Section... beforehand.
-
Work in the Gates Center or Allen Center labs
With this option, there is no software to install and you can proceed directly to learning how to use version control, IntelliJ, etc.
-
Do your work by logging into
attu
Attu is a (a Linux computer cluster) that you can log into and use remotely. There is no software to install. This combines the convenience of your own computer with the department installation of Linux. You have access to the same account and files as when working in the Gates/Allen Center labs.
Logging into attu is not a good way to run a graphical application, such as IntelliJ, but it is good option to verify your code is running properly after working locally.
-
Use the department's home virtual machine on your own computer
Follow the department's instructions. This puts a copy of the lab's Linux installation on your own computer, even if your computer does not otherwise have Linux. This combines the convenience of your own computer with the department installation of Linux.
The Linux Home VM has almost the same software as CSE-managed computers. You will need to install IntelliJ IDEA yourself (the license is free for students).
Disclaimer about where you work:
Many students find working directly on their own computer most convenient. You may use whatever tools you like to develop your code. The only thing the staff cares about is that your code works on attu (see option 3).
The CSE 331 staff provides technical support only for using IntelliJ or the command line on UW CSE machines. For other setups, we will try to help to the extent feasible. However, it can be difficult to predict and debug every installation/configuration problem, and we are not familiar with every operating system, text editor, or possible interaction between programs. We will prioritize helping students with homework, grading assignments, etc. over debugging the configuration on your machine.
Most students have a little trouble setting up their environment. If you are a spending a long time debugging a problem with your environment, we strongly suggest that you go to office hours or the ed board for help.
Before Attending the CSE 331 "Software Setup" Section...
Please do the following steps before you arrive at our "Software Setup" section (the second section of the quarter). If you have any trouble, get as far as you can on your own and come to section with what you have.
Determine your operating system
Figure out if you're using a MacOS, Windows, or Linux. Then, select the corresponding view from the options at the top of the document to make sure that you follow the instructions that work for your computer.
Install the Java 17 JDK
On the Eclipse Temurin installers page, select Version 17 from the dropdown, then find the jdk-17.0.7+7 option and run the JDK installer for your OS (MacOS or Linux). The installers can be run using default options
-
To verify installation, open a terminal (Terminal application, or if a Linux users, the terminal of choice) and type the following command:
javac --version
A message should be printed indicating version 17 is installed. If you get an older version or have trouble, try uninstalling older versions of Java that may be installed, or contact the course staff for more help.
-
Also, verify that you have an appropriate version of the javadoc tool installed:
javadoc --version
You should get a message indicating javadoc version 17.
Install the IntelliJ IDEA
-
Sign up for the Ultimate version of IntelliJ
Through your @cs.washington.edu email you have access to a free student license for the Ultimate version of IntelliJ IDEA. Follow this link and click "Apply Now". If you have to sign up for an account with IntelliJ, use your @cs.washington.edu email.
After signing up you should get an email from IntelliJ IDEA momentarily; follow any instructions they give you.
If you already have a free student licesnse for IntelliJ Ultimate from a previous UW CS class, you do not need to complete this step unless your license is expired
All petitioning students registered for CSE331 should have recieved guest CSE computer accounts for the quarter. If you believe you do not have an account, verify you didn't miss it by checking your email, and then contact the course staff via cse331-staff [at] cs.
-
Download the IntelliJ IDEA "Ultimate" edition
Download the IntelliJ IDEA "Ultimate" edition by following this link to the IntelliJ web site. Click the "Download" button appropriate for your OS (macOS or Linux). This may take a little while depending on your computer/laptop and connection.
-
Connect the IntelliJ application to your Ultimate License
Open IntelliJ once it has finished installing. When it starts up, you will need to "Log in to your JetBrains Account" with the account you created. Then you should get a confirmation that your license is in use. During the "Software Setup" section we will configure IntelliJ, but for now, you don't need to do anything else.
Install git
If you haven't installed git already, you can find git installers on the git downloads page.
MacOS Users: If you'd like you can install the full Apple developer
command line tools package, including git, by running
xcode-select --install
from the terminal. This includes
command line developer tools that you may find useful for future
courses. Another option, is installng the
Homebrew Package Manager and then using
it to install git.
Both of these options are detailed on the git downloads page.
Once git is installed, navigate to preferences by selecting "Customize" from the left side options bar, and then "All Settings..." at the bottom of the page (or select IntelliJ » Preferences for mac users). Navigate to » Version Control » Git and click the Test button at the top right. This test should succeed and report a git version below. If you have any trouble with this, contact the course staff for help. See the below screenshot for where the Test button is on the preferences window.
If you get an error when you press the Test
button, you may need to specify the path to the git
executable which can be found by using the command where git
in a terminal.
Cloning the project (creating your working copy)
Cloning your project creates a local repostory (stored in a hidden directory) and a working copy (where you do your programming). This allows you to edit your personal copy of files under git control. You will only need to clone your project to your personal computer once for the term.
Ensure that your repository exists, by browsing to https://gitlab.cs.washington.edu/cse331-QUARTER-students/cse331-QUARTER-YourCSENetID (be sure to change the YourCSENetID and QUARTER parts! (quarter is of the form'23su').
Set up an ssh key
(If you plan to work from multiple computers, do this for each)
-
Open a Terminal window, and run the following command, replacing "your@email.com" with any identifying text (This is just "comment" text, as indicated by
-C
. Make sure it is something you'll recognize and do not remove the quotations).ssh-keygen -o -t rsa -b 4096 -C "your@email.com"
Press enter when asked for a file name (use the default name)
Do not use a passphrase
-
You'll receive a message stating that
your public key is saved in [some public key file name]
. The file is probably called~/.ssh/id_rsa.pub
, but take note of whatever is listed from the command for the next step, it will end with ".pub". -
Open the file where the key has been saved by running the following command:
cat [public key file name here] | pbcopy
-
After running the command, the public key you created will be copied automatically; save it for the next step.
Add your ssh key to git lab
Navigate to CSE Gitlab and sign in. Open the profile menu in the top right corner and click "Preferences". Choose "SSH Keys" from the left options bar, then paste your public key copied from the previous step into the text box. The "Title" field can be whatever you want - we recommend writing something that identifies which computer you created the key on (i.e. "Personal Laptop" or "attu."). Finally, click the "Add Key" button.
Run the following command to ensure that your key is correctly setup. You should receive a welcome message and should not be prompted for a password. If you receive a message saying "the authenticity of the host could not be established", it's safe to type 'yes' to bypass this message.
ssh -T git@gitlab.cs.washington.edu
Clone to IntelliJ
Follow these instructions when working on personal computer or lab machine. If you intend to work on attu, use the Command Line instructions. You need not follow both sets of instructions, only the relevant set.
Open IntelliJ, choose "Get from VCS". Select "Git" under the "Version Control", dropdown and choose a convenient place on your computer for "Directroy" - this is where you'll be storing your 331 work for the rest of the quarter. In the "URL" box, paste the text below with '23su' in the place of "QUARTER" and your CSE NetID in the place of "NETID".
git@gitlab.cs.washington.edu:cse331-QUARTER-students/cse331-QUARTER-NETID.git
Cloning may take some time, and IntelliJ may have to perform downloads and take some time to build. Wait until the build is complete before proceeding to the next step.
Clone on Command Line (attu cloning)
You won't need to run these instructions locally if you have already cloned the repository in IntelliJ. Follow these steps if you are working on attu or another machine.
Note: for those who are new to the command line: when you try to type passwords in the command line, you won't be able to see any text entered. Your typing isn't shown to protect your password. Just type your password as usual and press enter.
Use these instructions to clone your repository when you're signed into attu or another computer that only has a command line interface or doesn't have IntelliJ. if you are trying to clone for IntelliJ follow the IntelliJ instructions. You need not follow both sets of instructions, only the relevant set.
Execute the following commands at the command prompt to clone the
project and create a working copy in
~/cse331-QUARTER-NETID
:
cd git clone git@gitlab.cs.washington.edu:cse331-QUARTER-students/cse331-QUARTER-NETID.git
Configuring IntelliJ for 331
There are configurations we'll be using in 331 to make sure IntelliJ works with all the different technologies that we're using in this class. Be sure to go through the description below and and verify that your configuration is correct.
Using Gradle Integration
We need to configure Gradle so "Run", "Debug", and "Test" buttons throughout IntelliJ will do what we intend according to the Gradle build we're using for this class.
With the cse331-QUARTER-NETID project open in IntelliJ and navigate to preferences (these are project specific preferences). Follow Preferences » Build, Execution, Deployment » Build Tools » Gradle . Open the preference window and make sure that all your settings match those highlighted in red in the image below. For settings not highlighted, they'll be specific to your project and you shouldn't worry about changing them from the defaults. Note that the Java version should say 17, and the specific file path or minor version number doesn't matter.
Enabling Generics Error-Checking
We expect your code to not have any generics-related problems.
For example, the following code is unacceptable:
List myList = new ArrayList(); myList.add("foo");
The generic type List
of myList
should be
parametrized, for instance, to String
by replacing the
first line with List<String> myList = new ArrayList<String>();
Note that List<String> myList = new ArrayList();
is
also incorrect.
By default, IntelliJ doesn't show generics problems as errors. To have IntelliJ alert you to these issues, open the general IntelliJ preferences page and navigate to Editor » Inspections. Search for the inspection "Raw use of parameterized class" and enable it with the checkbox. With that inspection selected, disable all the "Ignore..." checkboxes in the right pane to make sure the inspection will check all of your code for any generics parametrization issues.
Correctly Converting Tabs/Spaces
It is often considered bad style to have tab characters in code files, because they display differently for different people. We can make pressing the tab key insert a standard number of spaces by navigating to Editor » Code Style » Java and making sure the "Use Tab Character" checkbox is not selected.
Extended Javadoc Tags
IntelliJ will warn you about unrecognized the 331 Javadoc tags
(@spec.*
), which we wil use in class. There are two ways to
eliminate the warnings:
-
Disable the editor's Javadoc inspection (reccomended)
From the main menu, choose File » Settings for Linux or IntelliJ IDEA » Preferences for macOS. Navigate to Editor » Inspections » Java » Javadoc and uncheck the box next to "Javadoc declaration problems".
-
Add each of the extended tags as a known tag for IntelliJ.
Using the keyboard shortcut: place the caret on the extended tag with a warning and press
Alt + Enter
. Select "Add spec.* to custom tags".Using the settings pannel: Open the Javadoc inspections settings by following the instructions in (1). You do not have to uncheck any boxes. Select "Javadoc declaration problems" and navigate to Options » Additional Javadoc Tags and add all of the extended tags.
Logging into attu with SSH
attu
is the name of an Instructional Workstation (IWS)
Linux machine. You will occasionally need to log into this machine.
SSH on Unix (Linux and MacOS)
-
Open a command prompt (terminal or console) by navigating to Applications -> System Tools -> Terminal or the one built into IntelliJ
-
Run the following command:
ssh YourCSENetID@attu.cs.washington.edu
Enter the same password you use to login to the Linux machines in the Gates/Allen Center software labs. For those new to the command line, the password is not visible when you type it in in order to protect it.
If you are using the Linux machines in a Gates/Allen Center software lab, he username defaults to the username you are currently logged in with and the target domain defaults to the domain of the machine you are connecting from, so you can alternatively use a shorter version of the command:
ssh attu
File Transfer: SCP
If you only want to transfer files between your CSE account and your
home machine, you can use scp
("secure copy").
For CSE 331, you should rarely, if ever, need to manually transfer files.
All your code and other homework materials will be in a Git repository,
allowing you to automatically and safely synchronize your work across
machines. We provide information about scp
as a reference
for your general knowledge.
On a Unix machine, you can run scp at the command line.
Run man scp
for documentation on this command. If you
prefer a graphical interface, you can install a
file transfer program
such as WinSCP. Most of the directions above for establishing a remote
connection via ssh also apply to scp.