Unofficial grades available
I've posted the unofficial course grades to the online marks database.
I don't know when official grades will appear on ROSI, but hopefully
it won't be too long.
I hope you enjoyed the course and learned a lot. Thank you to everyone for all the effort you put into the course, and I wish you all the best in your future!
Final exam marks available
I've finally been able to post the final exam marks.
If you want to know why you got the mark you did, look at the
sample solutions on the Exams page
(this should explain the marks for most students).
The class average on the final (not that it means much) was 70.
A word of caution: computing the raw total is only an approximation of
your final grade, since it does not include any adjustments.
I'll let you know unofficially what your grade is once I have them.
A4 marks available
Assignment 4 marks are now available.
Your Marks.txt file has been added to your repository,
and the online marks database has been updated.
Some students have a TestReport.txt, some don't. Due to the nature of this
assignment, the autotesting didn't always work. Our testing was composed of
compiling your programs using a port we specified, testing your client with
our server, testing our client with your server, and the majority of the
testing involved your client with your server.
If there is a problem with any of your marks, you must let me know immediately! Final exam marks should also be posted soon. (edit: and A3 bonus marks in the next update too)
A3 marks available
Assignment 3 marks are now available.
Your Marks.txt and TestReport.txt files have been added to your repository,
and the online marks database has been updated.
If there is a problem with your marks, please let me know as soon as possible.
Assignment 4 and the final exam marks, and unofficial course grades should be available the first weekend in January.
Happy Holidays
Well, the term is finally over, so you can all take a well-deserved break.
The University is shut down now until January, and though we're madly
marking your final exams, final marks won't be available until then.
As soon as they're ready, I'll post the unofficial marks to the course website.
Official grades will be posted to ROSI sometime later in January.
In the meantime, please peruse the sample solutions to the final -- they're
posted on the exams page.
I hope everyone had fun in the course, and I wish everyone well as you move on to greater things. Now as an end-of-term treat, here's to carolling in the shell. :)
MERRY CHRISTMAS better !pout !cry better watchout lpr why santa claus <north pole >town cat /etc/passwd >list ncheck list ncheck list cat list | grep naughty >nogiftlist cat list | grep nice >giftlist santa claus <north pole >town who | grep sleeping who | grep awake who | grep bad || good for (goodness sake) { be good }
A3 and A4 solutions posted
Sample solutions for assignments 3 and 4 have been posted to the
Assignments page.
Final review session
I'll hold a final review session this Monday, December 19
from 5pm to 7pm in BA 3234. Bring your questions, from the course or
from old exams. I am planning to run it more as an office hour Q&A,
but we could go through the course topics in an orderly fashion if
turnout is high.
Office hours this week
I'll be changing some of the office hours due to it being exam week.
This week, my office hours are:
Tuesday, 12-1pm in BA 3234 (changed time)
Wednesday, 1-2pm in BA 3234 (normal time)
or by appointment. Bring any questions related to the course, including
old exam questions.
Next week I'll hold a review session on Monday (time and location to be announced).
Office hours this week
One of the TAs will be filling in for me in Wednesday's office hour.
We've also scheduled an extra office hour for Thursday, 2:30-3:30, in BA 3234.
Bring any and all of your A4 questions.
Assignment 4 announcements
Today I have a collection of assignment 4-related announcements.
So, to restate, we will not be testing or evaluating your ROSHAMBO or /play commands!
Kill your left-over processes
I was looking around the CDF servers, trying to find out why the load
averages were so high. I discovered hundreds of processes left behind
(some running, some blocked) named rps1 or rps2.
If you left any rps processes behind when you logged off, please come
back and kill them, for the benefit of other users (and yourself).
Do a ps aux | grep yourlogin to get a listing of all processes
you own on the machine.
A2 marks available
Your assignment 2 has been marked. Your Marks.txt and TestReport.txt files
have been added to your repository, and the online marks database has
been updated. If there's a problem with your marks, please let me know.
Problems with email
There was a serious problem with the email servers the past few days, and
messages may have been lost. The problem has been corrected, but if you
don't get a response from me, either post the question to the newsgroup or
resend it to me.
Warning regarding final exam aids
I've been asked to pass along this warning:
The Faculty of Arts and Science has become very strict about unauthorized
aids at final exams. This is a response to some innovative cheaters.
The consequences have been significant for students who have been caught
with unauthorized aids, whether or not they intended to use them to cheat.
For example, simply having a calculator or cell phone on your desk may
cause you to have to explain yourself to the dean.
I have seen this happen in the past, and since the final exams are run by
the Faculty, instructors have no control over what happens. Be careful,
and listen to the instructions carefully! If in doubt, ask before
the exam begins.
RPSpro Tournament to be held
The tournament for part 3 is to be held at 12:30 this Thursday (right before class), in the
regular lecture room. If you still want to enter (for half bonus marks),
submit by 10pm Wednesday night. Your program must beat one of my programs
to qualify (and though my programs are really simple, I'm not saying how
they play).
Final exam "cheat" sheet posted
I've posted the "cheat" sheet for the final exam on the
exams page. This sheet will be provided with the
final exam, so you do not need to bring it with you. You may also bring
your own "cheat sheet", but size is limited to one letter-sized
handwritten sheet (both sides).
Assignment 4 posted
Assignment 4 is posted in the usual place.
Sockets notes updated
I've updated the sockets lecture notes to include a few
new slides that I added after the initial posting.
Grace days FAQ
Q: Can I use grace days for assignment 3, now that it was extended?
A: Yes. The grace days will still extend your hand-in date like normal.
Q: Do I get bonus marks if I have grace days left over at the end of the
course?
A: No. Grace days are meant to be used if you have a last-minute emergency
that prevents you from finishing your assignment on time. If you don't
need to use your grace days, then good for you!
Q: Can I use multiple grace days for assignment 4?
A: Yes. Thanks to the exam being late in the exam period, I don't need to
rush to get the assignment marked, so I can allow multiple grace days to
be used. Be sure to submit your grace days form before the due date,
as we'll start marking assignments as soon as possible (and if we mark your
assignment before you submit the form, we won't know you didn't finish it
yet).
Assignment 3 extension granted
Due to popular demand, but mostly due to lots of good questions and good
attendance in class today, I've agreed to extend the due date for
Assignment 3 by two days. Assignment 3 is now due Saturday, November
19 at 10:00pm.
First draft of Assignment 3 part 3 posted
The first details for the optional part 3 component are now
posted on the assignments page. Additional details and hints will be
added in the coming days.
Assignment 3 clarifications and hints
EOF (end of file) is a state of a read file descriptor, not a string
being sent over the pipes. When you've opened a file descriptor for
reading, and you've already read everything in the file (where file may
mean pipe), the read functions (read, scanf, fgets, etc.) will return
something indicating that you've reached the end of the file.
To end a file coming from the keyboard, press Ctrl+D at the start of a
new line. To end a file that's actually a pipe, close all the write ends
of the pipe.
You will need a separate child process for each player instance in the tournament. So, if you specify 5 competitors, you will have one roshambo parent process and 5 children processes. You (the roshambo parent) will need to interact with each of the children processes, so you will need 10 pipes to do it (5 pipes for parent writing to child, and 5 pipes for child writing to parent).
Further hints are constantly being posted to the course newsgroup, so make sure you take a look there if you encounter problems.
Assignment 3 sample programs
I have posted an sample executable in the
/u/csc209h/fall/pub/a3 directory on CDF.
The rps0 program is a random player and prints lots of debugging
output to stderr, and might help testing your assignment.
A sample umpire program is named roshambo.sample
in the same directory.
To eliminate the debugging ouput from the
rps0 program, redirect the stderr to /dev/null.
For example,
$ ./roshambo.sample rps0 rps0 2> /dev/null
If you notice any bugs or poor error handling in the sample programs, please let me know and I'll fix it.
Remember: The programs you submit should not print the debugging / diagnostic information to stderr like the sample programs do. I've added these statements to the sample only to help you get your programs working correctly!
History's Worst Software Bugs
Wired has a new article on
History's Worst Software Bugs.
Most of these bugs are problems we might encounter or discuss in this class.
Several of them are simply buffer overflows, which I'm sure everyone has
accidentally done at least once already.
Take comfort in that though buffer overflows might cost you some marks,
you probably won't end up killing anyone.
Assignment 3 available
Assignment 3 has been posted here. Almost everything
you need to know to complete the assignment has already been covered in
class, so get started now! Dealing with processes and interprocess
communication can be tricky, so make sure you start as early as possible.
Midterm sample solutions available
Midterm test solutions are available as
PDF or
postscript.
The midterms will be returned in class on Thursday.
Online marks available: A1 and midterm
The class marks database is now online here.
Make sure you change your password.
Midterm marks
The midterm has been marked, and marks posted online. The tests will be
returned this week. Due to the fire alarm at the start of the test,
and the added stress and shorter writing time resulting, I have adjusted
the marks by adding 4 points to everyone's score (the MTadj mark).
It was an unfortunate event, but I think this is the fairest way to deal
with it. If your resulting score is above 100%, enjoy your bonus!
Office hours cancelled today and tomorrow
This week my regular office hours are cancelled. If you need an
appointment to talk with me this week, please email me.
Assignment 2 solution posted
Sample solutions for assignment 2 have been posted to the Assignments page.
Midterm cheat sheet
The "cheat sheet" I will be providing with the midterm is available
posted here as a PDF or PS.
Midterm test information
The midterm will take place Tuesday, November 1 during regular class
time in the regular room (BA 1180). The focus will be on the concepts
covered so far in the course. Specific syntax details that can easily be
looked up on a man page or errors that would be caught by the
compiler will not be important, and such minor errors will not be
penalized.
I will provide a "cheat sheet" that will list any C library function declarations you might need to use, switches for test, etc. This will resemble the cheat sheet provided in the Winter 2005 exam. Note that processes will not on the exam this term.
Extra pre-midterm office hours
I've scheduled extra office hours for this Monday, October 31, from
2:30 to 4:30 in BA 3234. Bring questions from old terms, textbooks,
or topics that you're having trouble with. In lieu, my office hours on
November 1 and November 2 are cancelled, so I can get the exams marked as
quickly as possible.
Assignment 1 marked
Two files have been added to your assignment 1 CVS repository.
TestReport.txt contains our tests, the output of your scripts for each
of our tests, and the expected output, if your output differed.
Marks.txt contains a copy of the marking scheme, breakdown of your marks
on each point, and comments from the grader. The files we used for the
part 2 testing are available in the
/u/csc209h/fall/pub/tests/a1 directory on CDF.
If you think an error has occurred in the marking of your assignment, please fill out an online Remark Request form, which will be available shortly in the forms section of the website.
The class average for the assignment was 20.3 out of 30. Many people neglected to read the specs closely, and named their .macros file incorrectly or stored it in the wrong location. Be sure to read and follow the assignment specs carefully!
Final exam schedule posted
The Faculty of Arts and Science has posted the
final exam schedule. I'm not allowed to tell you when or where the
exam is just in case I make a mistake, so you'll have to look it up
yourself.
Sample C file from tutorial posted
The printdirs.c example from
tutorial has been posted to the Assignments page (since it may be useful
in writing your assignment).
newerthan clarifications
Some clarifications have been added for newerthan. Only one of
-u or -c can be specified, and clarifies that only one
of the stat time fields should be checked (depending on options
specified). Also, if -a is not specified, don't print hidden
files.
newerthan example correction
There was an error in the example for newerthan. I included a directory
(specifically .) when the specification specifically asks for
only regular files. The example has been corrected to properly omit
directory names.
CDF default dictionary fixed
The CDF administrators have indeed fixed the default dictionaries.
You can now choose from Canadian, American and British English word lists
in the /usr/share/dict directory.
Assignment 2 posted
Assignment 2 is now available from the usual spot.
Previous weeks notes reposted
I've reposted all previous lecture notes in 4-slides-per-page and
1-per-page formats.
Using grace days
Also, if you wish to use (or change your use) of assignment grace days,
use the online form. We'll use the latest form submission to determine how
many days you want to use (so if you want to change from 1 to 2, just
resubmit the form saying 2 days).
Grace days form is available
If you wish to use your grace days for an assignment, please complete
the online form now available here.
Regular expressions/grep tutorial added
In the Online Tutorials section,
I've added a link to a grep tutorial I found on the Internet.
Some of you might find it useful.
Assignment 1 example error
An error in the part 1 example has been brought to my attention. It should read:
seawolf$ macro -l countusers macro "countusers" is undefined
The -l was accidentally omitted. The assignment spec has been corrected.
Another assignment correction
There are actually two system include directories you should look
in: /usr/include and /usr/include/linux. If a relative
path is specified in a #include directive (for example,
#include <sys/cdefs.h>), you should search relative to
your search directories.
[Reasons for the second system include directory: Most Unix-like systems behave in a very similar way, but run on different kernels and hardware. We have a common set of library functions to make systems look almost identical for programming, but the details will vary. The generic header files are placed in the top level, and system details are placed in separate directories, which are included depending on which machine we're compiling on. On CDF, we run Linux, hence we should also consider the /usr/include/linux directory. There are also additional directories for files required by different compilers and different programming languages, but for simplicity, we'll ignore these other directories for the assignment.]
Please also note that included files do not need to have a .h extension. They may have any extension (commonly, we may want to include .c files too) or even no extension at all (most C++ headers omit the .h extension).
The assignment spec has been revised to reflect these clarifications.
Typo in assignment example
Due to the way HTML tags work and my poor job of proofreading,
an error crept into the assignment 1 specs with regard to the
helloworld.c example. I've corrected the HTML, now
properly encoding the < and > characters (thus not misleading your
browser into thinking this was some strange looking HTML tag).
The helloworld.c example should have read:
#include <stdio.h> int main() { printf("Hello world!\n"); return 0; }
There was also a small (but obvious) error in the sample output (I used a different filename to generate the example, but forgot to go back and update the output).
My apologies for any confusion. The assignment specification has now been corrected.
General questions and the newsgroup
Please try to post general questions to the course newsgroup,
ut.cdf.csc209h.
Everyone in the class then benefits from the answer, and you'll probably
get it answered sooner too (and maybe even by one of your classmates).
If you haven't used network news before, there's some information on the CDF website here.
Running your scripts
Are you having trouble running the script you wrote for assignment 1?
Check the following common problems:
Also, I've updated the Using CVS tutorial to reflect the proper paths for this term; sorry I missed fixing this before.
Assignment 1 posted
Assignment 1 is posted here.
Make sure you test out your CVS repository now and let me know
if you are having any problems.
Repositories
The CVS repositories have been created. If you were registered before
today, then you should have a repository. If you registered later,
you will probably need to email me about getting a repository set up.
If you want to check out a local copy of your repository on CDF, you
will need to set CVSROOT
as follows. Replace yourid
with your CDF user id.
# in tcsh (the default shell on CDF) setenv CVSROOT /u/csc209h/fall/pub/repo/yourid # in bash export CVSROOT=/u/csc209h/fall/pub/repo/yourid
If you are trying to connect to the repository from home, you will need
to set your CVSROOT
to the following string.
(Please note that it may be slightly different depending on the
application you are using.)
:ext:yourid@cdf.utoronto.ca:/u/csc209h/fall/pub/repo/yourid
You will also need to set CVS_RSH
to ssh
if
you are connecting from a remote machine.
Finally, you can check out the repository:
cvs co assignments
Now you will have a directory called assignments
containg
5 directories: CVS, a1, a2, a3, a4
.
You should do your work for assignment 1 in the a1
directory, and
commit your work early and often to take advantage of the version control
features.
Make sure you check out the repository and make sure you know how
to use it before the due date for assignment 1.