|
|
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.
|