Student Projects

Introduction

Students computer science or software engineering can take up projects and participate in the SubScript project. This is a great opportunity to learn Scala and also programming with Process Algebra.

Below three student project descriptions. Each may would be good for 150 up to 750 working hours, whatever is desired.

Project 1: Enhance current implementation of SubScript-Scala

There is still plenty to do on the current implementation. You may work on:

  • unit tests
  • bug fixing
  • fill gaps in feature implementations
  • provide full grammar support
  • improve debugger

Project 2: Investigate SubScript on top of JavaScript

SubScript might as well extend other languages next to Scala. An interesting starter would be JavaScript. The good thing is that as from April 2013 (?) Scala translates into JavaScript. Therefore a single code base of the SubScript VM, which is written in Scala, may also work for JavaScript.

The project would involve some of the following tasks:

  • develop use cases, both for client-side and server-side applications
  • create a translator for SubScript into JavaScript
  • extend an existing JavaScript interpreter to understand SubScript
  • define a strategy to send over SubScript in HTML pagesand have it translated
  • provide a translator for the SubScript VM source code into JavaScript
  • JavaScript does not support explicit multithreading; develop an alternative

Project 3: Enhance Akka

Akka is the Scala actor implementation, very useful for distributed functions. Typically an actor operates a state machine, which is programmed using state variables. This is relatively inconvenient to program and read. SubScript may provide a better alternative for programming actor internals. This project would involve:

  • develop typical actors in two versions: just Scala and SubScript
  • compare these versions in terms of clearness and conciseness
  • measure the performance of these versions
  • make a tutorial

Project 4: Mimic Rascal

Rascal language is a domain specific language for source code analysis and manipulation a.k.a. meta-programming. It has high level support for creating parsers that extract information from input texts, e.g. specification of keywords, lexical syntax, concrete syntax, and abstract syntax.

SubScript-Scala may be powerful enough to do very similar things, using an internal DSL. The result would then be quite powerful; the support for concrete syntax and abstract syntax could be handy for serialization and deserialization of application data.

  • design a DSL on SubScript-Scala that would supports typical Rascal constructs
  • implement the DSL
10 comments
sirinath
sirinath

May be you can use Spoofax / Metaborg to build rewriting / reductions also. Perhaps also extend to other calculi and algebras.

sirinath
sirinath

Add algo skeletons and an alternative to Akka which may be more formally defined. Akka also can be supported. But most of what you support should have a formal Algebra / Calculus behind it. I am not sure how close to formal Akka is for a process calculus. Perhaps you might need a layer on top to make it fit.

sirinath
sirinath

Perhaps you can expand 4 to include all rewriting / reduction / matching logic systems to the extend you can define subscript using subscript. Another property at a later stage would be Homoiconicity.


Ideally make sure everything is formally verifiable.

sirinath
sirinath

If you support something like the constructs of Rascal, KFramework, Metaborg, etc. you do not need this to depend on Scala. You can define the subset of Scala features you need though it.

sirinath
sirinath

Akka might be a bit heavy weight. Consider something like Scalaz actors and perhaps something like CAL Actor Language

AndreVanDelft
AndreVanDelft moderator

@sirinath I think a lot is possible in this direction, and it could be very useful. But I will have no time for this. So others should do this.

AndreVanDelft
AndreVanDelft moderator

@sirinath AKKA has great properties: adressable, loosely coupled actors with FIFO message queues. IMO ACP cannot improve that. But I think ACP/SubScript is very good for programming the internal behaviour of single actors

AndreVanDelft
AndreVanDelft

@sirinath  I am thinking of removing this 4th project idea. I am not sure any more how useful it will be. There is Spoofax, a sister project for Rascal. On top of that a lot of products are being developed, among which SugarJ and SugarScala. Mimicing Rascal or Spoofax will be quite some work, whereas the added value maybe marginal since SugarScala may offer much of that functionality. I am not sure.


BTW I expect that the SubScript compiler will move from a Scalac derivative to a SugarScala application, really soon after SugarScala gets an official release.

AndreVanDelft
AndreVanDelft

@sirinath I like Akka very much; besides it is the actor system officially supported by TypeSafe.