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. Depending on the subject you are even likely to interact with some of the world’s top technologists: the Scala Team at EPFL and JetBrains, the makers of IntelliJ. This makes continued participation attractive.

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

 

Direction 1: Enhance current implementation of SubScript-Scala

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

  • make a SubScript plugin for the IntelliJ IDE
  • improve the SubScript debugger
  • improve the koans
  • make a learning environment like 4Clojure, using ScalaJS or even SubScriptJS if that is available in time

 

Direction 2: SubScript on top of JavaScript

As Scala compiles to JavaScript, next to the JVM, so SubScript may do that as well. This could open up opportunities to improve web development: for generated JS in the browser, but also for NodeJS applications without callback hell.

The project would involve some of the following tasks:

  • compile the SubScript VM to JavaScript and deploy it; adjust a clone of the preprocessor or compiler to work well with JS instead of Java
  • create bridge libraries for working with JS GUI controls and NodeJS
  • develop examples, both for client-side and server-side/NodeJS applications
  • develop alternatives for explicit multithreading, since standard JavaScript does not
  • develop a site for easy experimentation with SubScriptJS, like ScalaJS-Fiddle.

 

Direction 3: Discrete Event Simulation

A predecessor of SubScript was successfully applied to discrete event simulation, e.g., see the paper in these conference proceedings starting at page 229. Something similar, and even better, is possible for SubScript. As a use case you could develop a simulator for railway systems; here is a reference project (shorter paper); it is based on the process theory CSP, that preceded ACP.

 

10 thoughts on “Student Projects

  1. 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.

  2. 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.

  3. sirinath  I am thinking of removing this 4th project idea. I am not sure any more how useful it will be. There is http://strategoxt.org/Spoofax, a sister project for Rascal. On top of that a lot of products are being developed, among which http://www.informatik.uni-marburg.de/~seba/projects/sugarj/ and https://github.com/fjak. 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.

  4. 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.

  5. Just saw this http://subscript-lang.org/subscript-actors/. But nevertheless having a alternative is also good. Ideally they should be drop in replacements.

    Also have a look at this https://github.com/Primetalk/SynapseGrid

  6. 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

  7. 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.

Leave a Reply