- [Fri May 16 12:55 2025]
The free response topics on the final exam are:
- DFAs
- PCRE
- Parse Tree & Derivations
- Context-free Grammar
- Predictive Parse Table
- Haskell 1 - pattern matching
- Haskell 2 - recursion
- Haskell 3 - data types
- Haskell 4 - pattern guards
In particular, there won't be free response questions on Horn Clauses,
Shift-Reduce parsing, FORTH programming or weakest preconditions.
(But, there may be True/False or Multiple Choice questions on those topics).
Topics for True/False and Multiple Choice will be taken from
these sections of the textbook and topics covered in lecture not in the textbook.
- [Thu May 01 23:10 2025]
Homework 10
posted.
Due Thu 05/08/25
Submit on Google and on GL.
- [Mon Apr 28 22:10 2025]
Typo in
Homework 9:
In the Step 8, the compile command should not include hw11
(but you knew that).
Updated to version 1.02 on Google Drive.
- [Mon Apr 28 15:35 2025]
Typo in
Homework 9:
In the example for the FORTH .r command i234 should be
1234. Updated to version 1.01 on Google Drive.
- [Fri Apr 25 01:30 2025]
Homework 9,
posted.
Submit on GL.
- [Mon Apr 21 11:08 2025]
Sample questions
for the second midterm exam (Thursday 4/24) are available on Google
Drive.
This does not include the True/False or Multiple Choice questions.
- [Thu Apr 17 14:45 2025]
Also fixed EDllr/ESclr bug in PDF description of
Homework 8
(now at version 1.1).
- [Wed Apr 16 21:40 2025]
Bug found in basicoptimizer.hs. The otherwise case
should be:
| otherwise
= (EDllr, DIVIDE (EDllr, lft') (ESclr, rgt'))
The buggy version had (EDllr rgt') instead of (ESclr, rgt').
See email for more info.
- [Fri Apr 11 13:20 2025]
If you copied files from GL for Homework 8 before Friday 1:03pm, you
should get the latest copy of dolexparse.out.
- [Fri Apr 11 13:09 2025]
Test cases for
Homework 8
are now available on GL. Similar to Homework 7, you can run them with
linux5% ./dolexparse.out < tests08-1.txt | ./doopt.out > myresults-1.txt
You can do a diff to see if you get the same results, but you
should really look at the output:
linux5% diff -s myresults-1.txt results08-1.txt
Files myresults-1.txt and results08-1.txt are identical
- [Fri Apr 11 11:35 2025]
The results.txt file for Homework 7 was updated. Please use the
most recent version from GL.
- [Thu Apr 10 23:59 2025]
Homework 8
posted.
Due Thu 04/17/25
Submit on Google and on GL.
- [Thu Apr 10 14:55 2025]
Due to all the bug fixes, etc.,
there will be no late penalty assessed for
Homework 7.
The final due time is still by 1pm Tues 4/15.
- [Thu Apr 10 09:40 2025]
Yet another glitch in basicparser.hs. The code for the rule
F -> ( E ) was accidentally removed. You want add this pattern
guard to parseF:
| TkPunc "(" <- tk
, (True,tks1,tytr1) <- parseE tks
, TkPunc ")" <- head tks1
= (True,tail tks1, tytr1)
The basicparser.hs file on GL has been updated. (Says "Version
3" on top.)
- [Wed Apr 09 15:25 2025]
Test cases posted on GL for Homework 7:
- tests.txt : bunch of expressions, one per line
- tests.tks : the tokenized version of above
- results.txt: the output from running doparse.out
- errors.txt: bunch of expressions, all wrong
- errors.tks: the tokenized version of above
You can run the commands:
linux5% ./dolex.out < tests.txt > mytests.tks
linux5% ./doparse.out < mytests.tks > myresults.txt
or all in one fell swoop
linux5% ./dolex.out < tests.txt | ./doparse.out > myresults.txt
All of the expressions in errors.txt should generate an error. It is OK
if doparse.out prints out a syntax tree as long as it also says parsing
was not successful. For example,
( 3 + 4 ) && 5
might return a syntax tree for (3 + 4) because it successfully
parsed that part of the expression before encountering an error.
- [Wed Apr 09 15:18 2025]
There was a typo in basicparser.hs for
Homework 7.
In parseTtl, it used to say:
| TkOp "-" <- tk
, (True,tks1,(ESclr,tr1)) <- parseF tks
The call to parseF is incorrect. It should be a call to
parseT because
the production is: Ttl -> - T Ttl
Look at your code for parseTtl and make sure you're not calling
parseF.
Code on GL has been updated.
- [Thu Apr 03 23:55 2025]
Homework 7
posted.
Due Thu 04/10/25
Submit on GL only.
- [Thu Mar 27 22:55 2025]
Homework 6
posted.
Due Thu 04/03/25
Submit on Google and on GL.
- [Mon Mar 24 15:30 2025]
Our TA Sean Moulton will not have office hours this week (Tue Mar 25
& Thu Mar 27).
- [Thu Feb 27 22:45 2025]
Homework 5,
Due Thu 03/06/25
Submit on Google only.
- [Wed Feb 26 15:30 2025]
Found some typesetting errors in the Louden & Lambert textbook that
are not in the
official errata page.
Keeping track of these in a local errata page.
- [Tue Feb 25 08:50 2025]
The Louden & Lambert textbook has some typesetting errors and
mistakes listed in its
errata page.
- [Thu Feb 20 20:42 2025]
Homework 4
posted.
Due Thu 02/27/25
Submit on Google and on GL.
- [Thu Feb 13 18:50 2025]
Our TA Sean Moulton's office hours are: Tu & Thu 11:45am – 12:45pm.
This information is on the contacts page
and the class calendar.
- [Thu Feb 13 18:45 2025]
Haskell programs (reverse) shown in class today are available on GL:
/afs/umbc.edu/users/c/h/chang/pub/cs331stuff/examples/reverse/
- [Thu Feb 13 14:45 2025]
A Google Sheets document has been shared with you on Google Drive. This
spreadsheet will track your scores throughout the semester. Look in
"Shared with me" for a file starting with "CMSC 331 Scores - ".
A link to this document was also sent in email.
Also, for GL submission, look in the 00Gradesheets subdirectory
of your submission directory. For Homework 1, there's a file
"hw01grade.txt" that explains your score.
- [Wed Feb 12 14:15 2025]
Homework 3
posted.
Due Thu 02/20/19
Submit on Google and on GL.
- [Thu Feb 06 12:40 2025]
Homework 2
posted.
Due Thu 02/13/25
Submit on GL only.
- [Tue Feb 04 15:43 2025]
Homework 1
updated to version 1.1.
The sample output in Question #2 was updated to be the most likely
output you will see from your own program, but you are not required to
match the output in any case.
- [Wed Jan 29 21:45 2025]
Homework 1
posted.
Due Thu 02/06/25
Submit on GL only.
- [Mon Jan 27 13:05 2025]
Syllabus and schedule also available in PDF.
(Web version will get updated as needed.)
- [Fri Jan 24 15:30 2025]
If you add this class, email Prof. Chang right away. You have to be
added to the Google group for this class. Also, submissions directories
on GL have to be created for your username.
- [Fri Jan 24 15:30 2025]
Web page up.