Steps to set up a new course:
1A. Make directory ~/teaching/$course/$semester.
1B. Make a shorthand link to it.
2. Set up prior and basis links as appropriate.
3. Link Makefile to ~/bin/courses/Makefile-master.mk.
4. If using online notes make directory ~/teaching/$course/$semester/lectures.
In that directory, link Makefile to ../Makefile, and link web to ../web.
Can also set up prior link here (e.g., to ../prior/lectures).
5. Edit ~/.www/.wwwauths/lucccourses.htgroup to remove old students' access.
6. Copy coursedefs.tex, (was also studinfo.tex), syl.tex, and sylsup directory from prior or basis or ~/teaching/general.
Edit as appropriate esp schedule.tex in sylsup (remember weekdate in coursedefs.tex for COMP 390)
When satisfied, do "make earlyinstall.ts".
7. Create/Edit ~/.www/courses/courses.html.
8. Get online roster in roster.txt. (Make roster.txt from locroster.txt after straight paste onto multiple lines or w/o linebreaks.)
9. Copy/edit grades-scinit.csh and gradesmsg.txt from prior or ~/bin/courses if desired.
(If appropriate, also labgrades-scinit.csh or and labgradesmsg.txt or quizgrades-scinit.csh and quizgradesmsg.txt.)
Do "make grades.sc" and possibly "make quizgrades.sc", etc.
10. Do "make web/.htaccess" for setup of various directories and links
(or also rest of web access if email addresses in place)
Add "mkdir web/quizgrades" and/or "mkdir web/labgrades" if needed, and link to them from main directory.
11. Edit ~/.www/courses/$course/$semester/index.html ; update the silentcount invocation and term and section in
and .
For COMP 390, update ~/.www/courses/c390/general/opportunities.html.
Remember to run "htmlincites index.html" if any changes to incite items.
12. Create and edit ~/.www/courses/$course/$semester/hwupload.html (i.e. web/hwupload.html) from prior or ~/teaching/general.
Update title, header, and hidden values for course and term.
13. Do "wwwhodir syl".
14. (Was: On blackboard, make an external link with the "+" icon at upper left to "Courses on My Server".
Use Control Panel -> Customization -> Properties to make course available.)
+ On Sakai, Use Site Info -> Import from Site as appropriate (probably overwrite at this point though may not be different from merge)
Typically reuse Welcome, Assignments, Lessons, Resources, Syllabus, Tests & Quizzes, Web Content
+ Use Site Info -> Manage Tools -> Email Archive to set up address for emailing to class from rgreen@luc.edu; to allow sending from gmail (rgreen or other), also go to email archive options to allow sending from any address.
+ Order: Syllabus, Email Archive, Announcements, (possible: Zoom and Panopto), Courses on My Server, Assignments, (possible: Gradescope), (possible: Tests & Quizzes), (possible: Forums->Discussions, Blogs), Lessons, Gradebook
+ Make course available through "Publish Now" button at Overview or Site Info -> Manage Access.
15. + Export Sakai gradebook to fromsakai.csv
+ ***Better than old approach below: Run eaddrsfromsakai *before* doing or redoing "make grades.sc" and "make web/.htaccess".
(Or just set up EADDR manually from looking at gradebook download.)
+ Do "make grades.sc". Do any needed alteration of column formats in grades-scinit.csh.
(If appropriate, also labgrades-scinit.csh or quizgrades-scinit.csh.)
+ (Old approach was: do (w 1 to adjust field width):
sakai2grades EADDR Student-ID 1
and add "@luc.edu" to each address and expand column width by 8.)
16. Can also add alternative email addresses (at most one alt per student at a time).
Do "make grades.access"; go back and repeat if more alternative email addresses.
Add grader to grades.access (format: space-separated "grader", email address, and password).
17. Do "make grades.txt". (Run testeaddrs. Usually useless now.)
18. Do "make web/.htaccess".
Now includes setup of polling facility by wwwac.
19. Do "make grades/pg".
20. In ~/rolodex: Update CURCOURSEMAILRCS in Makefile.
Do "make .mailrc".
(Do "make courses-gmail.csv"; extract first line and, e.g., 2015Sp entries to file to import to gmail. NO LONGER DO THIS LAST BIT.)
21. To print all pictures, go into Locus Faculty Center and click on roster icon. Select "Include photos in list" and then "View All".
Actually, don't even need "View All"; printable photo roster seems to work best now.
Note: To run polling in class, go to http://.../.pollcontrol
Poll defaults to being open, but you can open/close as well as moving on to a new poll.
Grading notes:
Can use roster2sakai to add tentative sakai IDs based on email IDs. Then must hand edit some, or get them all right using
sakai2grades STUDENTID StudentID 1
after downloading grades from sakai gradebook into a fromsakai.csv file.
Can also copy grades from sakai into grades.sc with a command like
sakai2grades HW1 "Homework1"
as long as fromsakai.csv has the download of the correct set of grades.
(sakai2grades removed bracketed numbers and spaces from sakai headers.)
Finally, can use a command like
grades2sakai EX1
to produce file tosakai-EX1.csv that can be imported into Sakai gradebook (after creating corresponding gradebook entry);
actually tosakai-%.csv available as Makefile target.
Before that, may want to get grades from 1-grade.txt files or such into the .sc spreadsheet by using gradesinsc command.
Use mvsubs to move files on ~/$1hw$2sub to ~/$3/hwsubmit for each relevant student.
Can use comparesubs to compare all submitted $1 files when sitting in hwsubmit/core.
Should rsync everything to Linux virtual machine being used by students unless sure of same environment, and do
unzipping and cchecks there. (Can start with hwtograder from course main directory.) COMP 264 compilation stages
assignment (and maybe some others):
Was: For HW1, do "unzip+file 1" and "cchecks 1 hello" from hwsubmit/core.
s23: Replaced cchecks with earlier version of hw1check.
**F23 AND BEYOND**: REPLACING BOTH WITH NEW hw1check; not yet done on boole, so trying with "hw1check" on rig3; then can do hwtograder if desired.)
NEED TO HAVE OWN SOLUTION on hwsubmit/core/rgreen@luc.edu/1.zip :
Solution produced each semester in rigreenberg account on boole, placed on ~rigreenberg/1.zip, copied from there to ~rig and then rsync to rig3,
and then place in hwsubmit/core/rgreen@luc.edu/1.zip .
COMP 264 endian test assignment & others that generate executable: Use ~/bin/c264/hwtoexecutable (arg hwnum from hwsubmit/core)
COMP 264 other assignments with .s output: Use ~/bin/c264/hwtoassembly
Let's replace below with a more total updating of course materials from one machine to another with:
To pass stuff to COMP 264 grader, do (from course main directory)
hwtograder
(which does
rsync -avzu hwsubmit/core/* boole.cs.luc.edu:/homes/users/cs/faculty/rig/LOYOLAPIDLAST9/core
with appropriate last 9 of PID for grader and does ssh command that makes .graded subdirectories writable.)
Can also make available through web with
rsync -avzu hwsubmit/core/* web/grader # FOLLOWED BY REMOVAL OF .htaccess FILES IN STUDENT SUBDIRECTORIES !!!
Can do above with dirstowebgrader from hwsubmit/core directory.
Grader Directions:
Within each student's .graded directory on boole, create num-grade.txt including exactly 1 line containing the word "Total" followed by a score in a form like "23/50" or "88 / 100"
For no submission, use e.g. "Total 0/100 No submission" with that exact "No submission" text.
Make even that concluding line end with a carriage return, and, above it, the file should contain brief explanations for any score subtractions, for example, something like
"(a) 10/10 pts, (b) 8/10 pts because ..., (c) 10/10 pts, (d) 20/20 pts"; but you can actually skip parts where no points are taken off.
An alternative method to prepare these files is to name them acattaneo@luc.edu-2-grade.txt, awojcik2@luc.edu-2-grade.txt, etc., and put them in a .zip file that you will send me.
To bring 1-grade.txt, etc. back to rig3, go into grader's "core", and use, e.g.,
gradesfromgrader 1
(which does
mkdir 1grades
packstuds .graded/1-grade.txt 1grades
rsync -avzu 1grades rig3.cs.luc.edu:/homes/users/cs/faculty/rig/sys/hwsubmit/core
) and then del . 1grades
Then back on rig3 in core directory: unpackstuds 1grades . .graded
del . 1grades
Then can get grades from 1-grade.txt files or such into the .sc spreadsheet by using gradesinsc command from directory containing grades.sc, e.g., "gradesinsc 1".
COMP 264 HW3:
Old directions to get submissions:
Go to ~rig/public/c264/datalab/handin on boole/shannon/knuth/newton.
On rig3, link ~/teaching/c264/csapp/labs/datalab/grade/handin to the correct semester's handin directory;
From boole/shannon/knuth/newton, rsync -avzu ~rig/public/c264/datalab/handin/* rig3.cs.luc.edu:/homes/users/cs/faculty/rig/teaching/c264/csapp/labs/datalab/grade/handin
Then follow README instructions in the "grade" directory.
Put to grader with:
rsync -avzu ~rig/teaching/c264/csapp/labs/datalab/grade/{handin/,handin.grades} boole.cs.luc.edu:/homes/users/cs/faculty/rig/LOYOLAPIDLAST9/core/hw3
NEW DIRECTIONS TO MAKE LAB AVAILABLE (starting on rig2 now rig3):
cd ~rig/teaching/c264/csapp/labs
cp -r datalab-[sf]XX datalab-TERM (copy from most recent term rather than just one with same puzzles)
(Ensures S23+ version of writeup/Makefile & src/puzzles with correct arithLeftShift.c and rotateRight.c and no "arithmetic" subdirectory.)
Follow directions in datalab-TERM/README; basically just need
new (or use old) src/selections-TERM.c and link src/selections.c to that
Also, new (or old) writeup/datalab.tex; link main directory hw3.tex to that
(During some terms, linking was done from main directory hw3.tex to writeup/datalab.tex with dates edited therein.)
F '25 forward: Maintaining files in form datalab-TERM.tex so will be able to just make datalab.tex link to the right one, but will always need to make a new one like the old one with dates edited. (Older ones stored as datalab-f24.tex and datalab-s25.tex may still need other editing.)
Copy correct coursedefs (and other stuff) and datalab updates to boole:
rsync -avzu ~rig/teaching/c264 boole.cs.luc.edu:/homes/users/cs/faculty/rig/teaching to bring everything up to date on boole.
(Was two separate commands: rsync -avzu ~rig/teaching/c264/TERM/* boole.cs.luc.edu:/homes/users/cs/faculty/rig/teaching/c264/TERM
rsync -avzu ~rig/teaching/c264/csapp/labs/datalab-TERM boole.cs.luc.edu:/homes/users/cs/faculty/rig/teaching/c264/csapp/labs)
Do make stuff on boole:
(Was F'18+: Do straight make on shannon in datalab-TERM (boole as of Fall '22).
(In S'18: was "make CC=gcc-4.8"))
Edit src/dlcdir/Makefile on boole to add "-std=gnu89 -fcommon" at end of _CFLAGS.
Use "make superclean" and "make" in src/dlcdir if necessary.
Then do make in datalab-TERM directory.
After everything is made successfully do
cp datalab-TERM-handout.tar ~/public/c264/datalab-handout.tar
For GitHub, Fall '24+:
Use http://classroom.github.com to create new classroom COMP264-sss-[Fall/Spring]-YYYY in existing organization. Don't try roster syncing.
From regular github login, create new barebones repository C264[F/S]YYHW3 with .gitignore for C code; at creation, or later in settings, make it a public template.
Go into repository to upload files as follows:
Look in the ssh section of the "Code" pulldown button. Use the ssh there in a sequence of commands in the
datalab-TERM-handout directory:
git init
git add .
git commit -m "Initial template setup"
git branch -M main
git remote add origin
To make next thing work, may need "git config pull.rebase true" and "git pull" beforehand.
Also before the pull?: git branch --set-upstream-to=origin/ main
git push -u origin main
Use settings on the repo to make it a template.
Make new Homework 3 using the COMP264[f/s]yyHW3 as starter code for private repositories with students having admin access; no IDE.
Can enable feedback pull requests, but I haven't really used that yet. Copy invite link to put into hw3.tex .
NEW DIRECTIONS TO HANDLE SUBMISSIONS:
First remove stuff from prior term that was copied to handin and handin.grades under ../csapp/labs/datalab-TERM/grade; may need this on boole as well.
(May want to use comparesubs to compare all 3.c files when sitting in hwsubmit/core before proceeding with rest and/or grep for luc.edu.)
From core directory, after each student has a bits.c (MVED FROM 3.c IF NECESSARY): ~/bin/c264/hw3prep TERM which does:
+ Creation of .graded/3 for each stud, copying of bits.c to $stud-bits.c, moving $stud-bits.c to grade/handin, and moving bits.c to .graded/3
+ Copying nosub.txt to .graded/3-grade.txt for students with no submission
+ rsync -avzu ~/teaching/c264/csapp/labs/datalab-TERM boole.cs.luc.edu:/homes/users/cs/faculty/rig/teaching/c264/csapp/labs
THEN DO BELOW FROM BOOLE AND BRING BACK TO rig3 with rsync LIKE AFTER packstuds ABOVE; THEN BACK TO mved COMMANDS BELOW ON rig3:
From ~/teaching/c264/csapp/labs/datalab-TERM/grade:
Run grade-handins.pl
Correct syntax errors in ...bits.c to produce ...-fixed-bits.c and rerun grade-handins.pl:
(That is, in handin foreach problem student:
cp $student-bits.c $student-fixed-bits.c
and then edit and use "grade-datalab.pl -f ..." on each file and keep1 before rerunning grade-handins.pl)
DO NOT EDIT ANY .out FILES BEFORE RERUNNING grade-handins.pl
mkdir ~/.www/cgi-write/hwsubmit/c264/TERM
mkdir ~/sys/hwsubmit/core
cp -r handin.grades ~/sys/hwsubmit/core
cd ~/sys/hwsubmit/core
mv handin.grades 3grades
If there are fixed files, subst '+Total+Subtractions for fixes needed to get through dlc: Total+' 3grades/*-fixed-bits.c.out
Edit fixed files with appropriate substraction amounts and push "Total" to new line.
Remove unfixed bits.c.out files that have fixed versions
Insert style and other points in files on 3grades, and remove .~1~s
Also, as of s25, add a line for Github Usage at 27 points after coding style and bring correctness max to 52 and performance max to 14
rsync -avzu 3grades rig3.cs.luc.edu:/homes/users/cs/faculty/rig/sys/hwsubmit/core
SWITCH FROM boole BACK TO rig3
mved 3grades/=-bits.c.out =/.graded/3-grade.txt # ignore fixed errors
mved 3grades/=-fixed-bits.c.out =/.graded/3-grade.txt
rm -r 3grades
cd ~/sys; gradesinsc 3
Some other specialized scripts:
collage: make a collage of pictures, e.g., from COMP 170
probsum: summarize usage of CLR problems; to generalize to other texts
cpascores, cpascorescore
Before finalizing grades, wise to run gradestrings; should just return entries in CLS and NUMBER columns.