Projects | |
|
|
acm is software to manage a competition in the ACM
Programming Contest. It consists of a portable, distributed
scoreboard system, implemented in Java, which displays the
current standings, and of a number of Unix shell scripts
which can be used to submit and judge solutions and ask for
clarifications.
To be done: improve security against Trojan attacks. |
|
| clickers is a collection of implementations of a system to administer anonymous polls. |
|
|
el is a
little programming language with text and XML-based
representations. It combines infix expressions, array-like
hashtables, strings, nested function definitions, function
pointers, and call by name, need, reference, and value with
Scheme-like semantics.
Ideas: build a recognizer with pj, extend the language and build a type checker, generate code. |
|
|
Prototype for presenting slides and recorded sound using a
web browser. The choice of media is very flexible.
Ideas: build tools to manage the sound clips, create the slides, and assemble the presentation. Experiment with media and obtain performance data. |
|
| htupdate is a servlet to change an existing .htaccess password. |
|
|
jag
is a Java-based preprocessor supporting the visitor pattern
and inheritance-based pattern matching for List
based trees.
Ideas: simplify the syntax, e.g., remove $1; in favour of {$1};, extend, e.g., allow $n, add control over visit signature, add debugging aids, e.g., a trace, leverage directly against XML-based material. |
|
|
jay
is a LALR(1) parser generator: Berkeley yacc ©
retargeted to C# and Java.
Ideas: port to Managed C++, use factory interfaces a la ijacc. |
|
|
js
is a servlet to provide single-file compilation with
javac and execution in an applet.
Ideas: support other languages, set up introductory tutorials. |
|
|
jsm is an interactive tutorial on monadic programming with JavaScript
and includes a parser generator for functional LL(n) parsers
as well as a framework for interactive JavaScript tutorials.
It has been tested with about a dozen browsers; only Firefox provides
enough stack depth for all examples. The technique has been ported to
Java; see oops3 below.
Ideas: can LL(n) be checked? Can it be ported to other languages, e.g., C# in oops3.net, etc.? What else can be done with monads? |
|
| Language Processing is an interactive tutorial about the object-oriented implementation of language processors. It includes the homepages for jag, jay, and pj. |
|
| This starts a revision of the interactive Language Processing tutorial about the object-oriented implementation of language processors. It includes the homepages for pj2, vig, and wcs. |
|
| Mac software which I use: the software list is maintained with OmniOutliner, exported as OPML, converted to HTML with a XSLT script, and converted to a RSS feed with another XSLT script, both under control of an Automator workflow. |
|
|
ms
is a servlet and other software to maintain the website for
MS projects and theses. The overview lists a couple of
interesting programming projects.
Ideas: implement using other technologies; generalize the approach to edit structured data. |
|
|
Convert a XML-based description of Nassi-Shneiderman
diagrams to HTML.
Ideas: enhance XSL script to be a preprocessor for XHTML, run script in browser, generate DOM, e.g., from Java program, edit in browser. |
|
|
oops
is a Java-based LL(1) parser generator. The overview lists
a number of interesting programming projects.
Ideas: add an FSA-based tokenizer, make observers more generic, port to .NET to support other languages, incorporate ideas from pj, etc. |
|
|
oops3 is another Java-based LL(1) parser generator with a simpler,
more powerful grammar specification and automatic scanner and parse tree
generation. It can generate LL(1) and functional LL(n) parsers. It requires Java 5.
Ideas: add support for other scanner generators, retrofit ideas to pj and jag, etc. |
|
|
oops3.net is a port of oops3 to C#. It requires C# version 2.
Ideas: investigate assembly loading, port jag and integrate, etc. |
|
|
page generates tokenizers, LL(1), and SLR(1) parsers from
BNF and EBNF grammars. page is implemented in JavaScript
and designed to exhibit the relevant algorithms and allow extensions.
Ideas: too many to list -- just started. |
|
|
os1 is an operating system simulation written in Java (JDK 1.5).
Ideas: too many to list -- just started. |
|
| ossi is an operating system scheduler simulation written in Java (JDK 1.5). |
|
|
OverEasy converts an image taken with an
Egg Lens
into a cylindrical image which can be displayed with a panorama viewer such as
sfpp
or converted to Quicktime with a program like
CubicConverter .
Ideas: apply a parabolic function to improve the aspect ratio. |
|
|
password is a servlet to retrieve tomcat user passwords by mail.
Ideas: generalize as a (flat) database. |
|
|
pharos is a Java and C program to access the data logging features of the Pharos GPS500 receiver under Mac OS X.
Ideas: integrate with iPhoto. |
|
|
pj
is a Java-based preprocessor for jay and JLex
and largely automates the generation of parse trees from
programs.
Ideas: perform still more type checking and integrate it with jag, support other tools such as CUP and JFlex, generalize PJServlet to other tutorial scenarios. |
|
|
ro is an educational implementation of remote objects.
The overview lists a number of interesting programming
projects.
Ideas: animate execution using the observer pattern, check out SOAP, etc. |
|
|
sandcastle is a GUI for the new document compiler from Microsoft.
Ideas: improve presentation and configurability, leverage XML. |
|
|
sfpp is a simple Flash panorama player.
Ideas: add hotspots as icons in 3-space. |
|
|
submit is a servlet to submit homework assignments and retrieve
grade reports using the Web.
Ideas: add sandbox environments for immediate testing. |
|
| web-submit is a CGI hack to submit homework assignments using the Web. (Superseded by submit.) |
|
|
xpoint
is a XML, CSS, and HTML based presentation graphics system.
Ideas: extend styles and capabilities, provide templates, interoperate with MS Word, print/present using XSL-FO. |
| March 2011 |