School Projects

I studied software engineering at HEIG-VD engineering school, formerly known as EIVD, in 2002-2006.

Here are some selected projects I wrote during this time.

2005-12 LifeLine

Mac OS X Cocoa application to explore new ways to access files using metadata.

Work diploma at EIVD with the software company Sen:te. (grade 5.7/6). poster

In March 2008, I wrote an improved, opensource version of LifeLine called SpotLook for Mac OS X 10.5.

2005-06 TeamEdit

Collaborative text editor, ala SubEthaEdit, but opensource and multiplatform, written at EIVD.

Thanks to Daniel Lifschitz whithout who the project would never have reached this state on time. This project got the grade 6/6.

Sourceforge project
Download binary: teamedit-0.1.zip
Download sources: teamedit-src-0.1.zip

[Update] Although TeamEdit was the first opensource, multiplatform, collaborative text editor, it was more a proof of concept than a finished product. Such a software finally saw the light, it's ACE. "Cherry on top of the cake", it uses the Bonjour protocol.

2005-02 Moyenne des lots, variables de contrôle et temps moyen d'attente

Laboratoire de simulation et modélisation discrète no 2.

donnée, rapport, rapport src

Ce deuxième et dernier laboratoire propose de mettre en oeuvre la théorie relative aux variables de contrôle et l'utilisation de moyenne de lots vue au cours.

Il s'agit d'analyser les gains que l'on peut obtenir en simulant le temps d'attente dans le buffer d'une file G|G|K mais aussi de d'analyser le comportement d'une formule approximative.

Le but de cette recherche est de pouvoir conseiller quelqu'un qui voudrait utiliser cette formule, en fonction de quatre paramètres.

2004-12 Espérance de vie d'un système

Laboratoire de simulation et modélisation discrète no 1.

donnée, rapport, rapport src, slides

Ce laboratoire concerne la simulation d'un système stochastique, un réseau, formé de multiples composantes soumises à des pannes "cataleptiques" (soudaines et complètes). L'objectif est de mesurer et d'analyser l'espérance de vie de différents réseaux qui nous sont fournis, ainsi que d'étudier l'influence du travail d'un réparateur qui remet les composantes en état en un temps donné. Ce réparateur peut agir selon différentes politiques ; il s'agira d'inventer une politique plus efficace que celle qui nous est proposée et qui consiste à réparer la plus ancienne des composantes en panne. Cette simulation est discrète, de type Monte-Carlo.

Les réseaux qui nous sont donnés, data1, data2 et data3 sont reproduits en annexe.

2004-07 JCT (Java Cartes Thématiques)

JCT is used in Canton de Vaud schools in geography teaching. It is usable by kids to draw thematic maps.

Semestre project written with Daniel Lifschitz (grade: 5.9/6).

The code is interesting since there's only one compilation file to generate an executable suitable for every platform. Think of Mac OS X: its human interface guidelines require an icon, a menu bar at the top of the screen, and other properties that are not standard Java behaviors.

JCT web page
Sourceforge project
Development documentation

2004-07 SpaceDog (Chien de l'espace)

EIVD Computer graphics project. Grade: 6/6.

This is a dog and is bone modelled in 3D. The user cas move in the scene, add fog, change the lighting, change the textures, change the number and the type of projections, and so on.

This project was written in several weeks, by adding every week the new concepts explained during the lessons.

Sources C / OpenGL: "spacedog_src.zip
Projet XCode: "spacedog_xcode.zip
Executables Windows / Mac OS X: "spaceDog.zip

2004-03 Ada Spell Checker

Algorythmics and Data structures project written with Daniel Lifschitz (grade: 6/6).

This project is inspired by another project given to students by J. Kinsley at EPFL.

Ce laboratoire concerne le développement d'un correcteur d'orthographe. Le programme, écrit en Ada95, permet de charger un dictionnaire, de repérer les mots d'un texte qui ne font pas partie du dictionnaire, pour soit y apporter des corrections de manière interactive, soit rediriger les propositions vers un fichier.

L'implémentation met l'accent sur une bonne utilisation de la mémoire et la rapidité de l'exécution, en définissant un arbre particulier pour stocker de gros dictionnaires et retrouver l'information rapidement.

Documentation
Source code, binary, texts and dictionaries (Windows and Mac OS X)

2003-07 AdaRSA

Semester project written at EIVD with Daniel Lifschitz. Grade: 6/6.

AdaRSA is an Ada95 cryptography program. What it does:

For this project, we had to create an Ada95 library ("package") to manage very big integers, much bigger that the biggest one coded on 32 bits. As the program needed intensive computing, we had to implement arithmetic functions efficiently on this type.

Documentation
Documentation LaTeX Sources
Application (for Windows only!)

Ada95 sources are available on demand.

Note: if you are looking for a rapid facorization software, the most efficient I know is the PARI/GP library.

2003-07 knapsack.adb

Petit concours de programmation dynamique en Ada 95 : problème du sac-à-dos (knapsack).

Il s'agissait de lire des couples valeur/poids dans des fichiers, choisir certains de ces couples de manière à maximiser la valeur totale, sous la contrainte de ne pas dépasser un poids maximal autorisé et que la solution soit la plus légère possible.

Monsieur X vient de remporter le concours organisé par la société Y. Son lot final va toutefois dépendre de lui, car une dernière épreuve l'attend... Devant Monsieur X sont, en effet, disposées, d'une part une balance, et, d'autre part, 40 boîtes, numérotées de 1 à 40, portant chacune une étiquette indiquant: le no de la boîte, le poids de la boîte (valeur entière exprimée en [Kg]) ainsi que la somme d'argent se trouvant à l'intérieur de la boîte (valeur entière exprimée en [Frs]).

La règle de l'épreuve est la suivante:

Monsieur X dispose d'un temps imparti pour choisir un échantillon quelconque de boîtes parmi les 40 boîtes présentes. Une fois l'échantillon choisi, celui-ci sera placé sur la balance. Si le poids indiqué alors par la balance excède le poids de Monsieur X (80 [Kg]), celui-ci ne gagnera rien. Si par contre, le poids indiqué par la balance se révèle être inférieur ou égal au poids de Monsieur X, celui-ci empochera la somme d'argent contenues dans les boîtes disposées sur la balance.

La question (vous l'avez devinée) est la suivante:

Quelles boîtes Monsieur X doit-il choisir pour maximiser son gain ?

Dans le cas où plusieurs meilleures solutions existent, on choisira celle (pas forcément unique!) de poids minimal.

Les données concernant les poids et les sommes d'argent se trouvant dans les boîtes pourront être trouvées dans les fichiers Poids.txt, Argent.txt. Le vainqueur sera celui qui trouvera la (les) solution(s) optimale(s) et dont le programme s'exécutera le plus vite.

Ma solution : knapsack.adb.txt

J'ai gagné, ex-aequo avec Daniel :)