Student projects archive
Many students completed research or engineering projects under LAMP's supervision. This non-exhaustive list is a memory of these works.
Works (source code and documentation) linked from this page are the author students' property. You may view these works. However, if no contrary indication is given, the right to copy these works, in part or in whole, including as part of a derived work, is not granted to you. Please, contact the student, or LAMP that will forward your request, to obtained a license.
2011
Scala SBT build
keywords: scala, sbt
Goal
Scala currently uses ant for its build. This build bootstraps the libraries and compiler and runs a number of tests using the partest tool. The ant script to do this is 1628 lines of XML long and is quite hard to maintain. Fortunately, there is now a better alternative with SBT, a Simple Build Tool which is written in Scala and which uses Scala as its build language. Your task in this project is to duplicate the behavior of the current ant script in SBT. If sucessful, your new script will replace ant in all Scala builds.
Scala bytecode viewer
keywords: scala, java bytecode, swing
The Scala compiler generates ordinary java classfiles which can be inspected with any available bytecode tool (e.g. javap, jad, jclasslib). However, every classfile originating from Scala is equipped with additional metadata (the ``Scala signature'') in the form of a classfile attribute, which contains information about the types, symbols and annotations appearing in the class. Since existing tools are not aware of the Scala signature attribute they are not able to decode and display its content.
Goal
The goal of this project is to extend the jclasslib graphical java bytecode viewer to display the contents of the Scala signature attribute. jclasslib is written in Java and uses swing for its graphical user interface.
Your task
A reflection library for Scala which decodes the binary representation of the Scala signature attribute and provides it's content through a nice API is currently in the works by Gilles Dubochet. Your task is to create a clean and user-friendly graphical representation of the information provided by the reflection library. Since the library is written in Scala we encourage you to write the jclasslib extension in Scala as well.
2008
Scalab: a Build Tool for Scala
by Vincent Pazeller, supervised by Gilles Dubochet (master project).
Building upon the theoretical bases of the first Scalab project, Vincent implemented a project building automation tool in Scala. With a description of a model, inspired by that of electronic circuits, to represent dependencies between build processes, his tool provides a library to represent these models as Scala programs. A command-line tool then executes these files directly.
This project particularly concentrated on the definition of a caching system, which speeds-up the building process by reusing previous results, if they can be determined not to have been modified in the meantime.
Download the report or visit the SVN repository.
Scalit – Literate Programming in Scala
by Sebastian Gfeller, supervised by Geoffrey Washburn (semester project).
A literate program is written and presented in a form that is better accessible to human reading by providing the possibility to reorder its parts in the order they should be explained. This work aims to provide tools for literate programming in Scala. Besides providing an overview of the implementation of the Scalit tool suite, the applicability of literate programming techniques to Scala is explored.
Download the report or visit the Scalit website.
Static type safety guarantees for the operators of a relational database querying system
by Cédric Lavanchy, supervised by Gilles Dubochet (semester project).
Starting from the observation that Scala offered, through structural types, a representation of types compatible with that of relational algebra, Cédric studied the practical constraints of implementing a strongly and statically typed library for relational algebra in Scala.
The library resulting from this project demonstrated that structural types, manifests and dynamic proxies allow, together, to design a relational algebra library which, given a definition of a databases' types, is capable of maintaining these types throughout the program. In other words, it allows the compiler to detect type errors at all stages of the database access process: building queries and reading results.
Beyond this demonstration, this project also defined transformation rules from relational algebra to SQL algebra, as well as a description of SQL's weaknesses in encoding arbitrary relational algebra expressions.
Download the report or visit the SVN repository. The source code of this project is governed by the Scala open-source license. Feel free to improve it or use it in your own software.
2007
DocuWiki: automatic interaction with versioned source data
by Christian Conus, Pascal Conus and Sammy Ramareddy, supervised by Gilles Dubochet (semester project).
In this project, Christian, Pascal and Sammy developed a wikification tool for Scala source comments (scaladoc) stored in an SVN repository. Their tool automatically extracts comments from a set of SVN-stored files, inserts them into a database which is then displayed as an editable wiki by means of a Tomcat web application. Changes on the wiki are reintroduced, automatically again, on a regular basis into the SVN repository.
Beyond questions of engineering that were solved in this project, these students refined a model, based on that of Sygeco, to write web applications in Tomcat. This project also defined and implemented an entity-relationship model of entities (definitions and types) relevant to code documentation.
Download the report or the sources.
Mirror-based reflection in Scala
by Yohann Coppel, supervised by Gilles Dubochet (semester project).
Download the report or the sources.
Sygeco 3
by Micaël Paquier, supervised by Gilles Dubochet (semester project).
Scala GUI library
by Olivier Gobet, supervised by Gilles Dubochet (semester project).
Scala IDE as an Ajax Web Application
by Stephane Ruchet, supervised by Gilles Dubochet (semester project).
Download the report or visit the SVN repository.
2006
Efficient Semi-structured Queries in Scala using XQuery Shipping
by Fatemeh Borran-Dejnabadi, supervised by Gilles Dubochetv (master project).
Fatemeh studied the opportunity to use Scala's metaprogramming tools to implement an XQuery library. Her library analyses at runtime an abstract syntax tree generated by the compiler and composed primarily of sequence comprehension (for loops). Rewriting heuristics then translate this expression into and equivalent XQuery expression.
Beyond implementing the library prototype, this project compared formally XQuery expressions with Scala comprehensions and propose a formalism that maps the former into the latter.
Download the report or visit the SVN repository.