|
The 490 and 790 projects that
I supervise generally involve a mix of reading research
papers, design and implementation work, and a final writeup of about 5,000
words. Students should have solid programming experience; taking a prior
4-level project course is a good idea. CS 4120/4121 is a great background
for a number of these projects.
The following are some projects that may be available for undergraduates
to get involved with via a CS 490 project, or for M.Eng. students to work
on as a 790 project. Students seeking
a project should think about what they would like to work on before
talking to me.
-
Civitas
is our new, secure voting system. Civitas is the first
voting system implementation that allows voters to vote securely from the
remote client of their choice.
Projects:
-
A secure voter client that supports coercion resistance and cut-and-choose style
protection against malicious clients.
-
Additional tabulation mechanisms to protect against application-level DoS attacks.
-
Using threshold cryptography to improve availability of the system.
-
Fabric
is a secure wide-area distributed object store and perhaps the most
substantial system-building project we have underway now. Fabric objects
look like Java objects but are transparently persistent.
Projects:
- automatically move computation and data storage to distributed locations
to make programs secure and efficient
- supporting persistently stored bytecode so Fabric is self-sufficient
- implementing larger Fabric applications
- exploring richer security policy languages.
Polyglot: an extensible compiler for building extensions
to the Java programming language. Projects:
- Javadoc support for extended languages.
This can be built using Polyglot itself.
- support easy development of Eclipse IDEs
-
Swift: A system for building secure web applications in
the Jif language. Client-side
JavaScript code is automatically generated from Jif code where it is
secure and efficient to do so.
Projects:- partitioning for
client-side security
- making client-server data synchronization
more efficient.
- Course Management System.
The course management system used by the Computer Science Department
and now also hosted at CIT and used by other departments
was developed by students.
New team members are welcome.
Projects:
- redesigning the system architecture for
high performance
- adding new scheduling and calendaring features,
- porting it to Fabric.
[ CMS web site
| CMS system ]
-
Hierarchical partitioned searching: The classic single-player game
of Sokoban requires hundreds of moves of searching; fortunately, it has some
properties that makes it amenable to a new kind of hierarchical searching
algorithm. Other games like Go are encouragingly similar. Experience
in search algorithms and ML programming is important.
- netview: an intuitive distributed graphical network monitoring tool
- codewriter: a web markup language for high-quality
pretty-printing of program code on web pages, so program code
fills the available horizontal width while remaining readable.
Should be reimplemented as a reusable JavaScript module.
- jshell: a shell interface with integrated Java and Windows support,
smoothly combining a language-based (console prompt) interface with a
icon-based graphical interface.
- JMatch: pattern matching and logic programming for Java.
Some papers on JMatch: [ Iterable Abstract Pattern Matching for Java (PADL'03), Interruptible Iterators (POPL'06) ]
Projects:
- developing an Eclipse plugin using IMP
- adding checking of pattern exhaustiveness,
- adding support for predicate dispatch,
- adding more powerful predicate solving
- making the C++ back end work well. It exploits low-level control over the stack to improve performance.
- ngdiff:
The ultimate graphical diff-merge tool, supporting N-way merging, RCS/CVS support, and
editing. Related to other tools like
rcsview,
a viewer and editor for version-controlled files
under RCS and CVS. Rcsview helps the user to figure out a source file
evolved and to identify who's responsible for any given code segment.
- Distributed Post-Its: instantly create short
notes, memos, and reminders that can be created and viewed from anywhere, with
multiple open sessions possible at once. Probably sits on top of IMAP. Similar
tools do exist now, but are not transparently distributed. Good sorting,
filtering, and filing features also a must.
- Auto-sorter extension for Thunderbird. Filing mail into many
folders is too hard. An auto-sorter based on Bayesian principles could set
default folders for all incoming mail, greatly simplifying filing of email.
- Juno-2: this is both a powerful editor for drawings and animations,
and a constraint-based programming language.
Juno displays a view of the picture as it would appear if printed, and simultaneously displays a program in the Juno-2 programming language
that draws the picture. It also allows users to create their own
drawing tools. The project is to improve the UI to better support
the creation of user-defined tools.
This would involve programming in
Modula-3,
one of the best languages ever designed.
|