Add a summary of my programming projects.

This commit is contained in:
Sergiu Ivanov 2015-05-28 11:16:07 +02:00
parent cb56ede5c0
commit c244d00f77
3 changed files with 104 additions and 0 deletions

45
bib/programming.bib Normal file
View File

@ -0,0 +1,45 @@
@misc{Hurd,
title = {GNU/Hurd homepage},
howpublished = {\url{https://www.gnu.org/software/hurd/index.html}}
}
@misc{unionmount,
title = {Unionmount project for GNU/Hurd},
author = {Sergiu Ivanov},
howpublished = {\url{https://github.com/scolobb/unionmount}}
}
@misc{nsmux,
title = {Namespaced-based translator selection for GNU/Hurd},
author = {Sergiu Ivanov},
howpublished = {\url{https://github.com/scolobb/nsmux}}
}
@misc{sympy,
title = {SymPy homepage},
howpublished = {\url{http://www.sympy.org}}
}
@misc{categories,
title = {A category theory module for SymPy},
author = {Sergiu Ivanov},
howpublished = {\url{https://github.com/scolobb/sympy}}
}
@misc{compdev,
title = {Definitions of some basic computing devices},
author = {Sergiu Ivanov},
howpublished = {\url{https://github.com/scolobb/computing-devices}}
}
@misc{brsim,
title = {A Basic Reaction System Simulator},
author = {Sergiu Ivanov},
howpublished = {\url{https://github.com/scolobb/brsim}}
}
@misc{brsimweb,
title = {Web interface to the reaction system simulator},
author = {Sergiu Ivanov},
howpublished = {\url{http://combio.abo.fi/research/reaction-systems/reaction-system-simulator/}}
}

View File

@ -32,6 +32,7 @@
\addbibresource{bib/psystems.bib}
\addbibresource{bib/mcrs.bib}
\addbibresource{bib/arrays.bib}
\addbibresource{bib/programming.bib}
\newcommand{\targetname}{Université des Licornes Violettes}
\newcommand{\targetnr}{1337}

View File

@ -380,5 +380,63 @@ avec les structures à membranes ; nous avons montré que ce genre de
systèmes atteignent la complétude computationnelle avec des règles
restreintes et avec deux membranes seulement.
\subsection{Projets de programmation}
Lors de mon parcours universitaire et doctoral j'ai réalisé plusieurs
projets de programmation aussi bien accessoires à mon activité de
recherche qu'indépendants. J'ai notamment contribué au système
d'exploitation libre à micro-noyau GNU/Hurd~\cite{Hurd}, qui est fondé
sur le principe des translateurs ({\em translator}) --- des
applications spéciales qui peuvent être installés par dessus certains
fichiers pour offrir une vue modifiée du contenu. J'ai développe un
translateur capable de monter plusieurs systèmes de fichiers sous un
seul dossier (montage union)~\cite{unionmount} et j'ai aussi travaillé
sur une extension du gestionnaire du système de fichiers qui
permettrait d'installer des translateurs en utilisant une syntaxe
étendue de chemins d'accès~\cite{nsmux}. Ce travail a été effectué
lors de l'édition 2009 de «~Google Summer of Code~».
Je me suis aussi intéressé aux modèles d'interaction asynchrone en
réseaux et je me suis proposé d'implémenter le modèle acteur ({\em
actor model}). Les entités centrales de ce modèle sont les acteurs
--- les processus qui s'exécutent en parallèle et qui possèdent des
boîtes à messages. Les acteurs peuvent s'envoyer des messages de façon
asynchrone, c'est-à-dire l'expéditeur n'attend pas que le message soit
reçu. Afin de rendre mon implémentation plus succincte et flexible, je
l'ai réalisée en le langage fonctionnel strictement typé Haskell.
Un autre projet de programmation non relié directement à mes pistes de
recherche principales était ma contribution au système de calcul
formel SymPy~\cite{sympy} qui à consisté à initier un module de
théorie des catégories~\cite{categories}. Je me suis concentré sur la
présentation informatique des diagrammes commutatifs --- un outil de
base en algèbre abstraite --- et j'ai programmé la mise en page
automatique d'un tel diagramme. J'ai travaillé ensuite sur un
algorithme de déduction automatique de la commutativité d'un diagramme
à partir d'un ensemble de diagrammes dits axiomes. Cette contribution
a été faite lors de l'édition 2012 de «~Google Summer of Code~».
Un de mes premiers projets afférents aux domaines de recherche dans
lesquels j'ai travaillé était le développement d'un simulateur de
systèmes à membranes capable de représenter la plupart des variation
du modèle en utilisant plusieurs moteurs de simulation. J'ai
implémenté un moteur OpenCL qui s'exécutait sur la carte graphique et
un autre, en Haskell, qui était moins performant mais offrait la
possibilité de faire tourner le système simulé pas à pas.
Un autre projet était d'automatiser la construction des réseaux de
Petri universels, ce qui m'a amené à la réalisation d'un ensemble
d'outils pour la gestion informatique de ces objets, ainsi que de
quelques autres objets connus de la théorie de la calculabité,
notamment les machines à registres. Une partie de ces outils est déjà
disponible en ligne~\cite{compdev} ; d'autres sont en état d'ébauche
et seront disponibles au public dès leur finalisation.
Finalement, afin de faciliter la conception et la vérification de
systèmes à réactions, j'ai implémenté un simulateur de ce modèle. Le
code source du simulateur, ainsi qu'une documentation, est disponible
en ligne~\cite{brsim}. J'ai aussi réalisé une interface
Web~\cite{brsimweb} qui permet d'utiliser mon simulateur sans à avoir
à télécharger et compiler le code.
\printbibliography
\end{refsection}