The most important point to be made here is DO NOT SEND YOUR PROGRAMS DIRECTLY WITH E-MAIL. With as many students as there are in the class, direct e-mail submission leads to chaos. There are too many options. "Should all files be placed in one e-mail or in separate e-mails? Should they go as attachments or in the body of the e-mail? Can I use the e-mail program with my browser at home? Which address do I send my programs to and what do I do if I forget it? "
You get the picture. There are too many ways that things can go wrong.
To make this process easier on you and on the TA, custom programs have been created specifically for submitting course assignments. This page details how to set up your account on turing/hopper in order to use the submission programs.
cd ~ mkdir bin
To make the link, (assuming that you are in your home directory)
cd bin ln -sf ~t90rkf1/bin/mailprog.340 mailprog.340Make sure that you've typed it correctly. Many errors that people have can be traced to an improper link.
cd ~ mkdir 340 chmod 700 340
Each assignment should have its own subdirectory off of your course directory. Each assignment directory should contain the source code and Makefile for each assignment. You may place the object files and the executable file in the same directory, but these should be removed before the assignment is submitted.
t90kjm1@turing:~> cd 340 t90kjm1@turing:~/340> mailprog.340 hw1 ********************************************************************** * WARNING : Do NOT use this program to mail notes to your Instructor * * Doing so may result in the loss of your program !! * ********************************************************************** Enter program number for your assignment : 1 ***************************************************** * Section 1 : McMahon / Dick MWF 11:00 * * Section 4 : McMahon / Uppalapati W 6:30 * ***************************************************** Enter your section number : 1 shar: Saving /tmp/mailprog.14645 (binary) t90kjm1@turing:~/340>
From t90kjm1@turing.cs.niu.edu Tue Jun 19 10:49:53 2007 X-Original-To: t90kjm1 Delivered-To: t90kjm1@turing.cs.niu.edu Date: Tue, 19 Jun 2007 10:49:53 -0500 To: t90kjm1@turing.cs.niu.edu, z1567342@hopper.cs.niu.edu Subject: CSCI 340 : Program 1 Section 1 User-Agent: nail 11.25 7/29/05 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit From: t90kjm1@turing.cs.niu.edu (Kurt J MCMAHON) Course: 340 Program: 1 Section: 1 User: t90kjm1 Name: Kurt J MCMAHON #!/bin/sh # This is a shell archive (produced by GNU sharutils 4.6). # To extract the files from this archive, save it to some FILE, remove # everything before the `!/bin/sh' line above, then type `sh FILE'. # # Made on 2007-06-19 10:49 CDT byNote that the word FAILED occurs several times in the above message. This does not mean that the submission failed. Rather it is part of the error checking instructions associated with unpacking the assignment when it reaches the TA. For your information, the section near the end that looks like lines of random characters all starting with M is the actual compressed source code for the assignment. If this section becomes hundreds or thousands of lines long, it's a good indication that an executable or object file slipped through and was accidentally submitted.. # Source directory was `/home/turing/t90kjm1/340/hw1'. # # Existing files will *not* be overwritten unless `-c' is specified. # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 1443 -rw-r--r-- mailprog.14645 # md5check=true MD5SUM=${MD5SUM-md5sum} f="`${MD5SUM} --help`" || md5check=false if ${md5check} then if echo "${f}" | grep "sage: ${MD5SUM} \\[" >/dev/null then if echo "${f}" | grep 'c, --check.*check MD5 sums against' >/dev/null then : else md5check=false fi else md5check=false fi fi ${md5check} || \ echo 'Note: not verifying md5sums. Consider installing GNU coreutils.' save_IFS="${IFS}" IFS="${IFS}:" gettext_dir=FAILED locale_dir=FAILED first_param="$1" for dir in $PATH do if test "$gettext_dir" = FAILED && test -f $dir/gettext \ && ($dir/gettext --version >/dev/null 2>&1) then case `$dir/gettext --version 2>&1 | sed 1q` in *GNU*) gettext_dir=$dir ;; esac fi if test "$locale_dir" = FAILED && test -f $dir/shar \ && ($dir/shar --print-text-domain-dir >/dev/null 2>&1) then locale_dir=`$dir/shar --print-text-domain-dir` fi done IFS="$save_IFS" if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED then echo=echo else TEXTDOMAINDIR=$locale_dir export TEXTDOMAINDIR TEXTDOMAIN=sharutils export TEXTDOMAIN echo="$gettext_dir/gettext -s" fi if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then shar_n= shar_c=' ' else shar_n=-n shar_c= fi else shar_n= shar_c='\c' fi $echo $shar_n 'x -' 'lock directory' "\`_sh14654': "$shar_c if mkdir _sh14654; then $echo 'created' else $echo 'failed to create' exit 1 fi # ============= mailprog.14645 ============== if test -f 'mailprog.14645' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'mailprog.14645' '(file already exists)' else $echo 'x -' extracting 'mailprog.14645' '(binary)' sed 's/^X//' << 'SHAR_EOF' | uudecode && begin 600 mailprog.14645 M'XL(`"'[=T8"`^U8ZT_C1A#/9R3^AZTK%8='L`.$E@`2I5>ITAVM[JC4"A!R MG`WLG6-;W@V/(O[W[ML[&R>`U+L/E0>))+OS_LW,KIU02F[RN)>FG:]&$:=! M%/'/_LY@;U?^CO=VY"?_UH_W=SIQ--C9V]_?B^-!)^+_=@<=%'6^` LM!2A3CV6PZPM5%/[H:-FYS M9R[Z<;TIO,`/Y8 S:)"L2AE+IU'LR) E\GC%'/M4F?- M,RJ*S/((G3<8L#Q+0%971$8XUF-CC(8@DHLKP5\'L9!M4^36X56&697D-$D9 MX86Q4$+F5/@Q34@>=IV*`!(&Z?>$L@NWOC3F0D,^FVIN:A3S?\XJKT48K:.T M.]1P>I$Z+)NN+H>_(=I72+W2B@Q#BE28S:H<11K"5R$(TG;E9E<(*I8CHY+H MSC="OY(,AX%1''#("GIP,")Y4CW:0,@$A=\Y`EU3@T^VIG%5H<-#%+RKJJ)" M6VB6)Z,,(U:@HL2YL4;1A(M?YH&M8OQ`6!C75?VL33K6>B+V,%1MTT4_N.'* M;[S0*/D'%Q.8EZ[6>G_+E:!PJ?\;&W+3NO$?FE\05)H5U$X%%WOEB%G4)?!B M?\(BV/1[Q:\*XMC=WD9_5*K&RJ)BZ);'BZMZGVM@`MN*W-S*+Q2S^W!WT)6` M*R^0<4/8YT?'96Y!-N(9GM32>_M*FO^9)"&[&<>NZ@`P!-J04`_=DZ+]?M?E M0FJR-AGI[RA.<:P$#3YH1>\>RA[ZA1]:P6(_Y9GBN?FS&OMU'F"J-5IHG+"D M%K2'SX3W4$ADUR*"#L'4X[5*Y@O8A9]<]?SSR%2@21;.QYGY'#84VDO#_2WE M9B:.U*;FC?S:8P\LT"[*[I*KYX\E]M?,B6*O!O66@.9BH)?5J:M$IG4_^P4O MQYGUYNW#S$G+J^>91=X5?EO#_:BJ[=Q1\%$J>*G9M.""*O9:IH%#]ZI`9DD7 MJ(Q[;7"&[Y'7"I+!9A\=']=`@GF]!*!Y:5.6YK?PM=XTM6#D+1@34O'K;)EP M$(J)"XUS0UV<4>LWZ&`OKZY[C7S[-9OPVN=QBZ"L<$HH=R]4NGU?5*"^AH!_ M!##Z3_QZG-[*,6,F42XG);@"OV40N?#H%N-MGT[+T$W`IC^G&B[!773$S77A M5!SQ"?)EZ*P]^YX*BT2(SHVA9AR#]?5U]%M^EV1\X,$D(+X%>CJC>$F<=<%Q MZVNG:Y[K3_"GD)@;UN`2[T#9]70M'`ZJ"!J2:Q\_X+2WY,6V)%?ZH,_$8' M7(KQ&(_]5'G@-!KP$K(@&>:IQ\W&\,54PI"/YPOI&V?PS3;6T5:L+C\?E^?U MN6[H9#T/SCP'H:=XQX^S$=7?':L749K0[`I'N6]+?,D M7S^JZ,?X>L%Y@A>+/;VLD^NP]'W& \'N`@H(7W2"
These messages to you serve as a verification that you did send the assignment. They can also serve as a backup, but there are better ways of backing up your assignments, and you should be using those means for backing up your assignments. Once you have received a graded assignment from your TA, it is safe to delete your submission copies for that assignment. In fact you should delete your submission copy in this case because it takes away valuable space from your disk quota.
There really isn't a quick easy way to see which file in a directory is an executable program, so what mailprog does instead is check to see if the execute permissions are set on any file. If there are, it gives the executable file error.
This has some repercussions for those who write their programs on a Windows box and then use ftp to transfer the files to turing/hopper. Windows based file systems have traditionally not worried too much about things like file permissions. On a Unix systems file permissions are a big deal. By default when transferring files from a Windows box to a Unix box, most ftp programs will set the execute permissions on all files transferred. This usually results in the fewest problems. Our case is an exception.
People who do transfer files from a Windows box to their Unix account should always check to make sure that execute permissions are removed. First remove the actual executable program, or it will be sent with the assignment, wasting valuable space. Then the command
chmod ugo-x *should remove the execute permissions on all remaining files.
Absolutely. You can submit as many times as you wish. But the electronic submission system will only keep your last three submissions. The last one is what the TA will grade, so if you submit a bad version, make sure you resubmit your last good version after it.