Assignment and test marks and statistics are available.
Each student with an "Incomplete" grade must contact me to demonstrate, in
person, his/her Assignment #7 before the extension time expires. Failure to arrange a
final demonstration before the deadline will result in the registrar giving the student an
"F" grade in the course. Please don't miss your deadline!
The final assignment requires you to compile your code, process and print the test file,
and copy your code to the server during the Lab hour. If you cannot complete the
assignment during your Lab hour, you must arrange an alternate time with me to demo your
program. I will hand you a different input file and collect your source code then.
In response to questions about memory management, I have updated (July 27) the semantic actions page.
5,836 lines of test data for your Assignment 4 are available
(1.5Mb). Note: identifiers in this test are quite long. If you use fixed-size buffers,
adjust them accordingly. Running the test will generate over 17,400 lines of output (which
is why the assignment asks that you submit only part of the output during the in-Lab
testing). The 40-line program that created this test file is
written in the interpreted language Perl; you can
download a free copy for your home PC if you want to modify the program to generate
your own test files.
Assignment 4 is ready. It was assigned in class on June 25. The
due date has been extended to July 9-10 to enable people to finish Assignment 3. If you
are having problems making your program work with pointers and dynamic memory, go back to
using fixed buffers.
If you are having problems with Assignment 3, please see me in
the Lab after you have attempted some or all of the following things:
Write the "memory scribbler" I mentioned in class, to overwrite your strings
before you free() them.
Learn to use the features of the debuggers.
If all else fails, print the hex addresses of all your pointers and learn to recognize
The course notes have been updated to include slides on
Parsing, including code samples for recursive-descent parsing. Steal this code for
Register yourself with my marking system. If
you haven't received email confirming your registration, redo the registration. If you did
receive email that showed errors in your registration, please correct the errors by
redoing the registration.
Each function of a submitted program must have an Algonquin-style header with all
the following information (see the Blue Book, p.25):
The Purpose of the program
The History of the program, which must include:
a copy of all the identifying information you put on the outside of the
the date you began writing this program
Inputs (if not already mentioned in the Purpose) or PreConditions
Outputs (if not already mentioned in the Purpose) or PostConditions
A high-level description of the Algorithm:
Give an overview of the whole program; don't go into details about each source line.
No pseudocode is necessary; keep the description readable and accurate.
If this takes more than a screenful of text, your function is probably too long!
The aggregate of all assignment marks comprises 20% of your final mark. All
assignments must be completed satisfactorily to get credit for the course, even if
the assignments are handed in too late to receive a mark. Please hand them in early enough
to get credit!
Please review the C Programming Style guidelines.
Assignment source code is marked for readability. You earn marks by making the
source clear, simple, and concise. You lose marks if I have to puzzle over what a piece of
Late assignments are handled according to the policy given in the course outline.
Inside every big program is a little program struggling to get out.
Midterms are in class, 50 minutes long, closed book; no calculators; no aids. The
midterms are compressed into ZIP files in the following formats: Microsoft Word 6,
Microsoft Word 7, Rich Text Format. Only the MSWord 7 format is guaranteed to show
all the details: