logo

ESSI Projects

Projects required for the completion of my Master's degree in Software Engineering. The focus of my degree was Distributed Systems and Applications, as you will probably be able to tell from the list. Note that most are documented in French only.

Client/Server Programming 1
Inter-process communication using the Chorus framework for real-time embedded systems. In C++ language.
Client/Server Programming 2
Object-oriented distributed programming in CORBA with Iona Orbix. The specification is written in IDL, the implementation is done in C++. The application developed manages a bank account, transparently exchanging messages to objects located on different computers.
Dynamic RPC Environment
Design and implementation of a distributed computing environment. Take Sun's RPC and add a dynamic dispatch mechanism, you get the idea. Note that this is not based on RPC, we wrote everything from scratch. A big project, it required my writing a Socket class library that I still use to this day. C++ language.
Networking: Lower Layers
Design and implementation of layers 2, 3 and 4 of the OSI network stack in a Motorola 68000 environment. This project involved the design of a network card and the associated protocol, inspired by Token Ring.
Networking: Upper Layers
Manipulation of the upper layers of the OSI network stack. Implementation of a networking protocol using the ASN.1 specification language. Where to go once your lower layers are functionning.
Networking Theory 1
Simulation and statistical analysis of multiple queues with different arrival algorithms. Queues are used to simulate packet networks (for example, an router buffer is modeled with a queue). C++ language.
Networking Theory 2
Simulation and statistical analysis of the transmission of a digital signal over a copper wire. Simulation of a Gaussian noise factor and analysis of results. THe basis of networking. C++ language.
Real-time Programming
Multiple threads of execution in a real-time environment with strong scheduling constraints. The associated locking and synchronization problems were solved using semaphors and monitors. C++ language.
Parallel Computing
Inherently parallel algorithms implemented using the PVM environment. PVM simulates an infinitely exapandable SIMD system (same instructions executed on multiple data sets) by allowing the execution of a same program on multiple computers. The programs were run on up to 100 Sun workstations at a time.
Compilation
Implementation of a "C+" language: object-oriented, inspired by C++ syntax, but the most arcane features were left out. Lexical analysis, syntax analysis, semantic analysis, translation to C. A very complete project that all software engineers should have done once in their lives.
GUI Programming
Implementation of an electronic phonebook in C++, using the XView library (aka OPEN LOOK). Database manipulation, GUI programming in the X Window environment.
System Programming 1
Implementation and comparison of different caching strategies: Least Recently Used, Not Used Recently, etc. C language on POSIX systems.
System Programming 2
Re-implementation of well-known programs such as cp, ls, etc. Buffered I/O. Pipes and signals. Multiprocessing and inter-process communication. C language on POSIX systems.
Text Editor
A basic text editor in Unix shell language. Extensive file manipulations, regular expressions, basics of a clean and maintainable software project.
Search Engine
A small search engine in Ada language. Graph search, comparison of search algorithms and their advantages, handling of exceptions, permanent storage of dynamic data in a custom database.

Programming Exercises

in Java
Various animation applets.
in C++
Miscellaneous hacks.
in Ada
Graph searches, threads and synchronization, split compilation, exceptions, etc. These exercises meant to teach the basic principles of software engineering (code reuse, specification/implementation split, documentation, etc.) using the Ada language.
in SQL
A tree structure implemented in SQL.
in TCL
A file browser and editor implemented in TCL. An extended TCL interpreter.
in lex & yacc
A pretty-printer for Ada and C++ languages. Targets are HTML and Epson line printers.
in Lisp
The power of functionnal programming examplified.
in Prolog
The power of logical programming examplified.


Copyright © 2000-2007 Renaud Waldura <renaud@waldura.com>