Glossary of commands covered in this course.
emacs reference card
gdb debugger user manual.
ddd debugger documentation.
Don’t install all of this at the start of the semester – some of it is optional.
Wait until the Lecture Notes tell you that you need a package. In many cases, you will be told that you can choose one of various alternatives, in which case the Lecture Notes will describe the advantages and disadvantages of each.
All software listed here is free unless explicitly stated otherwise. In several cases, I have noted that the software is “portable”, meaning that you can install it onto a flash drive and then run it on other Windows machines without first installing it on those machines. (This is useful if you are going to be working on computers at your job, at a library, at a friend’s house, etc).
Most CS Department services are hidden behind a VPN. You will need to install and run the VPN software on your PC to access those services.
Instructions for installing and running the VPN on Windows and macOS machines.
Linux users can find a Linux version of the software at the same location given in the instructions for Wndows users.
Chromebook users can find an Android version of the software at the same location given in the instructions for Wndows users.
Connections to the VPN will time out periodically. Typically you will need to re-connect once or twice a day or after rebooting your PC.
- You do this by clicking on the Global Protect icon in the notification area of the Windows task bar or the macOS menu bar.
- Two-factor authentication is used on the VPN logins. If you try to log in to the VPN and it seems to hang for a long time, check your cell phone for a notice that it is awaiting a confirmation of your identity.
If you get a message indicating that a CS machine cannot be found on the Internet, check your VPN status before giving up or sending a complaint!
For Windows 10 PCs, I recommend activating the built-in OpenSSH client. Instructions for doing so are here.
Older Windows machines can use CygWin.
If you are on a Linux or Mac OSX machine, you probably already have the ssh
command.
Many PCs in the CS Dept labs have the ssh Secure Shell client, which is also a perfectly good ssh client.
sftp
command.sftp
as well.WinSCP for Windows supports both FTP and SFTP. It’s free, easy to use, and has some useful options for synchronizing directories. A portable version that runs from a flash drive is available.
WinSCP is available on most CS Dept lab PCs.
FileZilla for Windows, macOS (OS/X), and Linux is also a good GUI for SFTP. It offers much the same capabilities as WinSCP. A portable version that runs from a flash drive is available.
Both WinSCP and Filezilla are solid programs and the choice between them is largely a matter of personal preference.
An Integrated Development Environment (IDE) merges an editor with a user interface providing access to compilers & debuggers and other software development tools. In this course, most of the IDEs you will be introduced to will be installed on the Department’s Linux servers and you will X server software (below) to interact with them.
The exception to that general rule is VSCode, which can be used for remote development. For this, VSCode needs to be installed on your own PC.
For access from off-campus, I strongly recommend that you use an accelerated X package (X2Go). For programs with complicated interfaces, it can run 10 times faster than ordinary X servers.
Important: The server/client terminology can be a bit confusing.
- You are installing an X server on your PC.
- If your PC is running Linux, you already have this.
- If you use X2Go, you install an X2Go client on your PC.
- If your PC runs Windows, the X2Go client includes an X server.
- If your PC runs macOS (OS/X), you need to install an X server separately, then the X2Go client will work that.
- If your PC runs Linux, you already have an X server. The X2Go client will work that.
X2Go is an enhanced version of the X protocol and is the recommended way to make X connections to our servers.
Windows users can get X2Go here.
macOS (OS/X) users should install XQuartz, the native Apple X server, first, and then get the X2Go client here.
If you get a message complaining that your Mac cannot identify the developer, refer to your User Manual.
Linux users can probably get the X2Go client from their normal software distribution tool. It’s become popular enough that it is offered in the Ubuntu Software Center, the Mint and Debian apt-get
or synaptic
repository managers, etc.
Ubuntu Linux users, in particular, can install it using the commands
sudo apt update
sudo apt install x2goclient
ChromeOS users in this course have, presumably, already installed the beta Linux support. Open your Linux terminal window and give the commands
sudo apt update sudo apt install x2goclient
The X2Go client is portable: You can be install it on a USB flash drive and run it on most Windows PCs, even ones where you don’t have permission to install new software.
When working from off-campus, I do not recommend an ordinary, unaccelerated X connection.
When you are on-campus, particularly if you are seated in a CS Dept lab or using ODU Wifi, a straight X client can be a reasonable choice.
I still recommend the X2Go client, though, described above because it’s generally easier to install and set up.
CygWin/X is an option for Windows users. It builds on the CygWin *nix emulation suite. It’s not the easiest setup. See the User’s Guide on that site for installation information.
VcXsrv is a native Windows port.
Another package you might install on your own PCs is Xming, a free, open source X server.
From the Xming site, you will want to install the “Public Domain” releases of “Xming” and of the Xming-fonts.
Important: do not use XMing on the CS Lab PCs or in the CS Virtual PC lab.
All of the Linux options described below run X as their normal display. Booting Linux from a CD or flash drive is an easy way to get X, as discussed below. The disadvantage is that you can’t access your Windows programs at the same time.
The Cygwin environment provides a nearly complete Unix emulation that runs under Windows. You can pick and choose what packages you want, including the g++ compiler, ssh and sftp clients. This is also the basis for the Cygwin/X package, described above.
Virtualization is the practice of running entire emulated PCs in a software package. This technology has matured quite a bit, and emulated PCs can often run at speeds approaching the real thing.
You could install a free virtualizer such as VirtualBox or VMWare.
Then choose a linux distribution, download its installation CD image, and use it to create a virtual PC.
If you want to go even farther than just emulating Unix, consider getting a full Linux operating system. Linux is actually far less demanding on your CPU and memory than an equivalent Windows installation, so it’s a great way to rejuvenate that old PC that isn’t quite up to Windows 8 (or even Windows 7).
If you’re curious and just want to give it a try, there are a number of Live CD packages that put an entire Linux installation on a single CD, allowing you to boot Linux from the CD without touching your Windows installation on the hard drive.
Most of these are intended as demos and may not allow you to write anything to your (Windows) hard drive, though they often will save files on USB flash or “thumb” drives. Keep in mind that running from the CD is usually slower than it would be from a hard drive.
Ubuntu Linux is the most popular Linux distribution in the world. It is easy to install and manage, and the major Linux software packages tend to try very hard to stay compatable with Ubuntu. Ubuntu can actually be installed as a Windows application that resides in a single large file on your hard drive - you don’t need to re-partition your hard drive. Google for “Ubuntu WUBI”.
I myself use Linux Mint, which offers the same software mix as Ubuntu, but has a more traditional desktop style (menu button, task bar, etc.). I find that style of desktop more comfortable for managing the rather large number of different applications that I employ on a regular basis.
Among the Live CD packages, I know of one that can be run entirely from the CD at no speed penalty and allows you to save files in a special area on a Windows hard drive. Puppy Linux is, despite the cute name, a quite usable distribution, though a little hard to add optional packages to (including compilers, etc.), but quite speedy after an initially slow boot.
Don’t want to carry a CD around? Pendrivelinux gives instructions on how to put a variety of Linux distributions onto a flash drive. Most of their instructions give you a flash drive that you use to reboot the PC into Linux, but there are also some ways to, at some cost in speed, run Linux as a Windows application without rebooting.