CS297/298 Project Ideas
Please contact me if you are interested in one of these projects. (Note:
These are projects for students in the Computer Science Department at San Jose
State University.)
All of the following projects are connected with the Scala language. One benefit of Scala is rich
support for building domain-specific languages. A DSL uses special syntax that
is convenient for a particular problem domain. But it is a part of Scala so
that programmers don't have to learn a new language and tool chain for every
specialized problem. A good example is the combinator
parser library. A user who needs to parse a language learns a few simple
rules about the rep opt ~ ^^ operators and then uses regular Scala
for parsing.
- “Scala Server Faces:” Scala for web apps with JSF and JPA. Lift is a “convention over
configuration” web framework, like Ruby on Rails, but—just like
Ruby on Rails—it ends up reinventing a lot of wheels. The goal of
this project is to discover how Scala can take the tedium out of JSF/JPA
without reinventing the good parts.
- Scala animation framework. In a joint project with Dr.
Taylor, I designed an animation framework for CS education applications.
The goal of the framework was to make it easy to animate diagrams that
commonly occur in CS without the tedium of Flash. The goal of this project
is to make a better framework using Scala.
- Scala shell scripting. For shell programming, one has uncomfortable
choices: Use Java/Scala and manually implement file handling operations, or
use bash because it has a lot of the primitives that you need to process
files, and then suffer through the horrid bash syntax. The purpose of this
project is to produce a DSL for effective scripting of file operations, and
to add features from Windows
Powershell.
- Scala XSLT processing. XSLT is a
powerful mechanism for transforming XML, but most casual users are utterly
baffled by its syntax and semantics. The purpose of this project is to
design a user-friendly library in Scala that can achieve the same
purpose.
- Scala web scripting. For testing of web applications, or for automating
repeated operations on tedious web UIs, one turns to programming packages
such as HTTPUnit or tools such as Selenium IDE. But neither satisfies. It
is very tedious to write HTTPUnit scripts, particularly since there is no
recorder. And Selenium IDE has no programmability. The goal of this project
is to develop a library in Scala, together with a recording facility.