Course Resources
Exam Crib Sheets
No study sheets or other aids are allowed for the midterm exams.
Students will be allowed to make and bring one study sheet to use during part of the final exam. The second half of the final exam will be done without any study sheets or other aids. Here are the detailed regulations:
- Each sheet must be standard letter-size paper (8.5 by 11 inches).
- Sheets must be individually prepared. This means that, although the content can be the same between students, everyone's study sheet should be unique. Students are encouraged to study in groups and talk about study sheet content, but must actually make their own.
-Study sheets will be collected with the exams.
Sending Programming Questions via Email
Your instructors encourage you to send emails with questions about your programs. You may be surprised by our responsiveness and ability to help, and we do very much want to help. So, please send us your questions.
However, not all email questions are as easy to answer as others, and to make the process smoother for you, here is some guidelines (— credit to Dr. Dan Roche for the points!)
- Clearly indicate what class, assignment, reading, etc you are talking about. Probably a good idea to put the class and the assignment number in the subject of the email, along with a short description.
- Try to ask a clear question that probably has a definite answer. If your message says "I'm lost and don't know where to start", there's nothing I can do for you over email. In that case, you should schedule a time to talk in person.
- Explain (briefly) what you've already tried to solve your problem. That way we don't tell you something you already know!
- If you are asking about programming, include the short (maybe 10 lines) segment of code, and (if applicable) the exact error message you are seeing, in the plain-text body of the email. You should also attach the entire source code file(s) in case the error is not in the part of the code that you think it is and I need to look elsewhere.
- If you don't understand the response, or it's not helpful, email your instructor again so that they can try to explain it better. Keep in mind that the goal is to guide you to the solution, not just tell you how to do it.
- If you haven't received a response within 48 hours, email your instructor again to remind them of your query because your message has probably been buried in a large stack. (It is unlikely that this should happen!)
Connecting Remotely to Lab Machines
You should be able to connect to any CS department lab machine in order to work on your assignment and submit your code (see below). Submission will only work on a lab machine and not on your VM of your laptop.
To connect to a lab machine you should use ssh
:
ssh -Y username@michROMcsd##u.academy.usna.edu
where:
username
is replaced with your username (e.g., m189999)ROM
is replaced by a Michelson lab room number (e.g., mich302)##
is replaced by the machine number you want to connect to (e.g., 02)
So, for example, for users m189999 to connect to lab computer number 02 in mich302, they will use the following ssh command:
ssh -Y m189999@mich302csd02u.academy.usna.edu
Copying files to and from a Lab Machine
You can use a similar process to copy files to and from a lab
machine from your local linux VM machine. The command you will use
is scp
which stands for "secure copy." It uses the ssh
protocol
to connect and perform a copy, so the syntax is very similar to
that of ssh
.
For example, when you are on your local VM, you can copy a file
(helloworld.java
) from the lab machine to your local VM using the
following command:
scp m189999@mich302csd02u.academy.usna.edu:/path/to/helloworld.java .
where, the username and hostname information is filled out like
above, and you provide the path to the helloworld.java
file you
wish to copy. This will copy the file to the current directory,
indicated with a .
as the destination.
You can copy a file to the lab machine in a similar way:
scp /path/to/helloworld.java m189999@mich302csd02u.academy.usna.edu:
Notice the :
/colon at the end of the hostname. This is required
to indicate that this is a remote copy. If you want, after the
colon, you can specify a destination path for the file, for example:
scp /path/to/helloworld.java m189999@mich302csd02u.academy.usna.edu:ic312/HW1/
This will place helloworld.java
in your ic312/HW1
directory on
the lab machine.
Code Management System
We will use a code management system that works through the lab
machines to both distribute code examples and starter code to you
and for you to submit code to us. This systems should be familiar
from ic221
.
The code management system ONLY works on the lab machines and you must be connected to a lab machine to receive code updates and submit your code.
Updating your ic312 directory
To retrieve code updates, you run the "update" script while
connected to a lab computer, either at the computer or under ssh
.
~aviv/bin/ic312-up
This will create a directory called ic312
in your home directory
and synchronize any file updates under there. Only files in this
directory on the lab computer can be submitted for credit.
Submitting your ic312 code
To submit your HW/project code, you use the "submit" script.
~aviv/bin/ic312-submit
The submit script will prompt you for the assignment to select, so
select the right one. Then it will confirm the submission. The
process works by fixed paths under your ic312
directory, so if
the code is not in that directory at the right path, it will not
be submitted. Check the output for which files are included in the
submission.
You may submit multiple times. Only your last submission will be graded.
Checking your Submission
You can check your prior submission and which files were submitted using the check script:
~aviv/bin/ic312-check
The script will list all your submission and times submitted.