All code for the projects must be submitted electronically, from the USNA CS linux labs environment. All code is expected to be clearly commented and cleanly written so it is easy to understand. As always, you will be graded on the CLARITY of your submission and not just the CORRECTNESS.
Accessing the CS Linux environment
You can access the CS Linux environment by
one of the machines in the Linux labs, which will have names like
XXX is either 302, 303, or 316, and
any number from 01 up to 20 (or maybe 22). You can probably leave off
academy.usna.edu part if you are on the yard, by the way.
If you are using Windows, the PuTTy program is your best bet to
access ssh. In Mac or Linux, the program is just called ssh. On Linux,
if you get
tired of typing your same USNA network password all the time, you can
set up key-based ssh. First, on your laptop, run
ssh-keygen -t rsa -b 2048, which will generate a new
public/private key pair. It will prompt you for a new passphrase, which can
be whatever you like (or blank). Then do
(filling in your favorite hostname) to copy the public key to your Linux
home directory. Thereafter, when you ssh from your laptop, it should ask only
for your RSA passphrase, not for your USNA network password. Cool!
Also cool: if you are using Linux or Mac, you can easily mount
your Linux home directory using the
First, install the
sshfs program. In Ubuntu and related Linuxes,
this means you run the command
sudo apt-get install sshfs. Next,
add yourself to the "fuse" group:
sudo adduser $USER fuse. Log out
and back in again for the change to take effect.
Once you have sshfs installed, mounting is a 2-step process.
First, make an empty "mount directory" that will act as a doorway to your
CS Linux home directory, for example
mkdir $HOME/mich. Then
sshfs michXXXcsdYYu: $HOME/mich to do the mount, where as usual
you replace the hostname with your favorite and the directory with whatever you
chose. (Note the colon in that command!!) To unmount the directory later,
fusermount -u $HOME/mich
Unless otherwise specified, all code must be submitted as Python 3
source code files ending in
You're also encouraged to submit a
README.txt file with any
"special explanation" or anything else you want to tell me when I grade your
If it's a big assignment and you want to break up your code into modules,
you may also submit other
.py files as needed to specify your classes.
All classes and functions must be documented with comments unless it should be completely obvious to your instructor what that class or function is for. Your code will be judged on proper programming style (readability, documentation, and organization) as well as correctness.
I've set up some useful aliases for you so you don't have to type so many directories every time. To get these aliases at your command prompt, just run the following from one of the Linux lab machines:
This will define some shortcuts (aliases) to run any programs we will need for this class. After you add this line, any new terminals will get the new commands as well.
The submit program
The program you will use to submit is located at
/home/scs/roche/sub/submit, but can be run by typing
301sub if you ran the
described above. This program is accessible
from the USNA CS linux environment. You can use it from the MI 302/316 lab
or log into one of the machines remotely.
When you run
301sub with no arguments, it will display
Open submissions matching your search: proj 1This means, unsurprisingly, that SY 301 has one thing open for submission, it's a project, and it's number 1. To submit your file or files for this assignment, you make a directory in your account (like
mkdir proj1), then put any files to submit in there.
Once you have your local directory, and you confirm that the assignment
is open for submission, you
cd to that directory and
301sub proj 1(for example) to submit your files. This will check your files, and then bundle and submit them to your instructor. At the end you will see something like:
Submitting 301 proj 1 for user roche to Dr. Roche.. roche/ roche/hi.txt Submission successful.You can see that there is one file that was submitted, called
hi.txt. Note the last line, telling me that it was successful. If you don't see this line, then something went wrong.
IMPORTANT: Any extra files that do not follow the proper naming convention will NOT be submitted. Make sure you check the list of files that was actually submitted to me, because that's all you will be graded on!
All this does is put all your files in a place where I can see them, with a timestamp and your username. You are free to submit the same assignment repeatedly, and I will only look at the most recent submission for grading purposes.