Many of the labs and projects can be worked on remotely, outside of the EWS labs. There are two ways of doing this; by connecting remotely to EWS systems over the Internet, or using your own computer.
Please refer to EWS Remote Connections 🔗 for detailed instructions on how to access EWS lab machines remotely. Here we provide a brief overview of some of the options you may find suitable to your needs.
There are two primary ways of connecting remotely, through SSH or through NX Client. SSH is simpler and more robust, but requires a little bit of learning to get used to since it's a command line based interface. NX Client is easier to use once working, but it requires some setup and is not as reliable due to the complexity of providing a virtual monitor, mouse, and keyboard
SSH stands for Secure SHell. When you connect to a machine with SSH, you get access to a terminal on that machine that allows you to work on the command line.
On a Unix machine you can create a remote command line by opening up a terminal on your computer and running the ssh
program like so:
ssh netid@linux.ews.illinois.edu
Where netid
is your netid. To disconnect from the remote machine, simply run exit
. This will only give you terminal access, so you won't be able to launch GUI applications. This may not be as big of a problem as you might think, see Dumping the GUI section below.
If you can't live without a GUI, you can probably enable it with something called "X forwarding". Add the -Y
flag to your ssh invocation like so:
ssh -Y netid@linux.ews.illinois.edu
If X forwarding is successful, you should be able to run GUI applications.
On a Windows machine, you can get an SSH client called PuTTY 🔗. When you run it, use your netid as your username, and linux.ews.illinois.edu
as the hostname. If everything goes well, you'll have a terminal on an EWS machine. Type exit
to disconnect. The default install of PuTTY only provides command line access but it can be extended to run GUI applications to handle X11 forwarding. This can be done by installing a program called XMing and following the instructions listed here 🔗. If you choose not to use XMing, the next section provides some alternatives to GUI applications.
Edit 2020: Windows 10 Powershell includes SSH capabilities natively. See Linux instructions above for this option.
As you become more familiar with the command line, you'll discover that many of the things that you used to need a GUI for can be done on the command line. In fact, in this course, everything can be done on the command line since all the graphical tools you might use have command line equivalents. Using the command line has a number of advantages: more power, more flexibility, and simplicity.
gedit: nano is a command line based text editor that provides similar functionality. Info about it can be found on the Unix Command Line 🔗 page.
vim: a command line based text editor with rich functionalities. Once you become familiar with it, editting in vim could be much faster than editting in a GUI. There is a fun game 🔗 you could play to get familiar with its keys. On EWS machines you can simply type in vimtutor
into a terminal to launch a handy/quick tutorial.
lc3sim-tk: lc3sim
is the command line equivalent to the graphical simulator.
For the people that want the familiarity of the desktop environment, NXClient is an option for remote connection. When you run FASTX, it's like virtually sitting in front of a computer in the EWS lab. Instructions for setting it up can be found at Engineering IT's FASTX guide 🔗. This will only work inside the University network (presumably for security reasons). If you want to connect outside the University network, you will need to connect to the Cites VPN 🔗 (Virtual Private Network) first, so that you are virtually inside the network.
VS code is a free text editor from Microsoft. This editor is recommended if you do not like the lag from the GUI text editor in FASTX.
First, you would need to download VS code. It's available for multiple OS: https://code.visualstudio.com/download 🔗
After installation, install the Remote - SSH extension from the market place:
Open Command Palette(Windows: press F1
/ Mac: press Fn+F1
), and click Remote-SSH: Connect to Host
Type netid@linux.ews.illinois.edu
where netid is your netID. Follow the prompt to enter your password.
After a success connection to EWS, click the "Open folder..." to open a folder and start editing any file you would like to.
You can also open a terminal inside VS code by pressing "control
" + "~
".
Alternatively, you can just use VS code as an editor and use another SSH client to connect to a terminal on EWS - please refer to the SSH section for more details.
With this tool, you can directly edit your MP files on EWS so you do not need to keep another git local repo on your personal computer.
Despite the high reliability of EWS systems, some people may want the independence that comes with working on your own machine. To do this, you'll need to install the programs that we use in this course on your own machine.
First of all, if you're running Windows, you'll find things a bit more challenging. This is because Windows likes to be different from all of the other operating systems, which means by itself, it won't be able to run the programs used in this class. Luckily, there's a program called Cygwin 🔗 which provides a Unix environment inside of Windows.
Linux : Gedit or Geany will work here
Mac OS X: Xcode & SubEthaEdit are a nice text editors
Windows: Notepad++ 🔗 is the recommended text editor.
Do not use MS Word, Notepad, Wordpad as these programs format text files in ways that can break programs used in this class. See Coding Conventions for more info.
In addition to the above GUI text editors, you can use command line editors on Unix/Cygwin:
nano : Easiest to use
emacs : Has every feature imaginable
vim : Steep learning curve, but powerful
You can run these on Unix-like systems (Mac OS X, Linux, and Cygwin). See Installing LC-3 tools on your machine.
You can also build and run clang
on Unix-like systems, but it's not for the faint of heart. If you're feeling savvy, you can give it a try by following the Clang getting started Guide 🔗
You can also use gcc
, which is our standard compiler. You can use it just like you use clang
, with the same compiler flags.
Installing this is probably for 1337 h0x0rs 🔗 and requires building clang
first. You'll want to checkout from their SVN repository by following the directions here: http://code.google.com/p/ccons/source/checkout 🔗.
Then follow the directions in README.txt
If you have any suggestions or tips about working remotely, post them on EdStem 🔗 so that others can benefit!