HOME > SYSTEM & NETWORK

Corewar (Mar. 2008)

Corewar is a programming game in which two or more battle programs - aka warriors - compete for the control of a virtual machine. These programs are written in an kind of assembly language. The goal of the game is to make all the other warriors die.
Source: Wikipedia

For this school project, we were four people. Our team was split in two sub-teams of two people in each. The other sub-team worked on the virtual machine program.

With a friend, we worked on the ASM compiler which was capable of generating binary files from ASM source files.

Everything was done using the C programming language. The use of standard C library functions was forbidden.

You can view a screenshot of the project by clicking on the picture below.

42sh (May 2008)

For this school project, I worked with four people. We had to develop a UNIX shell using the C programming language.
Our shell was inspired from TCSH and included the following features:

  • Built-in commands: echo, env, alias, exit etc.
  • Advanced commande parsing: single and double quotes, backquotes
  • Left/right redirections, pipes, semi-colons, ampersands (AND), pipes (OR)
  • Local and environement variables, PATH look-up.
  • History
  • Termcaps (the use of the ncurse library was forbidden)
  • History

You can view a screenshot of the project by clicking on the picture below.

Malloc (Mar. 2009)

Until the day we have been asked to write our own malloc function, I was convinced that this function was magical. How did it ask the OS for more memory?

A quick lesson on our e-learning explained that the standard C library provided one special function which allows us to dynamically change the amount of space allocated for the data segment of the calling process.

Given that information, I made a first malloc function which was calling sbrk with an argument of the the size (in bytes) asked by the programmer.

Then, I ran the ls command with my own malloc function. It worked fine.
After that, I ran firefox, and it crashed to console saying "cannot allocate memory".

With the malloc function the point is the more memory you save, the slower your program.
On the contrary, the faster your function, the more memory you waste.

Thus, the hardest task in this project was to find a happy medium between performance and memory usage.

You can view a screenshot of the project by clicking on the picture below.

My FTP (Apr. 2009)

This school project consisted in two programs: a FTP server and a FTP client. I had to do realize it alone.

I chose not to implement the offical RFC for my project. I prefered to find a way to implement a stable protocol by myself.

The server and the client understand the following commands:

  • ls: directory listing
  • lls: local directory listing (client)
  • put: send a file to the server
  • get: send a file to the client
  • pwd: current working directory
  • lpwd: local current working directory (client)

You can view a screenshot of the project by clicking on the picture below.

BMail (rush)

This program was not a project. At EPITECH the students have rushes about twice per year. These events take place at week-ends. At the begining of a rush, the students are beeing given a project which they have to finish for the end of the week-end.

This rush project was uncommon because the student could choose any programming language for the development of an e-mail client.

The GUI is made with GTK and I decided to work with the Python programming language.

You can view a screenshot of the project by clicking on the picture below.