Miscellaneous Projects

In addition to projects directly related to the main themes of our work we have a few of a more general nature.

General

Eiffel code generation target for ANTLR

Supervisor: Benjamin Morandi
Suitability: master's thesis
ANTLR is a top-down parser generator. Based on a plug-in mechanism, the generated parsers can be written in different languages. There already exist a number of code generation targets for ANTLR. The goal of this project is to develop a code generation target for Eiffel. Such a code generator target is attractive, because ANTLR grammars can conveniently be written in EBNF. Moreover there are tools available for the development of such grammars.

Syntax Hihglighting for Eiffel on the Web

Supervisor: Julian Tschannen
Suitability: open-source EiffelStudio lab
Several libraries for syntax highlighting exist for web-based projects, written in JavaScript, Python or PHP. The task of this project is to add support for Eiffel to some of the widely used libraries such as pygments (used on Github and Bitbucket) and the ACE editor. In addition to adding Eiffel to these libraries, support for the Boogie language should be added as well.

Improving EiffelStudio

Flat-view without ANY

Supervisor: Nadia Polikarpova
Suitability: open-source EiffelStudio lab
The flat view of a class shows all features of the class, including inherited ones. However, sometimes it would be convenient to exclude the features that are inherited without redefinition from class ANY, because these features are shared by all Eiffel classes and do not characterize the class itself. The flat view of small classes gets particularly cluttered by ANY features. In this project, the pseudo-flat view should be implemented, which is essentially the standard flat view with non-redefined features from ANY removed. This project is intended for the course "Software Engineering Laboratory: Open Source EiffelStudio".

Spell Checker

Supervisor: Julian Tschannen
Suitability: open-source EiffelStudio lab
Eiffel style rules encourage programmers to call classes and their features mnemonic names, consisting of full english words. In this project you are asked to integrate an on-the-fly spell checker into EiffelStudio, that will check spelling of such mnemonic names. This project is intended for the course "Software Engineering Laboratory: Open Source EiffelStudio".

Refactorings

Supervisor: Marco Piccioni
At the moment Eiffelstudio offers only two kinds of refactorings: class/feature renaming and pulling a feature up the inheritance hierarchy. The aim of this project is to integrate more refactorings into EiffelStudio. This project is intended for the course "Software Engineering Laboratory: Open Source EiffelStudio" or for a semester/master thesis, depending on the number and complexity of the tasks.

Distributed Eiffel Packages

Supervisor: Scott West
As is the case with many programming languages, there is a need in Eiffel to have a packaging system for distribution of software programs and libraries. The goal of this project would be to produce an infrastructure, similar to CPAN for Perl or Hackage for Haskell, for Eiffel programs. The project would be to build a central area for software to be stored and accessed. This area should be constructed with the idea in mind that it will be accessed by both a web-application and a standalone front-end. The standalone front-end would be responsible for fetching and compiling dependencies.

Version control

Supervisor: Nadia Polikarpova
Suitability: bachelor thesis or open-source EiffelStudio lab
The goal of this project is to provide an effective interface to a version control system from within EiffelStudio IDE. Similar tools already exist and are quite popular in other development environments: Subcliplse, VisualSVN. This project will allow Eiffel programmers to benefit from seamless and more efficient version control throughout the development process.

Libraries

Improvement of the EiffelWeb API web layer

Supervisor: Marco Piccioni
Status: Open for semester thesis/EiffelStudio Lab
The task consists in improving an existing web framework. The API has to be improved with some new features (for example full session and form template support) and a hands-on, step-by-step tutorial together with a sample application has to be written. Development language: Eiffel.