Bonjour,
Au sujet des autres écoles que tu mentionnes, je n'ai pu discuter rapidement qu'avec des étudiants de l'ECE et de l'EFREI, je vais avoir
du mal à comparer. Ma réponse ne sera donc pas complètement objective mais plutôt centrée sur l'Epita.
En effet son statut est très particulier. Jusqu'à il y a quelques années, le diplôme n'était même pas "officiellement" reconnu
par la CTI. Pourtant, le programme de l'Epita est vraiment celui d'une bonne école d'ingénieurs.
L'ennui, c'est que lors des journées portes ouvertes, les étudiants entendent surtout parler de piscine et de projets la nuit,
mais jamais vraiment de l'enseignement théorique qu'il y a une fois qu'on a passé la première année du cycle ingénierie.
On peut voir le cursus Epita en trois parties :
- La prépa intégrée, que tu ne feras pas donc.
Cela ressemble à une prépa intégrée classique ( maths - physique - anglais etc ), avec un contenu informatique déjà relativement
riche : algorithmie avec Objective CamL et Pascal / Delphi en première année, puis C en Spé, sous Unix. A chaque année
correspond un projet à faire en groupe : généralement, en première année ils font un jeu vidéo en Delphi, et en deuxième
année ils doivent plutôt faire un petit utilitaire. Les sujets sont assez libres.
- La première année du cycle ingé, qui est effectivement le gros bloc "code".
Ca commence par la piscine, deux semaines assez hardcore au niveau horaires.
Pour te décrire mon expérience, c'était assez simple : le matin, soit on a cours, soit on a soutenance ( on présente
le travail qu'on a fait la veille à un étudiant de troisième année dont le rôle est de nous encadrer ). Une fois qu'on a fini la soutenance, on
va en cours, et vice et versa.
Ca commence à 10h. Tranquille me diras-tu... eh bien non. L'après-midi, TP encadrés par les étudiants assistants de 3ème année que je mentionne au-dessus.
Les TP portent sur les notions vues le matin même. Il s'agit des bases du C et d'Unix : scripts shell, sed, awk, grep etc, tu connais déjà tout ça je pense.
Il peut arriver que les TP soient relevés.
Pause à 19h pour manger. A 20h, les sujets des exercices du soir sont dévoilés sur l'intranet des assistants. Heure de rendu : 5h ou 6h.
On peut cependant rendre notre tarball avec les exercices à partir de 1h-2h, quand la possibilité d'upload est ouverte sur l'intranet des assistants.
Le but est de rester le plus tard possible et de faire le plus d'exercices... Lors de ma piscine, ils avaient mis en place le fait que si on rendait notre
tarball avant 2h et que notre note sur les exos était inférieure à 14, alors la note était divisée par deux.
Les sujets de ces exercices du soir peuvent aussi subir des modifications surprises, parfois à des heures tardives. Cela arrive quand un étudiant pose une
question de type : "est-ce qu'on doit coder cette feature alors que ce n'est pas demandé dans le sujet ?", et là du coup cette feature devient obligatoire à coder.
C'est arrivé une fois dans ma promo, l'étudiant en question est devenu très impopulaire
Après, donc, de 5h-6h à 10h, tu as le temps de "repos". Pas très pratique quand tu as des trajets en transports en commun, surtout la nuit... Personnellement
j'habitais à 45 minutes de l'école en journée ( 1h30 avec les bus de nuit ), et du coup mes heures de sommeil étaient vraiment faibles.
La charge de travail est assez importante, surtout pour les gens qui n'ont que très peu fait de programmation ou touché à Unix. Pour toi, avec ce que tu
m'as décrit, tu devrais aller plus vite que les autres.
L'ambiance est tout de même très chaleureuse lors de la piscine, ces horaires très restrictifs soudent la promo. L'entraide est de rigueur lors des exos du soir, les gens
peuvent prendre des pauses quand ils le veulent, discuter entre eux sur les algos qu'ils utilisent pour résoudre tel ou tel exo... Ceci dit, bien évidemment l'échange de code
et la triche sont lourdement sanctionnés. Ils ont des scripts qui s'occupent de parser les fichiers et détecter les "ressemblances" sur des paquets de lignes.
Parfois, lors de la piscine, tu as des examens machine, de 20h à minuit. Les exos reprennent parfois des petits trucs vus lors des jours précédents ( avec des exercices cadeau
comme my_strlen ), et il y a aussi des exercices funky, par exemple des petits trucs de "sécurite" ( effectuer un stack overflow pour afficher un message, par exemple ), ou un "Hello World"
en Brainfuck, on a eu ça à un moment. Pour toi, ça sera du gâteau donc.
En pièce jointe, je te fais parvenir un exemple de sujet d'examen machine.
Alors bien sûr, les exercices peuvent paraitre faciles, mais il y a aussi une coding-style très stricte sur toute la première période de l'ing1. Vu que
tes exercices sont corrigés par un script et pas par un humain, ta note est souvent binaire. Seules les questions posées par les assistants lors des soutenances
du lendemain te permettent de grapiller des points si tes exos sont foireux ou si ton code n'est pas à la norme.
La norme comprend des règles comme : 10 fonctions maximum par fichier, 25 lignes maximum par fonction, 5 paramètres maximum, etc...
Ceci dans le but d'apprendre à coder "proprement".
La coding-style ne s'applique pas sur les Makefile qu'on te demande de faire, mais un certain ordre dans les appels sera de rigueur.
Le lendemain de chaque jour d'exercices, les notes tombent, et sont visibles par tout le monde sur l'intranet. Tu as une sorte de classement.
Les notes peuvent être négatives, surtout s'il y a triche ( les fameux -21 et -42 ).
Du coup, les moyennes en piscine ne sont pas très bonnes, mais ce n'est pas vraiment grave. C'est surtout pour bien te préparer à supporter le reste de l'année.
Le coefficient de la piscine est assez faible.
A la fin de la piscine, on a généralement un projet, de type "coder une lib". Souvent c'est la libstream ou la libstring qui tombent, des batteries de fonctions
à faire pour t'apprendre à bien manier le shell, le système de fichiers Unix, les chaines de caractères, etc.
Ensuite, week-end d'intégration : la promo part en car dans un lieu tenu secret jusqu'à la date de départ, et on fait des soirées et fêtes, toujours dans un esprit de
groupe, et dans le but d'apprendre à connaître ses camarades de promo. C'est très important, il faut déjà voir avec qui tu t'entends bien, pour les projets de groupe futurs.
Après la période piscine, on reprend un rythme plus normal : cours théoriques tout au long de la journée. Les cours sont donnés par des profs extérieurs, ou, pour certaines
matières, par des enseignants-chercheurs du LRDE, le labo de recherche de l'Epita.
Ces cours comprennent des bases de données / SGBD, de la gestion de projet, de la communication, la théorie des langages, la sécurité informatique, les réseaux,
du management ( mais davantage vers la fin du cursus ), de la création d'entreprises, une grosse partie sur la construction des compilateurs et sur les systèmes d'exploitations...
Avec aussi de l'anglais et des options plus exotiques, comme le japonais.
Il y a donc un enseignement théorique, mais c'est surtout lors de la phase finale que la théorie est la plus importante. En ing1, on t'apprend à devenir une vraie brutasse au niveau
code, parce qu'il faut avoir un fort bagage technique. Seuls ceux qui passent cette épreuve peuvent choisir un enseignement de spécialisation lors des années suivantes.
En parallèle aux cours théoriques de l'ing1, tu as bien sûr des projets. Souvent, les sujets des projets tombent le lundi, et ils sont à rendre le dimanche à 23h42. Oui, le dimanche
soir, tu lis bien. A l'Epita, "un dimanche est un lundi comme les autres", je me souviendrai toujours de cette citation du directeur.
Qui, lui, ne vient pas travailler le dimanche, mais passons.
Les projets sont à faire seul au début, mais rapidement les projets en groupe apparaissent. Soit les groupes sont formés aléatoirement, avec des "bons" et des "mauvais" par rapport
au classement de l'intranet, soit ( le plus souvent ) les étudiants forment les groupes eux-mêmes et s'inscrivent sur l'intranet.
Sur toute la première période ( jusqu'à Noël ), les projets sont à faire en C, et toujours sous Unix ( NetBSD / FreeBSD selon les années ). Les projets finaux de cette période
sont les fameux 42sh et Corewar ( respectivement, coder un shell et une machine virtuelle ).
Ensuite, on passe à des langages plus haut niveau comme Java ou C++. On a une piscine C++ d'une semaine.
A ce stade, on utilise des outils comme Boost ou les Autotools, et du versioning.
La partie "chef de projet" devient aussi de plus en plus importante : sur les projets Java de fin d'année, en plus du code tu dois fournir les
documents essentiels d'un projet ( le travail du chef de projet ) : dossier de spécifications, modélisations UML, cahiers de tests...
D'ailleurs ça m'étonne que le prof sur lequel tu es tombé à l'entretien ne connaisse pas le fuzzing. Mais bon, passons.
Ci-joint un sujet d'un projet C++ de traitement d'images, juste pour que tu voies un peu.
A partir d'un certain point dans l'année, les sujets sont en anglais. Malheureusement, vu que ce sont les assistants qui rédigent ces sujets,
l'anglais n'est pas toujours au point. Je te laisse juger.
Le plus gros projet C++, celui qui m'a coûté ma scolarité, est le projet Tiger : il s'agit d'écrire un compilateur en C++ d'un langage bas-niveau.
On part d'un parseur Flex-Bison, puis on doit compléter des briques de code qui s'ajoutent d'une session de projet à l'autre.
Ce projet s'étale sur plusieurs mois, et est souvent en parallèle avec d'autres projets.
Le sujet du Tiger est disponible ici : http://www.lrde.epita.fr/~akim/ccmp/assignments.html
Il y a également des modules en libre choix : langage D, .NET / C#, Ruby...
Avec bien sûr un projet associé à chaque module.
Le rythme est assez soutenu, mais c'est toi qui gères ton temps comme tu veux. Comme il y a assez souvent des projets en
parallèle, oui, les étudiants choisissent de ne pas venir à certains cours ( réseaux ou bases de données ) pour dormir ou faire
les projets. Néanmoins, les sessions de partiels ( en Janvier et Juin ) ne sont carrément pas à négliger, avoir des bonnes notes
aux projets ne suffit clairement pas pour passer en Ing2 : l'enseignement théorique est très important au conseil de classe.
Beaucoup de "pisseurs de code" se font refouler à cause de ça.
Avant que j'oublie : certains projets se font en "rush". Le week-end est bloqué juste pour ce projet : le sujet tombe le vendredi
soir, après les cours, lors d'une présentation vidéo par les assistants. Heure de rendu : dimanche 11h42 ou 23h42.
Vu que le projet est massif et en groupe, une sacrée organisation est de rigueur, et les mecs codent toute la nuit.
- Une fois cette année d'Ing1 passée ( la "pire" année du cursus ), on arrive à un stage, et aux enseignements de spécialisation.
T'ont-ils été présentés lors de ta visite ? As-tu déjà une idée de quelle "spé" t'intéresserait ?
Ce lien peut t'intéresser : http://www.epita.fr/etudes-options-specialisations-systemes-reseaux-securite.html
Si tu es intéressé par une spé en particulier, je peux te mettre en contact avec un étudiant ayant suivi cette spé, n'hésite pas
à demander.
C'est surtout lors de ces dernières années que l'enseignement s'accentuera davantage sur la théorie.
Les stages de fin d'études à l'étranger ( 6 mois ) sont vivement appréciés.
J'ai un pote qui est parti à Singapour faire son stage, et il vit là-bas aujourd'hui.
Un autre est en Irlande.
Lors des dernières années d'études, les meilleurs étudiants sont contactés pour faire les assistants des ing1. Bien évidemment,
une bonne rémunération est à la clé.
A rajouter aussi qu'à l'Epita il y a aussi un fort esprit de groupe, notamment avec les associations diverses ( sports divers, robotique,
œnologie, BD, Japanimation, art urbain, etc... ).
Donc pour en revenir à tes hésitations :
- Le coût de l'école : oui, c'est un point très douteux, d'autant plus que les locaux sont partagés par l'Epita, l'Epitech ( version beaucoup plus
technique que l'Epita, l'aspect théorique / ingénieur y est nettement moindre ) et l'ISBP ( Biotechnologies, un peu de filles, ça fera pas de mal ).
Moi-même je n'ai pas d'explication réelle quand au coût, si ce n'est le renouvellement du parc machines ou le financement des associations.
- Les pisseurs de code : comme je l'ai dit, avec Epita tu vas obligatoirement passer par une forte dose de code, mais il y a un vrai enseignement ingénieur
derrière. Parmi les gens que je connais et qui sont sortis de l'école, seuls ceux qui veulent vraiment être programmeurs le sont, mais la plupart sont ingénieurs débutants, consultants
ou chefs de projet juniors / assistants MOE/MOA chez Thales, Business Objects, SFR, Solucom, Eugen Systems, InckA...
Donc non, tu ne passeras clairement pas ta vie à coder, loin de là.
C'est la grosse différence entre Epita et Epitech.
En ce qui concerne Sup'Info, oui il y a une petite gué-guerre ( surtout lors des salons de l'Etudiant, c'est assez marrant ), mais elle s'est estompée depuis
qu'on a eu l'habilitation CTI, qui estime qu'Epita délivre un vrai titre d'ingénieur.
Sup'Info est davantage portée sur les certifications ( Cisco - Sun - Microsoft ), mais ça, rien ne t'empêche de les passer en candidat libre.
Voilà.
tl;dr : Le rythme de travail à l'Epita est très lourd, mais ce qu'on y apprend est un vrai plus. Oui tu vas compter tes heures de sommeil. Oui tu vas pleurer devant
un 0 alors que t'as passé la nuit à coder. Mais oui tu vas apprécier l'embauche facile et les bons postes à la clé. Oui l'enseignement est à mon sens un vrai
cursus d'ingénieur. Et oui, plus tard tu te souviendras de la piscine, et ça sera un bon souvenir.
Bien, j'espère avoir répondu à ta question, en tout cas je t'ai donné un overview de ce qui t'attend. Si j'ai oublié un truc ou si tu en veux davantage, n'hésite pas à me renvoyer un mail.
Personnellement, ayant raté cette école à la fin de l'Ing1, je m'en veux à mort, je suis convaincu que c'est une très bonne école, malgré tout ce que j'ai enduré là-bas.
Et mes potes qui s'en sont sortis me le prouvent très souvent, surtout au vu de leurs jobs respectifs...
Bonne journée, et bon courage dans tes choix.
W.