- May 24
- See the important end-of-course announcements!
- May 13
- A small correction was made to the PowerPea Assembly Function Call Example; the stack pointer offsets for the parameters to parse_args() should be negative, because the arguments to parse_args() are placed below the stack frame for main(), in lower memory addresses.
- May 12
I originally planned on having extra office hours before the final
exam, but I will not be able to be on campus Sunday through Thursday.
I will hold my regular office hours this afternoon, and I will have
office hours Saturday 1:00-3:00. Someone else will be proctoring the
final exam. I should be back on campus starting on Wednesday; if
anyone needs to contact me about anything after Saturday then try
Some other various end-of-semester announcements will be put here in a few days, so check back.
The Exam #2 average and standard deviation should be on the grade server. The other information is:
90s: 7 80s: 16 70s: 31 60s; 18 < 60: 9
>= 82: A 75-81: B 63-75: C < 63 D/F
- May 11
- You may find these notes outlining the main topics of the course helpful in studying for the final. They are not pretty; they are not exhaustive; they are not any indication of what may or may not be on the final exam.
- May 10
- The release tests are available; see the description at the usual place.
- May 9
We're trying to put the release tests on the submit server, but
everyone's project fails to compile because no one's submission
contains a file
tester.c. Unfortunately, due to the way the submit server works, it has to be able to build your program for all of the public tests and release test and secret tests before it can do anything with your program. So even though your program may work fine for the public tests, if it doesn't build something for the as-yet-nonexistent release tests, it won't compile at all. Solution- we just put a new tarfile in the
class-filesdirectory, with a
tester.cwhich just has an empty main program. Just untar it and submit again, including that
tester.cin your submission.
We won't be able to put the release tests on the submit server until tomorrow morning, because no one's project currently compiles, but they are ready to go and we will put them there tomorrow morning.
One new Project #5 clarification is at the usual place.
The void pointer example
void-pointer.chas been fixed. The arrays should have been arrays of
void *, just like the pointers in your data structures in the project are
void *so they can store different types of data (either by casting the data to a pointer, if the data is no larger than a pointer, or if data is larger than a pointer and can't be cast to a pointer, then the arrays can point to the data which has been dynamically allocated).
- May 8
- See the Project #5 corrections and clarifications here. Be sure to check periodically for updates.
- May 7
Larry's office hours on Monday will be covered by Jose.
void-pointer.cexample is not very portable, as an array of
void *may not be the same sizes on different platforms. Until it can be revised in a clear manner, it'll work on the Solaris Grace hosts if you want to run it. Sorry for any confusion, but the main point of the example, which is passing values by casting to
void *is the same in any case, and the same issue doesn't come up in your project since you don't ever have to create arrays of
Please copy the Project #5 tarfile again. It contains new public test files
public02.c. The previous ones work fine, except if your
main.xhas an error no error message would show up, which of course could be confusing. The new versions use
main.x, rather than
- May 6
- One small additional change which was just made in the Project
Makefile, which you just can make yourself in your own copy, was to add
CFLAGSin the second line.
- The Project #5 tarfile has been updated with two public tests,
which have been put on the submit server. The public tests
main.xonce with the
-bstcommand-line argument, and once with the
-heapcommand-line argument, both times redirecting the input from the same file "
numbers" previously provided. The public tests are worth 35 points.
- A couple of mistakes have been corrected in
table.hin the new tarfile, so be sure to extract the files and use the updated header file.
- The file
main.chas been renamed in the new tarfile as
main-int.c, and the
Makefilehas been adjusted accordingly. This will allow you to create the original progam now named
main-int.x, which just uses
bst-int.c, while at the same time as you can create
heap.c. Note that the two public tests should produce exactly the same output, which is exactly the same output as produced by running the original program
- To compare the results of two programs just redirect their
output to two files, and run the UNIX utility
diffon them, e.g.,
diff file1 file2. If the files are identical
diffwill produce no output. If
diffproduces some output it is indicating the differences between the files.
- We've noticed some confusion in the following: some people
think that when the term "void * pointer" is used, it
automatically means that something is being dynamically
allocated. It's not a necessity that the data being stored in
your table must be dynamically allocated. To illustrate the
void *pointers used to pass parameters which aren't dynamically allocated, an example program
void-pointer.chas been placed in the
class-filesdirectory, which you may want to look at. Of course, your table should be able to be used to store dynamically-allocated data as well (if it's being used to store data which can't be cast to
void *), in which case the client or application program using your table would dynamically allocate data and insert it into the table by passing a pointer to it.
- One small additional change which was just made in the Project #5
- April 22
- Some expressions in the 4th and 5th public tests were calling simplify on expressions which aren't defined to have a value. The proect assignment didn't specify clearly what simplify should do in such a case. So your program can produce any resuls for those cases, and to allow that we just removed those expressions from the 4th and 5th public tests. So if you were getting wrong results on those inputs, check the submit server again- your results could be right now. Of course, if your results were right before then they will still be right now.
- April 20
Five release tests (20 points) are now on the submit server. They
may not show up in your results for an hour or so.
Saeed improved the expression reader so it gives better error messages if it tries to read incorrect expressions. This may save a time and effort when running your own tests. So please copy the new
expression-reader.ofile which was created around 6:00 today.
When the submir server was cutting off the end of the results yesterday we reversed the order of your output and the correct output in the results, so you could see all of the correct output. Now that the server's apparently working right again, we'll switch these back. So even though it'll be switching twice in two days, be careful not to mix up which part of the output is your output versus the correct output.
The README file for the expression reader says "The AST reader works by calling your functions
create_operator_node. If you haven't written these functions or they have problems, the expression reader won't work. So first write and test those functions by hand before trying to use the expression reader" (or before trying to run your program on the public tests).
The submit server appears to be truncating the end of the results at times (the "long result" column under your test results). This has been reported; so there's no need to email the instructional staff about it. This is an inconvenient situation but there isn't anything we can do about it besides report it. However, you should be able to at least view the correct output on the submit server, and you can run the public tests yourself to see your output, and just compare these.
- April 19
- Note: the original announcement about the expression reader described it as being optional, which it is for your own tests (although using it is highly recommended), but because it would have been very inconvenient to create all of the public tests by hand, they were written using the expression reader. Therefore you'll have to copy expression-reader.o to your directory, and extract the files in the tarfile again, to get the public tests to compile.
- April 18
A small bug in the output to one of the public tests was corrected;
sorry for any confusion.
If you submitted the project yesterday the submit server may have reported incorrect results for it. Please check your results on the submit server again now.
- April 17
Five Project #4 public tests have been set up on the submit server,
at 10 points each, so the maximum score possible is currently 50
To facilitate testing your functions, Saeed has written an expression reader which can be used to easily construct and return the AST corresponding to an input expression; you can use the AST returned to call your various functions with. See the README file in the directory class-files/project4-expression-reader.
A small but important bug was corrected in the expression reader at 5:00 today- if you had already copied the files before that, just copy them again.
- April 16
A couple of Project #4 clarifications were added today.
Lecture slides from this past week are posted.
- April 14
- Another Project #4 correction today.
- April 13
- See the Project #4 corrections and clarifications here. Be sure to check periodically for updates.
- April 4
Be sure to see today's batch of project clarifications (so far).
Check the clarifications every time you log in.
lcovexample was moved to the directory lecture18-examples, and the
forkexample was changed slightly to illustrate a point brought up in lecture.
- April 3
- Note: on UNIX and Linux you do not break a program which has an infinite loop using control-z like you do in DOS or at the Windows command prompt. In UNIX and Linux, control-z runs a program in the background, where it continues to use up CPU cycles and slows the machine down for all other users. Like the posted UNIX tutorial says, in UNIX and Linux control-c is used to break a running program.
- April 2
The names of the public tests have been changed, for example from
public1,c to public01.c, etc. (this is because there are more than
nine release and secret tests). Either remove the public*.c test
files from your directory before submitting, or copy the new tarfile
and extract the files again.
The Project #3 public tests have been changed to 45 points (9 points apeice). Ten release tests (20 points) are now on the submit server. The secret tests for this project will be worth 20 points.
- March 30
Five Project #3 public tests (50 points) are now set up on the submit
server, and the project tarfile has been updated to include the five
test programs and the associated Makefile.
Release tests will be available in a couple of days.
- March 28
- The Project #1 release and secret test programs are now in the directory class-files/project1-tests on Grace.
- March 27
- See any important Project #3 corrections and clarifications here. Be sure to check periodically for updates.
- March 15
- Eight release tests are now available on the submit server. The release tests are 18 points, so the maximum score is now 68. You have 5 release tokens for this project, instead of 3. Each release token regenerates in 24 hours.
- March 15
Example linked list code is on grace in
- March 13
- The error
ERRINVADRshould only be returned if the Powerpea program actually tries to reference memory at an invalid address. If some instruction contains an invalid address but it isn't executed or doesn't ever try to access that location, it's not incorrect.
- See a few important Project #2 corrections and clarifications here.
- John forgot to return the graded Project #1 source code results in section 0201 today, so I'll hand them back in lecture tomorrow.
- If you're using the assembler, copy the file
assembler.oagain. It's just been updated so that all unused fields of instructions are zeroed out. This just makes it easier for you to understand the results.
- The Project #1 results should now be visible on the submit server.
- The error
- March 12
- The Project #2 project2.tgz tarfile has been updated again to
interpreter.h. The submit server takes a while to update, but it will be updated as well with this change.
- The public tests have been set up on the submit server. The public tests are worth 50 points. Be sure to check your results on the public tests. Some release tests will be set up soon.
- The Project #2 project2.tgz tarfile has been updated to add
interpreter.h, which could be important when using the assembler. Although these changes are minor, get the files from the current project2.tgz to make sure your program works with them.
- The Project #2 project2.tgz tarfile has been updated again to add
- March 11
The Project #2 project2.tgz tarfile has been updated to include four
public tests. Now that there are public tests, it has also been
possible to include a Makefile in the tarfile.
The public tests will be set up on the submit server soon; watch this space to see when. A few clarifications and corrections to the Project #2 assignment will also be placed here shortly.
The assembler, which you can use to create tests for your interpreter, has also now been placed in the directory class-files/project2-assembler. A README file in that directory gives a brief explanation, and there are two examples in the directory demonstrating the use of the assembler as well.
- March 7 Final exam time
- As you know from the syllabus, the final exam time in the Schedule of Classes originally listed for this course was wrong, and the correct final time wasn't going to be available until partway through the semester. The Scheduling office has now given us a final exam time, which is Monday, May 15, 4:00-6:00 pm
- March 3
The practice exam is on the
In addition to the readings given during class, which were Chapters 1-9, Sections 10.1-10.2, Chapters 11, 12, 14, and 15, it would be useful to read Section 10.4, which is only three pages, and which was omitted inadvertently before.
- February 27
- Note that each release token regenerates after 24 hours, so if you've used your release tokens on one day you'll have more to use again the next day.
- February 24
- The submit server will be down for an hour around midnight tonight (Friday, February 24). If you try to use it around that time and it's not working, just try again in an hour.
- February 19
- See the important Project #1 corrections and clarifications here.
- February 15
Solutions to this week's discussion exercises from Monday are now
page. Note that this is a compressed tarfile, so download it and
transfer it to any directory in your Glue account you like
(although it's recommended you use a directory in your extra
course disk space), and extract its contents using the UNIX
gtar -zxvf  name-of-tarfile
- February 10 Office hours
As discussed in lecture the office hours schedule will be given out
next week in class, but in the meantime here are the office hours
between now and then. All office hours are held in AVW 1112 except
Larry's, which are in AVW 1111.
Friday 10:00-11:00 John
Friday 12:00-1:00 Jessica
Friday 2:00-3:30 Jose
Friday 3:30-5:00 Larry
Monday 10:15-12:45 Jose
Monday 12:45-1:45 Jessica
Monday 2:00-3:30 Larry
Monday 3:30-5:30 Elena
Tuesday 11:00-1:00 Saeed
Tuesday 1:00-3:00 Kai
Tuesday 3:00-4:00 Shomir
Tuesday 4:00-5:30 Larry
- January 26
- If you don't have one, apply for a Glue account here right away!
- January 26
- Welcome to CMSC 212!