1. Due Date
"Complete" before Wednesday lab meeting the first week of class
2. Lab Overview/Goals
This is not a regular assignment, but is designed to give you
some practice with resources that you will need to use for CS44 lab work
and for the remote teaching of it this semester. We recommend you look
over the tools and resources on this page and spend time before the semester
starts to learn the ones you are not familiar with. In particular, we recommend
learning a non-gui editor like vim
, and trying out tmux
before the start of
the semester.
You learned many of these tools in CS31 and CS35. However, if it has been awhile since you have programmed in C or C++, we recommend you review some of the C++ programming basics before the first lab meeting. The first real lab assignment will provide some additional practice with C++ programming.
Goals
-
Practice tools for remotely connecting to CS machines, and some Unix reminders for course lab work.
-
Learn (or remember) the
vim
editor on our system, which will be useful for remote lab work. -
Reminders about C++ programming and using
make
,gdb
, andvalgrind
. -
Information on other tools we will use for lab work and for remote instruction this semester. Make sure you know how to use Zoom, Piazza, and Slack before the semester starts.
3. Tools for Remotely Working on Lab Assignments
All lab assignments should be developed, compiled, and run on the CS machines. This is particularly important in this course as many labs will require utilizing components that have been compiled and tested specifically for our machine architectures.
3.1. ssh (and a little Unix) Practice
ssh
is used to remotely connect to a CS lab machine. scp
can be used to
copy files between two machines (including your home and a CS lab machine).
-
First,
ssh
into a CS lab machine. See the ssh page for details on remotely accessing CS lab machines and usingssh
. If you are on a Windows or Mac machine you may need to install some software before you can runssh
(cs dept. remote access page)Here is an example of how to
ssh
into the lab machine namedowl
on our system (replacenewhall
with your userID):# from my home machine home$ ssh newhall@owl.cs.swarthmore.edu
-
Next, on the CS system, set up your directory structure for work in CS44 (see the Unix Basics if you are a bit rusty on some of the unix commands for moving around the file system, with some verbose comments):
$ cd # cd into your home directory $ pwd # print current directory (should be /home/you) $ mkdir cs44 # create a subdirectory for this class $ cd cs44 $ pwd # should print out /home/you/cs44 $ mkdir labs # create a labs subdirectory for lab assignments $ mkdir weeklylabs # create a subdirectory for in-lab practice code $ mkdir homeworks # create a subdirectory for homework assignments $ ls # should list the three subdirectories you created $ cd labs $ pwd # should print out /home/you/cs44/labs $ mkdir Lab0 # create a subdirectory for this work $ cd Lab0 $ pwd # should print out /home/you/cs44/labs/Lab0
3.2. vim Editor
We recommend using the vim
editor for editing source code and other files on
our system when you are remotely logged in from home. vim
(or vi
) is a
powerful, light-weight editor that is available on every Unix system, which
makes it a useful editor to know. There are gui versions of vim
available,
but vim
itself is not gui-based, which makes it particularly useful for
editing on a machine to which you are remotely connected.
If it has been awhile since you have used vim
, or if you never learned
vim
, we recommend that you run vimtutor
on our system (and try running
it from within your cs44/labs/Lab0
subdirectory). Follow these
instructions on how to run vimtutor
(note
the specific Lesson numbers we recommend you go through), as well as other
vim
tips.
3.3. tmux
After you learn vim
, you may also want to play around with using tmux
on
our system. It has features that you may find helpful for
setting up a remote session for course lab work on our system.
Here is some information and links about using tmux
on our system. Please note the warning about not leaving old tmux
sessions
running on lab machines; we recommend that you pick your favorite lab machine
to use, and ssh
into that one to run your tmux
sessions.
3.3.1. Finding Good Machines
There are links off the remote tools page to information
about lab machine names. If a machine seems slow, kill your tmux
session,
and try another machine that is not overloaded.
See
tools for finding idle/good machines to use including who
, top
, and smarterSSH
.
3.4. git
Like other CS courses you have taken, we will use git
for course lab
repos, and sharing code with your partner.
We created a Lab0 git repo for you to test out git and to make sure you have ssh keys installed correctly to clone, push, and pull to a repo.
-
Click on the link to our class' CS44 git Org, and you will see a repo named
Lab0-yourusername
. -
Look at the README.md file on github page, and follow diretions to clone it on our system (ssh into CS lab machine and clone there).
There is more information about using git
off the
remote tools page. Look at
the using git for CS labs link.
4. Tools for Class, Labs, and Office Hours
4.1. Zoom and Slack
We will use Zoom for class lectures, Zoom and Slack for lab meetings, and Slack for office hours. Here is some information about using both of these tools Zoom and Slack. The Zoom link for class will be posted to the CS44 Piazza page; all students should already have been invited to the Slack workspace for the course.
4.2. Piazza
Like other CS courses you have taken, we will use Piazza as a Q&A forum for labs, homeworks, and lecture content. We will post information about other class resources here, such as the Slack workspace and Zoom link for our class. We will also post links to class lecture slides and videos. There is information about using Piazza off the remote tools page.
Here is a link to the CS44 Piazza page.
5. C++ programming
Take a look at
Wed in-lab example for week 1
for some reminders about
C++ programming, compiling programs, and debugging tools (gdb
, valgrind
).
We will go over these in lab the first week of class,
but very briefly. If
it has been awhile since you have programmed in C or C++ we
strongly recommend that you try compiling and running these
examples, and try out the gdb
and valgrind
examples
before the first lab meeting of class.
There are also links to C++ programming references off the week 1 weekly lab page.
6. Handy Resources
-
remote tool page has lots of useful links