PL-Detective: A system for teaching programming language concepts
Click here to get a paper describing the
PL-Detective (35th ACM Technical Symposium
on Computer Science Education, 2004) and click here
to get a paper evaluating the PL-Detective (36th ACM Technical Symposium on
Computer Science Education, 2005). The PL-Detective was developed by
Amer Diwan, William Waite, and Michele Jackson at the University of Colorado,
Boulder.
The PL-Detective is available under the GNU Public Licence. To see
examples of exercises that use the PL-Detective, visit our
class web page for CSCI 3155 (Principles of
Programming Languages).
Binary Downloads (recommended)
- 15th April 2004 (Better line
numbers in error messages over version of 9th April 2004)
- 8th June 2004
- Added new dimensions for array subscripts and operands of built-in
operators
- Separated out the dimension on assignment and parameter compatibility into
two dimensions
- Fixed a bug that resulted in poor error messages in some cases
- Changed the web pages so that the syntax pops up in a new window
- Changed the model for passing the "script" so that now rather than passing
an encrypted script, it just passes the name of a file on the PLDetective
machine that contains the script. Much safer and less cumbersome than
the "obfuscate.py" solution.
- The jar files now contain the source and thus, both binary and source are
now being distributed together
- 4th August 2004
- Changed syntax of MYSTERY in several ways. Notably the program is
now a block which means that there is no "main" routine. The body of the
program block is the main body. Also, return types for procedures are
now optional.
- Moved users.txt and scrips to a configuration directory for security
reasons.
- Fixed various little bugs that I've forgotten about ;-)
- LATEST VERSION
17th September 2004
- Fixed a parser bug related to procedures that do not return anything (an
addition in the previous release).
Source Downloads
- 15th April 2004 PLDetective,
PLDetectiveRT
- Starting with June 2004, I'm including the source in the jar files
distributed as the binary download.