[PDF] Travail de fin d’études en vue de l’obtention du diplôme de



Previous PDF Next PDF







BACHELIER EN INFORMATIQUE ET SYSTEMES FINALITE : AUTOMATIQUE

Le bachelier en informatique et systèmes(1) est capable d’assurer la mise en œuvre, la maintenance et l’exploitation optimale d’un projet technologique lié à la technologie informatique, aux réseaux informatiques, à l’informatique industrielle, à l’automatique et à la



Evaluation du bachelier « informatique et systèmes finalité

l’évaluation du bachelier « informatique et systèmes (finalité technologie de l’infomatiue ) » Le présent rapport end compte des conclusions auxuelles sont pavenus les expets apès la lectue du appot d’autoévaluation édigé pa l’entité et à l’issue des entretiens et des observations réalisés in situ



informatique de gestion informatique et systèmes, finalité

Informatique et systèmes, finalité technologie de l'informatique Léquipe pédagogique de la section technologie de linformatique a décidé de mettre laccent sur lamélioration de la qualité pédagogique et ce, au travers de quatre thèmes mis en évidence par les experts



Travail de fin d’études en vue de l’obtention du diplôme de

Durant mes deux années à l’Université catholique de Louvain en Sciences informatiques et mes trois années à l’EPHEC en Technologie de l'informatique, j’ai souvent été confronté au même cas de figure Les professeurs demandent à ce que l’on soumette nos travaux sur la plate-forme Claroline que ce soit eCampus ou iCampus



Evaluation des bacheliers « informatique de gestion » et

Ce rapport décrit à la fois le bachelier « informatique de gestion » et le bachelier « informatique et systèmes » (finalité technologie de l’informatique) organisés par l’IEPSCF de Uccle Les remarques spécifiques à l’un des deux bacheliers seront mises en évidence via le code couleur ci-dessus



Orientation : Technologie de l’informatique

L’orientation Technologie de l’informatique, proposée à la HELHa à Tournai, se distingue nettement des sections informatiques à orientation commerciale Pour finir tes études en beauté, tu réaliseras un stage de 15 semaines en entreprise



MASTER EN ARCHITECTURE DES SYSTÈMES - Province de Liège

Bachelier en informatique et systèmes : • Finalité : Réseaux et télécommunications • Finalité : Informatique industrielle • Finalité : Technologie de l’informatique • Finalité : Sécurité des systèmes POURQUOI ? L’informatique évolue sans cesse à une vitesse vertigineuse et a envahi tous les domaines de l’activité



ORIENTATION INFORMATIQUE INDUSTRIELLE

Bachelier en informatique et systèmes, orientation informatique industrielle UNITES D'ENSEIGNEMENT ACTIVITES D'APPRENTISSAGE 4 BACHELIER EN INFORMATIQUE ET SYSTÈMES ET SYSTÈMES Liste UE AATECH-INS08102019110702 - Info Sys Info indus 2 - ORIENTATION INFORMATIQUE INDUSTRIELLE



MASTER EN SCIENCES INFORMATIQUES - Université de Namur

— bachelier en sciences informatiques ACCÈS MOYENNANT UN COMPLÉMENT DE 30 À 60 CRÉDITS — bachelier (type court) en informatique de gestion; — bachelier (type court) en informatique et systèmes, orientation informatique industrielle, technologie de l’informatique, réseaux et télécommunications ACCÈS SUR DOSSIER

[PDF] Syndicat des infirmières et infirmiers du Nouveau-Brunswick

[PDF] LES CAHIERS DU PÔLE ALIMENTAIRE. Chantier prioritaire 2013 PANORAMA DES RÉGIMES DE PRÉVOYANCE DES BRANCHES DE L ALIMENTAIRE

[PDF] REGLEMENT DU SERVICE ANNEXE D HEBERGEMENT. - FONCTIONNEMENT DU SERVICE DE RESTAURATION - RESTAURANT SCOLAIRE et CAFETERIA

[PDF] CONDITIONS GENERALES D'UTILISATION

[PDF] Une série de baccalauréat conforme

[PDF] REGLEMENT COMPLET DU JEU SANS OBLIGATION D ACHAT «DPAM FAIT SON CARNAVAL» ORGANISE PAR LA SOCIETE DU PAREIL AU MEME DU

[PDF] Baccalauréat en enseignement du français langue seconde

[PDF] Nos permanences : Du lundi au vendredi de 9h-12h et 14h-17h30 Adresse mail :

[PDF] APRÈS LA SECONDE. CIO de Montrouge 24, rue Arthur AUGER

[PDF] LE CONTEXTE LA PRESENTATION DU PROJET

[PDF] LES GRILLES DE SALAIRES 2013 Dans la Fonction Publique Hospitalière

[PDF] COMMUNE DE FERNEY-VOLTAIRE CAHIER DES CHARGES

[PDF] NUMERATION MATERNELLE. La partie sur la numération s'intitule : «Approche des quantités et des nombres».

[PDF] AVIS DE MARCHÉ FNS. La procédure d'achat du présent avis est couverte par l'accord sur les marchés publics de l'omc : Non

[PDF] LES CLAUSES D INSERTION DANS LES MARCHES PUBLICS

Travail de fin d’études en vue de l’obtention du diplôme de

AvenueduCiseau151348Louvain-la-NeuveTel.:+3210/47.53.90 DÉVELOPPEMENTD'UNFRAMEWORKDECORRECTIONDECODEJAVAPOURPYTHIA (PLATEFORMED'APPRENTISSAGEDELAPROGRAMMATION)Travaildefind'étudesenvuedel'obtentiondudiplômedebachelierenInformatiqueetSystèmes:finalitéTechnologiedel'informatique ETUDIANT:BISHOPGREGORY RAPPORTEUR:LAMBEAUCHRISTIAN ANNEEACADEMIQUE2013-2014

2 Remerciements LadécouvertedePythiaetsespossibilitésfutlemomentclédemontravail.Sanscela,j'auraisprobablementtrouvéunautresujetbeaucoupmoinspassionnant.Eneffet,ceTFE1futvraimen tattrayantpourmoi.Malgré leslongues journéesdestag eparfoisfatigantes,jetrouvaislamotivationnécessaireausoirpouravancersereinement.Jemedoisdoncdere mercier MonsieurCombéfispourm'avoirfaitdé couvrircetteplate -formeetégalementpourtoutcequ'ilapum'apprendre.Parcestage,jeremercieMadameVandenSchrieckpourm'avoirpropo sécettepériode d'apprentissageetconse illéuntravailenrapportavecmonobjetdestage. JesouhaitenaturellementremercierMonsieurLambeaupoursesnombreuxconseilsetremarquesquifurentbénéfiquesdanslaréalisationdemonprojet.Deplus,ilm'afaitpartdenombreusesastucesetidéesconcernantjQuery. Siaujourd 'huimontravaildefind'étudeses tpratiquementc ompatibleavecl'EPHEC2,c'estprincipalementgrâceàl'aidegénéreusequem'aproposéeMadameVroman.Eneffet,malgrélefaitqu'ellenesoitpasmonrapporteurdeTFE,elleavolontiersacceptéderépondreàquelquesquestionsconcernantdesdétailsdemoninterfaceutilisateur.Deplus,j'aiétémisencontactavecMonsieurVerhelst,notammentgestionnaireduréseauEPHEC,etMonsieurDelvigne,gesti onnaired'eCampus.Ilsontpum'aide ràmieuxcomprendrelesaspectstechniquesd ontauraitbeso inmaplate-formepourpouvoirse joindreauréseaudel'éc ole.C'étaitdoncagréab ledepouvoird iscuteravecd' autresenseignantsprêtsàm'expliquerteloutelaspect.Sesentirdanslabonnevoieestquelquechosedesincèrementrassurant. 1Travaildefind'études2Écolepratiquedeshautesétudescommerciales

3 TabledesmatièresRemerciements.........................................................................................................................21.Introduction.......................................................................................................................42.Corpsdutravail..................................................................................................................52.1Avisdesétudiantsconcernés......................................................................................52.2Descriptiondesoutilsutilisés.....................................................................................62.2.1Pythia...................................................................................................................62.2.2Python3...............................................................................................................72.2.3MySQL..................................................................................................................72.2.4LightweightDirectoryAccessProtocol(LDAP)....................................................72.2.5HTML,CSS,jQuery&JSON..................................................................................82.3Solution.......................................................................................................................82.3.1LeServeurLDAP...................................................................................................92.3.2Labasededonnéesdistante.............................................................................102.3.3Laplate-forme...................................................................................................103.Difficultésrencontrées....................................................................................................264.Améliorations..................................................................................................................275.Conclusion.......................................................................................................................286.Webographie...................................................................................................................297.Annexes...........................................................................................................................30I.Schémarelationnel.......................................................................................................30II.Diagrammed'activité:Soumissiond'unétudiant........................................................31

4 1. Introduction Durantmesdeuxannéesàl'UniversitécatholiquedeLouvainenSciencesinformatiquesetmestroisannéesàl'EPHECenTechnologiedel'informatique,j'aisouventétéconfrontéaumêmecasdefigure.Lesprofesseursdemandentàcequel'onsoumettenostravauxsurlaplate-formeClarolinequecesoiteCampusouiCampus.Dûaunombreélevédesoumissions,lesprofesseursn'ontpasnécessairementletempsdecorrigerchaqueexercicepourchaqueétudiant.Ainsi,nousn'avonspasconstammentunfeedbacksurnosimplémentationsenlangagedeprogrammati on.Nous avonsbienévidemmentnoscompilateurs installéslocalementsurnosmachines,maisilarrivequ'ilssoientsoitenanglais,soitincompletsvis-à-visdescorrectionsàapporterànoscodes.Approchantdelasessiond'examens,ilétaitdoncpossiblequedesétudiantsn' étaientpastotalem entconfiants quantàleurcapacitéàimplémentercorrectement.Fortdeme sdébutsàl'UCL3etdem onanglais ,jen 'aipasrencontrécesproblèmesdansledomainedelaprogrammation. Lehasarddeschosesouplussincèrementmesantécédentsfirentqu'unstagemefutproposéàl'EPL4oùj'avaispasséquatrequadrimestres.Ainsi,quandj'apprisquemonstagesebaseraitprincipalementsurPythia,uneplate-formeintelligentequipermetd'analyserducodesoumisetderenvoyerducontenuutilesurbasedel'implémentation,j'aidirectementpenséàunealternativepourl'EPHEC.J'enfisdonclademandeentantquetravaildefind'études,cequifutaccepté. Ildevaitse baserautourduPascal, langagequi,jus qu'endécembre2013,étaitlepremierlangagedeprogrammationenseignéàl'EPHEC. Monframeworkpermettraitauxenseignantsd'avoirrapidementuncompterendusurlesexercicesréalisésparlesétudiants.Cesdernierspourrontdoncs'entraîneràleurguisesurdesexer cicesbasiqu es.Cetteinterfacewebpédagogiqu eparticiperaitdoncàl'apprentissagedesnéoprogrammeurs. Avantdepouvo ircommen cermontravail,monpremi erobjectiffutd'apprendrele fonctionnementdelaplate-formePythia.Dûàsapopularitéplutôtfaibleetàsajeunesse,ilestforteme ntcompliquédetrouverd eladocumentationprincipalementte chniques urcelle-ci.Ainsi,i lmefallutdécouvrir unepartie desfonc tionnalitésviames premièressemainesdestage.Jen'avaispratiquementaucuneconnaissanceàsonsujet,jenesavaisriendesonsystème.Conscientsdesrèglesimposéesparl'EPHEC,MonsieurCombéfis(monmaîtredestage),MonsieurLambeauetmoi-mêmeavionsconvenuqueletravaileffectuéautourdePythiad urantcettep ériodedestage neconcerneraitp aslafonction nalitéprincipalequ'estl'analysedecodesmaisplutôtl'améliorationdelaplate-formeainsiquel'ajoutdediversmodules.Bienvite,jemerendiscomptequelanouvelleversiondelaplate-formePythianeconte naitpluscette"i ntelligenc e"précédemmentcitée. Eneffet,cette dernièrenepermettaitquedelancerdesmachinesvirtuellescontenantl'environnementadéquatàlatâchedésirée.CesfichierssystèmesétaientpréalablementconçusparPythiaàl'aidedepaquetsDebianSqueeze.Lesfonctionnalitésprincipalesdecetteplate-formesontdonclacréationetl'exécutiondemachinesvirtuellesLinux. 3UniversitécatholiquedeLouvain4EcolePolytechniquedeLouvain

5 Cependant,aucoursdespremièressemainesdemonstageetdel'élaborationdemonTFE,jefusinforméquel'EPHECapporteraitdesmodificationsauxcoursdeprogrammationdonnésauseindel'établissement.Eneffet,suiteauprojetMarcourt,deslangagestelsqueCouencorePascalétaientappelésàdisparaîtredel'enseignementàl'EPHEC.C'estalorsqu'undébatpritplace ,qu'allaitadv enirmaplate-forme?Ilfal lutdon ctrouverunes olutionrapidementafindenepastrop meretarderau niveaude sdiffére nteséché ances.Unedécisionfutprisequelquesjoursplustard,maplate-formesebaseraitdésormaisautourdulangageJava,quiseraitconservépourlesétudiantsdedeuxièmeannée.2. Corpsdutravail 2.1 Avisdesétudiantsconcernés Lapremièreétapedemontravailconsistaenl'acquisitiondupointdevuedesétudiantsfaceàce rtainslangagesdeprogr ammation,leursappréhen sionsou encorecequ'ilspréféraientdansceux-ci.J'avaisco mmencémontravails urlelangagePascal,j'aidonc recueillidiversesopinionsvis-à-visdecelui-ci.J'aiparlasuiteposédesquestionssimilairesparrapport auJava.Voic iunelisted'opin ionsanonymes quipourraient êtreutilesauxenseignantsdanslefutur. PASCAL • "Cequiplaît:lasimplicitédelapriseenmaindulangage,cequidéplaît:les";"aléatoires,leslimitesdulangage."• "Jetrouvequ'ilseraitmeilleurdesepenchersurlepythonpourinitierlesnouveauxinscritsàlaprogrammation."• "LePascalacommegrandequalitédepouvoirfacilementdonnerunaperçudelalogiquedeprogrammation, auvuedulangage dehautniveau(trèsproched el'humain).Évidemment,savoircoderenPascalserévèleêtrecomplètementinutile(lePythonauraitétémieuxparexemple,maisjeletrouvemoinsfaciled'accèsquandoncommencelaprogrammation).Enrésumé,jenedonneraipasdepointnégatifauPascalsimpleme ntparcequ'iln'aplusaucuner aisond'êtrehorm isdansl'apprentissagedelalogiquedebase."• "Venantd'unlangageplus"évolué"(Java),jedétesteles";"aléatoires.J'aipasséplusdetempsàenmettreouensupprimerdes";"qu'àcoder."• "Pourquoinechoisis-tupasunlangagesansbugspourtonTFE?"• "1)pluspersonnen'utilisecelangageetj'aiquandmêmeespoirqu'aveclamassedelangagesexistants,ilyaitmoyendetrouverunlangageutile(Ruby,Python,...)et"facilepourdébuter".2)syntaxelourdeetparfoisincompréhensible(Begin,endetsesdérivéesainsiquedesrandomisé";"pourlesif/elsenotamment).3)IDEinfâmeàsouhaitmaiscohérentaveclepoint1 .4)seulpo intpositi f:quelquesou tilssyntaxiquesutilescommelewith,leswitchconditionnelouencorelein[..].5)ahj'ai

6 faillioublierlepiredetous:lestableauxquicommencentàl'indice1.Riendemieuxpoursemerletroublelorsdel'apprentissageduC..."• "(-)Navigationdansl'IDEhorrible(mêmeunbloc-notesfaitmieux)(+)Sacapacitéàs'arrêteraupremierfauxpasduprogrammeurDEBUTANTcaroui,celangageestadaptéauxdébutantsuniquementselonmoi."JAVA • "Cequimep laît:langage abordable, puissancede laJVM, objectifsconcrets rapidementatteints,massivementutilisé.Cequinemeplaîtpas:grosprogrammeslentsàlacompilation,tropverbeux,peut-êtreunpetitcoupdevieux?Remarques:bienqueJava8soitsorti,deslangagesfonctionnels(SCALA,HASKELL,CLOJUREetc....)sontmaintenantplusperformantspourmoinsdelignedecode."• "BienpluspratiqueàutiliserqueleC.Pasbesoindes'embarrasserdetoutel'histoiredespointeurs.Toutestfaitautomatiquementetdanslecadredel'apprentissage,çapermetdeseconcentrersurlesalgorithmesdebasesanstropdeproblèmes.Pourtoutcequiestorientéobjet,l'héritageestjusteunpeucomplexeàassimiler.Unpointpositifestlaportabilitédulangagequipermetd'utiliser,entreautres,uneinterfacegraphiquedebasefonctionnantsurtouslesos.Lacritiquequej'aileplusentendueestlarelativelenteurd'exécutionmaisànotreniveau,iln'yaaucunedifférence.Enbref,Javafaitpleindetrucsdansl'ombreetj'aienviededire,cen'estpasplusmalpourundébutant!"• "LeJavaouvrelesportessurlemarchédel'emploi."• "J'aimebeaucouplesinterfacesgraphiquesenJava."J'enaiconclu,qu'aufinal,passerdePascalàJavafutunebonnechosetantlesétudiantsonttendanceàpréférercelui-ci.Deplus,ladocumentationetlacommunautéautourdeJAVAsontbienplusvastes. 2.2 Descriptiondesoutilsutilisés2.2.1 Pythia Pythiaestuneplate-formedontlebutpremierestd'enseignerlaprogrammationetlaconcep tiond'algorithmes.Elleexécutelecodedansu nenvironnementsécuriséafind'évitertoute erreurpréjudiciablepouvantêtrecauséeparducodeétudiantmalicieux.Sonprincipalavantageestdefournirunfeedbackintelligentauxapprentis.Laplate-formeoffreunenvironnementautonomequisupporteunenseignementdelaprogrammation.Ilestdoncpossibledeproposerdesexercicesauxétudiants,exercicesqu'ilspourrontrésoudreensoumettan tleursréponses.Le feedbackrenvoyéleurpe rmetde

7 corrigerleurserreurs.IlestimportantdesoulignerlefaitquePythian'estpasliéqu'àunseultypedelang agepourles énoncés. Eneffet,grâceàso nenvironnement"Bac-à-sable",laplate-formeestmulti-langage. 2.2.2 Python3 Pythonestunlangagedeprogrammationorientéobjet,multi-paradigmesetmultiplateformeutilisépourécriredifférentstypesd'application.Ilestconsidérécommeunlangagedehautniveaupermettantdes'axerautourduproblèmeàrésoudre,permettantd'utiliserdesmotsusuelsdeslanguesnaturellesainsiquedessymbolesmathématiques.Sasyntaxeassezrigoureusepermetunelisibilitébienplusévidentequed'autreslangagestelsqueCouJava. Lechoixdulangagem'aétéimposéouplussincèrementsuggéréparmonmaîtredestage.Ilmeperm etdep ouvoirré alisermesscripts analysantles codessoumisparlesétudiants.Lamanipulationdesfichiersaveccelangageestégalementbienplusfacile. Deplus,j'utiliselemoduleBottledePython3pourimplémenterunserveurweb.Jen'aidoncpasbesoind'utiliserunserveurAPACHE/PHPpourdéployermoninterfaceutilisateur. 2.2.3 MySQLMySQLestunsystèmedegestiondebasededonnées(SGBD)relationnellefaisantpartiedeslogicielsdegestiondebasededonnéeslesplusutilisésaumonde.C'estdoncpourcelaquej'aipré féréutiliser cesystèmeàPostgreSQL. Eneffet,légèrementdiff érentdes onconcurrent,ilm'aétésuggéréd'utilisercetautresystèmeadministrableviapgAdmin.Cependant,étantbienplushabituéetenconfianceaveclepremiergestionnairecité,j'aipréférénepasexplorerunnouveausystème. Poursefaire,j 'utilise unMySQLSERVERquej egèrevial'applicationdécouverteàl'EPHEC:MySQLWorkBench. 2.2.4 LightweightDirectoryAccessProtocol(LDAP) Afindepouvoirsubvenirauxexigencestechniquesdel'EPHEC,ilaétédécidéd'utiliserunserveurLDAPpourl'authentificationsécuriséedesutilisateursd'oresetdéjàexistantsdanslesystème. LDAPestunpro tocolerep osantsur leProtocoleInternet(TCP/IP) etpermettantd'interrogeretdegérerdesservicesd'annuaire.L'arbrereprésentesouventlapolitiquedelastructurereprésentée.Onutilisedonclesracinesoulespremièresbranchesdel'arbrepourreprésenterlesélémentsdebasedel'annuaire(lenomdelasociété,del'application,...)tandisquelesbr anchesplus profondesre présententlesentités(util isateursetgroup esd'utilisateurs).CeserveurestdonccomparableàunActiveDirectory. J'aiutilisél elogicielApacheDir ectoryStud iopourvisualisermonser veurmaisj'aipréféréutiliserlescommandesviaunterminalpourajouterdesentités.

8 2.2.5 HTML,CSS,jQuery&JSONL'HyperTextMarkupL anguage(HTML)étantlefo rmatdedonn éespardéfautpourreprésenterlespagesweb,ilétaitcertainquecedernierseraitutiliséavecduCSSdansmonprojet. Àcôté,jQuery,quiestunebibliothèqueduJavaScript(JS),permetl'interactionentrecedernieretl'HTML.Elleal'avantagedesimplifierl'utilisationduJSmaisestpluslourdeàexécuter.Néanmoins,pourmaplate-forme,cedésavantageestnégligeable.LeJavaScriptObjectNotation(JSON)permetdeformaterdesdonnéestextuellesdelamêmemanièrequelefaitleXML.Certeslimité,JSONprésenteunestructureplusagréablequecedernier. 2.3 Solution Lasolutionquejeproposesediviseentroisparties: Ø UnserveurLDAPdistantpermettantl'authentificationdesutilisateurs; Ø Unebaseded onnéesMySQL distanteco ntenanttouteslesinformation sdesutilisateurs; Ø Maplate-formecontenantdiversesentités: § PythiaavecunenvironnementpourlesmachinesvirtuellessupportantJavaetPython(pourlesscriptsd'analyse); § ServeurwebPythonàl'aidedumoduleBottle; § UnebasededonnéesMySQL; § Uneinterfaceutilisateur;

9 2.3.1 LeServeurLDAPAfindesubvenirauxexigencesdel'EPHECetdesonsystèmeutilisateur,j'aiinstalléunserveurLDAPmeservantdoncdeserveurd'authentification,ceciafindesimulerleprobableActiveDirectory(AD)del'école. Monserviced'annuaireestprobablementconçudifféremmentdeceluidel'institutmaisjepensequ'ils'enrapprochesuffisamment,dumoinsdanslalogique.J'yaicréédoncunarbreaveccommeracinedeuxcontrôleursdedomaines:"ephec"et"be". Plusbas,nousretrouvonsungrouped'utilisateursàsavoir"students"danslequelseretrouventtouslesétudiantsinscrits.JenesuispascertaindecommentdifférencierlesétudiantsenTI5,marketingoucomptabilité.Enmargedecetteunitéd'organisation,nousretrouvonslesutilisateurs"professeurs"ainsiqu'uncompteadmin. J'aichoisicetteséparationenfonctiondesadressesmailsactuellementutilisées.UnétudiantauneadresseHExxxxxx@students.ephec.betandisqu'unprofesseurenauneplussimplexxxxxx@ephec.be. Pourajouterungrouped'utilisateurs,ilsuffitd'utiliserlacommandesuivante: ldapadd -cxWD cn=admin,dc=ephec,dc=be -f students.ldif Ilestensuitedemandélemotdepasseduserveur.Cefichier"new-group.ldif"contientleslignessuivantes: dn: ou=students, dc=ephec, dc=be objectClass: top objectClass: organizationalUnit ou: students Demanièreassezsimilaire,unfichier"student.ldif" dn: uid=HE111111, ou=students, dc=ephec, dc=be objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Jane Doe gn: Jane sn: Doe uid:HE111111 userPassword: {CRYPT}* Ilfautyfournirnom,prénom,matricule.Unmotdepasseestàconfigurerparlasuiteàl'aidedelacommandesuivante: ldappasswd -xWD cn=admin,dc=ephec,dc=be -S uid=HE111111,ou=students,dc=ephec,dc=be 5Technologiedel'Informatique

10 Surceserve ur,chaque motdepasseestcrypté/haché enSSHA.JesuisbiensûrconscientquetouslesutilisateursEPHECsontdéjàexistantssurl'ADdel'école.Jetrouvecependantimportantdemontrercommentajouteruneunitéàl'arbre. Unefoislesdifférentsutilisateurscréés,leserveurLDAPestprêt,ilattendlesrequêtesprovenantdemonserveurwebPython. 2.3.2 Labasededonnéesdistante Égalementexigéeparl'EPHEC,unebasededonnéesexterneàcelledemaplate-formeestnécessaire.Lesétudiantsetenseignantsnedevantpascréerunnouveaucompte,ilfautpouvoirfacilementallerchercherleursinformationsdebaseàl'aidedeleuridentifiant. Cesinformationssontassezsimples:prénom,nom,emailetdanslecasd'unétudiant,legroupeauquelilappartient. Commepourl'ActiveDirectorydel'EPHEC,jen'aipaspuavoirconnaissancedelastructuredelabasededonnées.Celle-cicontientdoncselonmoideuxtables. Laprem ière"USER"estlaprincipale avectouslesutilis ateursetle ursi nformationsrespectivescitéesprécédemmentavecleurmatriculeouidentifiantcommecléprimaireafinderespecterl'unicité. Laseconde,necontenantuniquementqu'unecolonne,meparaitmoinsprobablemaispasimpossible.Elleconservel'ensembledesgroupesouclassesdel'école,ceciafindepouvoirlesrécupérerassezfacilement. 2.3.3 Laplate-forme 2.3.3.1 LabasededonnéeslocaleAyantcommencémonprojetdansl'idéededevoircréerdesnouveauxutilisateurspourchaqueétud iantouenseignant,j' aidûmodifiermesplansparlasui te.Eneffet, MadameVromansouhaitepouvoirintégrercetteplate-formeausystèmedel'EPHEC.Ainsi,ilfautallerchercherlesdonnéessurunserveurdistanttelquedécritaupointprécédent.JeneprendsdoncplusencompteunetableUSERlocale,lesmatriculesviennents'ajoutervialesvariablessessionsdesconnexions.Lesidentifiantsutilisateursdansmabasededonnéesnesontpasdesclésétrangères,eneffet,iln'yapasdetablelesstockantconcrètement. Monsystèmesediviseencours,eux-mêmesdivisésenexercices.Chaquetentativepourunexercicespécifiquedelapartd'unutilisateurcorrespondàunesoumission.Unexercicepeutdonccontenirunnombreélevédesoumissions.

11 Laprem ièretablequejepeuxbrièv ementdécrire estdoncla tableCOURSE ,reprenantl'ensembledescours.J'aichoisilestermesanglaiscarjetrouvecelaplusagréableetplusintuitif.Ellecontientprincipalementletitre,labrèvedescription,l'identifiantduprofesseurprincipalducours,l'identifiantdulangagedeprogrammationchoisiouencorel'étatactuelducours.Ilenvademêmepourlesexercicesàladifférenceprèsquelesdescriptionssontstockéessurleserveurmêmeetnonenbasededonnées.Deplus,ilyal'identifiantducoursauquell'exerciceserapporte. ChaquesoumissionseretrouvedanslatableSUBMISSION.L'étatetladatedesoumissionsontbienévidemmentlesattributsclés.L'utilisateuretl'exerciceauxquelselleserapportesontégalementspécifiés. Jepeuxe nsuitevousparl erdesautrestablestellesqueFOLLOWS ouMODERATES.Lapremièrereprendlesétudiantsétantinscritsàuncoursenparticulier.Unétudiantpeutêtreinscritmanuellement,viasonidentifiant,ouviasongroupe,lui-mêmeinscrit.Lasecondetablereprendcettefois-cilesenseignantsayantdesdroitssurcertainscours. Pourterminer,destablesmoinsimportantestellesqueLOGIN,LANGUAGEouencoreROLEreprennentrespectivementladateetl'heuredeladernièreconnexiondel'utilisateur,leslangagesdeprogrammation disponi blessurlaplate-formeetlesnoms desrô lesdesutilisateurs(admin,professeur,étudiant). 2.3.3.2 LeserveurWeb J'aiimplémentéunserveurwebaveclelangagePythonpourdeuxraisons.Lapremièreestpersonnelleetsubjective.Eneffet,jen'avaisjamaisentenduparlerdeserveurwebautrequ'ApacheetPHP,j'enaidoncsaisil'occasion.Laseconde,quantàelle,vientdemonmaîtredestageMonsieurCombéfis.Ilm'aconseilléPythonpourlafacilitéd'implémentationdessocketsetdoncnotammentlaconnexionplusaiséeavecPythia. Poursefaire,j'aiutilisélemoduleBottlequi,aprèsavoirétéimporté,nenécessitequ'unesimplecommandepourlancerleserveurwebenmodeécoute.run(host='localhost', port=8080, debug=True, reloader=True,app=app) Lesparamètresdelafonctionrun()sontassezsimples."Reloader"signifiequ'encasdemodificationsdanslesfichiers,leserveurredémarreautomatiquement,enlesprenantencompte.

12 L'ensembledesfonctionnalitésdelaplate-formesontglobalementliéesmaisrépartiesdansdesfichiersPythonafindegarderlecodeclairetcohérent.Jenedécriraiiciqu'unepartiedechaquefichier. 1. Fichierserver.pyLeserveurBottleestexécutégrâceaufichierserver.py,touteslesrequêtesPOSTouGETvenantdel'interfaceutilisateursontredirigéesversleurfichierrespectif.Parexemple,larequêted'unecréationd'unexerciceoud'uncoursestenvoyéeverslefichiercreate.py.C'estégalementviacefichierserveurqueducontenuestenvoyéàPythiaetparconséquent,larépo nseyestégalementréceptionnée.Pour cetteconnexion ,j'utiliseu nsocketseconnectantauport9000,celuioùPythiaestpardéfautàl'écoute. Pourredirigerunerequêteverslabonnefonctiondufichierqui,àsontour,redirigeraverslebonfichier,ilfautvérifierlarouteempruntéeparlarequêteàl'aidedecettecommande: @route('/create/exercice/',method="POST")defcreate_exercice(course): Lesdeuxpremièrespartiesdulienformentuneroutestatiquealorsquelasecondepartieestdynamiqueetlavaleurs'ytrouvantpeutêtrealorsutiliséecommeargumentpourlafonctionliéeàlaroute. Avantderedi rigerune création,cefichie rvérifieégalementlavaliditédesparamètres envoyés.Eneffet,ilanalysechaqueélémentenvoyéenJSONetlescompareauxvaleursattendues.Encasd'erreur,lep rocessus s'arrêteetrenvoieunmessageàl 'interfaceutilisateurviaduJSON.Ilpermetégalementle téléchargementdesfichiersdessoumissions,soit chaquefichi erindividuellementsoit,après compression,l'ensembledessoumissionssousforme d'unearchiveZIP.Lorsdelaconnexiondel'utilisateurauserveurweb,ilyal'initialisationd'unesessionquipermettradelierdesvariablesàl'utilisateursurlefrontend. # Création de la session session_opts = { 'session.type': 'file', 'session.data_dir': './session/', 'session.auto': True, 'session.timeout':1800 } Unesessionestprogramméepourdurertrenteminutesmaximumeninactivité.Lecontenudelasess ione ststockédansundossier sessionsurleser veur.

13 2. Fichierfunction.pyL'ensembledesfonctionsutiliséesdanslesdiversfichiersPythonpourfaireinteragirlaplate-formesetrouventdanslefichierfunction.py.Ilestimportantdenoterqu'audébutdechaquefichierautrequeserver.py,lasessionactuellementinitiéeparcedernieresttransféréeafindepouvoirconstammentprendreencomptel'utilisateuractuellementconnectéàlaplate-forme.Lesfonctionsprincipalessontbienévidemmentlesfonctionsdeconnexionauxdifférentesbasesdedonnées.Ilfauteneffetpouvoirseconnecterpourenretirercedontnousavonsbesoin.§ Connect():seconnecteàlabasededonnéeslocale§ EPHECconnect():seconnecteàlabasededonnéesdistanteLorsd'uneconnexionvial'interfaceweb,onvérifieleloginentré.Sicelui-cicontient"HE»suivid'unesériedechiffres,ilserad'oresetdéjàconsidérécommeunétudiant.Lelogin"admin»,quirestemodifiable,serareconnuentantqu'administrateuràpleinpouvoir.Pourterminer,siaucundesdeuxcasprécédentsnes'applique,l'utilisateurseraconsidéréentantqueprofesseur.LesfonctionstellesqueisAdmin(),isTeacher(),isConnected()parlentd'elles-mêmes.Pourlereste,ilyamajoritairementdes"getters»telsquegetExercices()quirenvoietouslesexercicesetleursattributs,getAllTeachers(),getLastLogin(),getUser()etbiend'autresencore.Lafo nctiongetStudentsFor()estparticul ière,ellevapremièrementchercher touslesétudiantsexistantspourensuitelescompareraveclesétudiantsinscritsmanuellementàuncours(etnonvialeurgroupe).Danslecasoùunétudiantesteffectivementinscrit,ellel'ajouteàuneliste.Danslecascontraire,ellevérifieensuites'iln'estpasinscritvialesgroupesinscritsaucours.Lafonctionestimplémentéedesortequel'étudiantneserapascomptédeuxfoisdanslegroupedesinscriptions.3. Htmlgenerator.pyLefichierhtmlgenerator.pys'occupedegénérerl'htmlàrenvoyerviaJSONàl'interfaceutilisateur.Ceciseradavantageexpl iquéaupointco ncernantlefrontend.Eneffet, l'ensembledecefichiertraitantl'aspectvisuel,iln'estpasdansmonintérêtdeledécrireicimême.Encasd'i nactivitétr oplongueoudedéconnexionv olontaire,toute slesnavigationsjusqu'alorsautoriséesserontobligatoirementredirigéesverslapagedeconnexion,ceciafind'éviterl'utilisationd'unesessionnenousappartenantpas.

14 4. Create.pyAprèschaquevalidationparserver.pylorsd'unecréation,lecontenuduJSONesttraitédanscreate.py.Ilyaalorsdeuxfonctions:lacréationd'uncoursoucelled'unexercice.Danslecasd'uncours,c'estassezsimple.Latotalitédesparamètresencodésvontenbasededonnées.UnUID6dedouzecaractèresestgénéréetplacéentantquecléprimaireducoursàconditionquecelui-cin'existepasdéjà.Danslecascontraire,uneautrecléseragénérée.Lesmodérateurs,groupesetétudiantssélectionnéssontégalementsauvegardés.Danslecasd'unexercice,leprocessusestbienpluslongetpluscompliqué.Eneffet,créerunexerciceimpliquedecréerunetâchesurPythia,d'ycréerdiversfichiersscriptsPythonetdelancerunMAKEsurPythiaafinquelatâchesoitcompiléeparlesystèmepourenfinsupprimertouslesfichiersutileslorsdelacréationmaisdésormaisinutilesaprèscelle-ci.Ilestimportantdesoulignerquelecontexted'unexercice(sonénoncéensomme)seranonpasstockéenbasededonnées,maisbiendansunfichiersurleserveur.Lorsdudébutduprocessus,lescripts'assurequel'exercicen'existepasdéjàenvérifiantsoncheminabsolusurleserveur.Lechemindufichiercontexteestcommesuit:./CONTEXT/ID_COURSE/ID_TEACHER/ID_EXERCISE/ID_EXERCISE.descDanscemême dossier setrouveanswer.txtcontenantlecodecompletpro duitparleprofesseur.Lesdiversscriptsajoutésdansledossierdelatâcheserontdécritsdanslechapitredécrivantlacréationd'unetâche.Ceux-cisont,toutcommedanshtmlgenerator.py,construitsenfonctiondesparamètres reçusafindefairecorre spondrel'exercic eauxspécifi cationsencodées.SiPythiadevaitrencontreruneerreurlorsdelacompilationetcréationdel'exercice,unmessaged'erreurseraitrenvoyéetleprocessusseraitinterrompu.Encasderéussite,àlafinduprocessus,ilyauraàlafoisdesfichiersstockéscôtéserveur(description,paramètrespourlamachinevirtuelle,réponse,...)etàlafoisdesinformationsenregistréesenbasededonnées.6UniqueID

15 5. Modify.pyModify.pynepermetpasdemodifierl'entièretéd'unexercice.Eneffet,unexerciceétantcompiléparPythia,lesfichierssontalorsdanslesystème.Seuleslesvaleursprésentesenbasededonnéesetl'énoncésontmodifiables.Modifierlecodedel'énoncépourraitengendrerdesincohérences.Quandunétudiantréussitunexercice,siensuiteleprofesseurlemodifie, l'étudianta-t-iltoujour sréussil'exercice?Saso umissi onindiqueouialorsqu'actuellement,sonimplémentationn'estpeut-êtrepluscorrecte.Ledéroulement,quantàlui,estassezsimilaireàlacréationd'uncours.Lesvérificationssontidentiques.Ilyaégalementlapossibilitédechangerl'étatd'uncours.Pouvoirpasserlecoursde'public'à'caché'ouencore'supprimé'.6. Submissions.pyAprèsavoirreçularéponsedePythiaconcernantuneimplémentationpourunexercicedonné,server.pydélèguelestâchesàsubmissions.py.Lafonctionchecking()vapermettreàlafoisderegardersieffectivementl'étudiantaréussil'exercicemai ségalementd'automatiserunesauvegarde,ceciafindep ouvoirtoujoursretrouverladernièresoumissionfaite.LaréponsedePythiaseradécriteplusloin.Cettefonction-cirenverraunmessageadéquatàlaréussiteounondel'apprenant.Aprèscela,lafonctionsubmitted()estappelée,ellesechargedestockerenbasededonnéesl'identifiantuniq uedelasoumission,l'utilisateurd elasoumission,ladate ouencorel'état.Lecontenudelatentative,lui,eststockécôtéserveurdelamêmemanièrequeladescriptiondel'énoncé.Lechemindufichierdelasoumissionuniqueestcommesuit:./SUBMISSIONS/ID_COURSE/ID_TEACHER/ID_EXERCICE/ID_USER/ID_SUBMISSION.txtDanscemêmedossiersetrouvelefichiersavedcomprenantladernièresauvegardedel'utilisateur.

16 2.3.3.3 PythiaLeprincipalcomposantdemonproduitfinalestbienévidemmentlaplate-formePythia.Celle-cipermetdecréerdesmachinesvirtuellesavecunenvironnementspécifiqueafindepouvoirensuitelesexécuterdepairaveclestâches,quicorrespondentauxexercices.1. Créationd'unenvironnementLatâchefastidieusequ'estlaconceptiond'unsystèmedefichierssimple(SimpleFileSystem)impliquedetr ouverlespaquets nécessaires ettouteslesdépend ancespourl'environnement.Danslecasdel'environnementadéquatpourmaplate-forme,ilmefalluttrouverlespaquetspourinstalle rPythonetJava.LesUML7debasesu rPythia,son td'originepratiquementvides,necontiennentquelestrictminimumdunoyauLinux,ceciafind'avoirdesmachines lespluslégèrespossib le,permettant notammentdeleslancertrèsrapidement.LorsduMAKE,le sdiffér entspaquetsajoutés danslefic hierdeconfigurationserontinstalléssurlenoyau Linux.Aprè scela,notrefile systemestopératio nnel!Iles tdonc possibled'exécuterdescommandesPythonouJava.7UserModeLinux

17 2. Créationd'unetâcheLedossierd'unetâchecontientunemultitudedefichiersquejevaisvousdécrireetquisontégalementconçusparcreate.py,précédemmentexpliqué.L'entièretédecesfichierssetrouve,aprèsleMAKE,danslefilesystemdelatâche.Ilyadoncbiendeuxfilessystem:unpourl'environnementetunpourlatâche.• controlPremierfichierdelatâche,celui-cicontientl'uniquelignepermettantl'exécutiondelatâche.Eneffet,parunsimplechemin,ilappellelefichierShellcontenanttouteslesinstructionsUnixàexécuteràlachaine.Parexemplepourmestâchesgénériques:/ephec.sh• ephec.shLefichiercentraldelatâche,ilexécuterachaquefichierscriptoufichierJavaenfonctiondel'existencedel'unoul'autrefichier.J'expliquececiàl'aided'unecaptured'écran.

18 Lespremièreslignessontsimples.L'UMLnetrouvantpasautomatiquementJAVAdanssonrépertoire,jerajouteunchemind'accèsàceluidéjàexistant.Encequiconcernelesdroitsd'exécution,lamachinevirtuellenepeutpasexécuterlescommandesn'importeoù.Elledoitdonccréerundossiertemporaire,ydéplacertouslesfichiers.Ensuiteseulement,viennentlesétapesdelatâche.• Student.pyPremierfichierscriptdelatâche,cescriptestunchoixdemapart.J'aioptépourunepré-vérificationdecompilationenvérifiantsil'étudiantn'avaitpasplacédesidentifiantsinterditsouinutilestelsqueSystem.out.printlnouencoredeszonesdecommentaires.Jevérifieégalementquel'utilisateurabiencommencéàimplémenterlaclasseoulafonctionsicelaestdemandé.Lapré-vérificationpermetd'éviterdelancerlecompilateurJAVAqui,lui,estbienpluslent.Encasd'erreursdétectées,ellessontplacéesdanslefichierwarnings.txt• Warnings.txtSicefichierestinexistant,leprocessuspasseàlasuite.S'ilexiste,lecontenu(écritsousformeJSON)vaêtrerenvoyéparPythiaauserveurweb,quiàsontourlerenverraaufrontenddel'utilisateur.Pourqueducontenusoitrenvoyé,ilsuffitdel'envoyersurl'output,c'estpourcelaquej'utiliselacommandecat.• Files.pySecondscriptdelatâche.Saprincipalefonctionestdeplacerlecontenudel'étudiantdansl'éventue lcontenuquel'enseignantavaitdé fini.Lachain edecaractères:"@@@xxx@@@»permetd'indiqueroùlecodedel'étudiantserainséré.ImplémentationprofesseurSoumissionenvoyéparl'étudiant

19 Soumissionassemblée,envoyéeàlacompilation• Errors.txtLeséventuelleserreursengendréeslorsdelacompilationdunouveaufichierJavasontstockéesàleurtour.Encasd'erreur,c'estlefichiererrors.pyquiestappeléalorsquedanslecascontraire,onexécutelefichierclasscréélorsdelacompilationréussie.• Errors.pyCefichie rscriptsecharged'analyserchaqueligned'e rreurgénéréelorsdelacompilation.Sipossible,illesretranscritenfrançaisetdonnedespetitesastucesdetempsàautre.Delamêmemanièrequepourleserreursdepré-compilations,PythialesrenvoiesousformatJSON.Vulegrandnombred'erreurspossibles,jen'aipaseuletempsd'ajouterchaqueerreuràmesscripts.Lesprincipalesysont,ilestcependantpossiblequed'autressoientajoutéesprochainement.• Run-errors.pyÀl'in stardufichierprécéd ent,run-errors.pyanalyseligneparlig neleserreursgénéréescettefois-cilorsdel'exécution.Ilestdoncégalementprobablequetoutesleserreursnesoientpastraitées.Rappelonslefaitquecescriptn'estappeléquesideserreursd'exécutionsonteulieu.Dans lecascontrai re,lepr ocessusar riveàlafindufichierephec.shetPythi arenvoiealorsuniquementl'outputrenvoyéparlefichierJAVAquistipulesiouiounon,lesbonnesréponsesontététrouvées.Lecodeétudiantetlecodeprofesseursontsoumisàdesjeuxdetestsadéquatsenfonctiondes typesdesarguments.Encasde réponses identique s,lasoumissionestdéclaréeréussie.

20 3. FichierdeconfigurationÀchaquetâcheestassociéunfichierdeconfigurationdevantêtreluparPythia.CefichierestsousformatJSON.{ "environment": "java", "taskfs": "04546266456c/h.paul/86cdc5ec2db/86cdc5ec2db.sfs", "limits": { "time": 10, "memory": 32, "disk": 50, "output": 1024 } } Ilcontientl'environnementàexécuterainsiquelalocalisationdufilesystemdelatâche.Lesautresparamètressontceuxquiconfigurentlecôtétechniquedelamachinevirtuelle(tempslimited'exé cutionautorisé,mém oireviveallouée, mémoirephysiqueallouéeetlenombredecaractèresmaximumqu'ellepeutrenvoyer).Chaquefichierdec onfigurationassociérespe ctivement àsonpropreexercicesetrouvesurleserveurdanslemêmedossierquesonfilesystem.Pourbienfaireladistinction:Ø LefilesystemdelatâchesetrouvecôtéserveurdansundossierendehorsdePythia.Ø Lefichierdeconfigurationliéàlatâcheestégalementàcetendroit.Ø Lefilesystemdel'environnementJava+Python3setrouve,lui,auseindePythia.

21 4. ExécuterPythiaLaplate-formeopen-sourceécoute,pardéfaut,surleport9000.Poursefaire,ilfautlancerunequeue(unefile)etunnombreadéquatdepools,programmescapablesdelancerplusieursmachinesvirtuelles.Surcetteillustration,lefrontendreprésentelesdifférentsutilisateurspassantvialeserveurwebBottle.Leserveursecharged'envoyerlecontenuviasocketversPythiaetsafiledetâches.Chaquetâcheestalorsdistribuéeàunpoolquin'estpasoccupé.Danslecasoùaucunn'estlibre,latâchepatientejusqu'àpouvoirêtretransférée.Aprèstraitementparlamachinevirtuelle,lecontenurepasseparlaqueuequilerenvoieàsontourauserveur.Lancercesdifférentscomposantsestassezsimple.1) SepositionnerdansledossieroutdePythia;2) Lancerlacommandepourdémarrerlaqueue,quiécoutepardéfautsurleport9000./pythiaqueue3) Lancerchaquemachineaveclacommandesuivante:./pythiapool-tasksdir:"/SERVER/tasks/»Pardéfaut,lesfichiersdeconfigurationsontauseindePythia,or,dansmasolution,jelesplacesurleserveuren-dehorsdudossierprincipal,toutcommelesexercices.EncasdemiseàjourdePythia,lesexercicesneseraientdoncpassupprimés.

22 2.3.3.4 InterfaceUtilisateur-frontendCedernie rpointconcernantmaplate-formevadécrirel' expéri encevécueparlesdifférentsutilisateurs.Jevaisexpliquerlaquasi-entièretédesfonctionnalitésactuellementdisponibles.Ecoutantsurleport8080,nouscommençonsnotrenavigationparlapageconnexionàl'adressesuivante:127.0.0.1:8080oulocalhost:8080.Laprésentationseferasipossiblesurserveurdistant.• ConnexionNousavonsalorsfaceànousleboutonnousconnectantavecleserveurLDAP.Enfonctiondesidentifiantsr entrésetde leurexac titude,nousser onsredirigésversletableaudebord.Encasd'identifiantserronés,unmessagepertinentestaffiché.• TableaudebordLaprem ièreinterfaceapparaitalorsdyn amiquementsanschargementd 'unenouvellepageHTML.Eneffet,toutsebasesuruneuniquepagedontlecontenuchangeàl'aidedejQuery.Unebarredenavigationestégalementapparue,celle-ciresteraprésentetantquel'utilisateurresteconnecté.• CoursLelienverslescoursprésentsdanscettebarredenavigationpermetdepouvoirretourneràtoutmomentsurlalistedescoursdisponibles.Lecontenuprincipalestuntableauavectrireprenantlescours,stipulantleurtitre,leur(s)professeur(s),leurniveaudedifficulté.Pourdesutilisateursavecdesdroitsplusélevés,lestatutducoursestégalementvisible.- Unétudiantnepeutvoirquelescoursauxquelsilestinscritetdontlestatutestpublic;- Unprofesseurpeutajouteruncoursetvisionnerlescoursdontilestmodérateur.Cependant,lescourssupprimésluiserontmasqués.Lescourssontmodifiablesetuniquementsupprimablesentantquecréateur;- Unadminis trateurpeutvoirtouslescours,en ajouter,les modifieroules supprimer.

23 • AjouteruncoursCettepagen'estvisiblequepourlesenseignantsoulesadministrateurs.Lecréateurayantpleindroitsursoncours,ildoitfournir:- Letitre:maximumcinquantecaractères;- Lelangagen'estpasmodifiable,unlangagenepeuts'ajouterquemanuellementvialesystèmePythiaetnonparmaplate-forme.J'aidoncplacéleselectdanslebutdeprévoirunéventuelfuturavecd'autreslangagessurcelle-ci;- Unedescription,elledoitpouvoirdécrireenquelquesmotslecours,lesexercicesqu'ilcontient;- Lestatutducours(PublicouCaché);- Ajouterunétudiantmanuellementviasonmatricule,sonnomousonprénom;- Untableaur eprenantlesétud iantsd'oresetdéjàajoutésestaffich é(triautorisé);- Deuxtableauxconte nantlesgroupesin scritsetlesgroupes non-inscrits.Lesgroupessontinterchangeablesentreceux-ci;- Deuxtableauxcontenantlesprofesseursmodérateursetlesnon-sélectionnés.Lesenseignantssontinterchangeablesentreceux-ci.Encasd'e rreur,u nmessageadéquatapparaitsurlapage.Il appartientdoncàl'utilisateurdemodifierleschampsnécessaires.• ModifieruncoursCettepagen'estvisiblequepourlesenseignantsmodérateursducoursconcernéoulesadministrateurs.Elleestidentiqueàlapagedecréation,sicen'estqu'ellepossèdeunecontrainte.- Unprofesseurn'étantpaslecréateurducoursnepeutpasmodifierlalistedesmodérateurs.• SupprimeruncoursetleréafficherCetteoptionretranscritesouslaformed'unboutonn'estdisponiblequesurlapagedescoursetn'estvisiblequepourlescréateursd'uncoursettouslesadministrateurs.Unmessagedeconfirmationestdemandépourévitertoutemanipulationinvolontaire.Encasdesuppressioneffective,lecoursesttoujoursdisponibleenbasededonnéesetsurl'interfacedel'administrateur.Danslecasoùl'enseignantsouhaiteréaffichercecours,ildevracontacterparlui-mêmel'admin.Cedernierpourralefairesoitvialapagedemodificationenchangeantlestatutducourssoitviaunbouton.Lecoursrepassealorsenstatutcaché.

24 • ExercicesCetaffichagecontienttouslesexercicesdisponiblespouruncoursspécifique.Toutcommelescours,ilssontaffichésdansuntableausimilaireavecuneoptiondetri.Lecontenudutableauestcependantdifférentsurunpoint.Lesétudiantsnevoyantpaslestatutdel'e xercice, ilestremplacéparlestatutdeleuréve ntuellede rnièresoumissionpourcetexercice-là.Sil'étudiantl'adéjàréussimaisqu'ilcommettoutdemêmeuneerreurlorsd'unetentativepostérieure,l'exerciceseraconsidérécommenon-réussi.Ilfautsoulignerqu'iln'yaqu'unseulprofesseurparexercice,bienquel'ensembledesenseignantsmodérantlecoursyaittoustoutdemêmeaccès.- Unétudiantnepourravoirquelesexercicesquisontpublics;- Lesexercicesnesontpasentièrementmodifiables(cf.Modify.py);- Lesexercicessontsupprimables.Leprocessusestidentiqueàceluid'uncours;- Unprofesseurmodérantcecourspeutvisionnertouslesexercices,saufceuxsupprimés.Ilpeutenajouteretvoittouteslessoumissionsducours;- Unadministrateurabienévidemmentpleinpouvoir.• AjouterunexerciceÀl'instard'uncours,l'enseignantdoitfournirducontenu.Cependant,celui-ciestbienplusprécisetspécifique.Unmessaged'erreurapparaitsinécessaire.- Unintitulé:cinquantecaractèresmaximum;- Laclasseprincipaleetlafonctionprincipaledel'énoncé;Pourcesdeuxd erniersparam ètres,leprofe sseurdoitdécidersiouio unonl'étudiantdevralesfournirousil'exercicesedérouleraàl'intérieurdeceux-ci(cf.lesschémasdeFiles.py).Ildoitdonccocherounonlescasesen-dessousdechaqueoption.- Laliste deséventuelsargumentsdel afonctionprincipale(uniquementfournirletypedel'argument);- Ilfaute nsuitefou rnirlaconfigurationp ourlamachinevirtuelle(cf.Fichierdeconfiguration);- Lestatutpublicoucaché;- Leniveaudedifficulté(de0à5,lepasestde0.5);- Lecontexte quicorrespondàl'é noncédel'e xercice.Letextare aestmunideTINYMCEpourpouvoirdonnerunaspectplusagréableaucontexte;- Lecodecompletaveccommenomdeclasse"Teacher»afindepouvoirfaireladistinctionaveclaclassedel'étudiant;- Lapartiedecemêmecodequel'étudiantnedoitpasfournir(cf.lesschémasdeFiles.py)ainsiquelachainedecaractèresoùlecodedel'étudiantdoits'insérer.

25 • SoumissionsDisponiblepourtouslesprofesseursmodérantlecoursetlesadministrateurs,cettepagepermetd evisionnertouteslessoumissi onsdechaqueétudiantpourl'exercice choisi.Ladated ederniè reconnexionainsiquelesdate sdechaquesou missionetle urréussiteounonsontaffichées.Leprofesseurpeutalorschoisirdetéléchargerindividuellementunetentativedel'étudiantouplutôttouteslestéléchargersousformatZIP.Letableaupossèdelesoptionsdetrietderecherche.• StatistiquesIlestp ossible, pourlesprofesseursayantaccès ,devisionner quelquesstati stiquesconcernantunexerciceouuncours:- Lenombred'étudiantsinscrits;- Lenombredesoumissionspouruncoursouunexercice;- Lepourcentagederéussitevis-à-visdesétudiants;- Lepourcentagederéussitevis-à-visdessoumissions;- ...• ExerciceLapagelaplusimportanteestcelleoùlessoumissionsvontpouvoirêtreeffectuées.- Ilyal apossi bi litéde masquerl'énoncéafind'éviterd'avoirl'affichage tropencombré;- L'option"sauvegarder»estdisponible;- Chaqueenvoiengendreunesauvegarde;- Unprofesseurpeutchargerlessoumissionsd'unétudiantdonné;- Onpeutchangeràtoutmomentlethèmedesonéditeur.Lechoixeststockédansuncookievalableseptjours;- Zonedemessagespourleserreurs,lesastucesetlesconseils.

26 3. Difficultésrencontrées- Lapremièredifficultérencontréefuttoutsimplementl'environnement.J'étaisdansl'incapacitéd'installerunemachinevirtuelleouundualbootsurmamachine.Monordinateurbloquantlesdémarrag esautresquesurl'OSactueletlale nteurconsidérabledelavirtualisationm'empêchèrentdecommencerassezrapidementmontravail.Pe ndantcetemps,jef isdesrecherchesdedocumen tationsqui mepermirentdemieuxdébuteru nefoisp aré.Eneffet,après plusieursjournées detentatives,jefinisparréussiràdébloquerl'UEFI8pourenfininstallerunLinuxmepermettantdedébutermontravail.- J'aiétépendantdelonguessemainesdansledouteconcernantlesutilisateursdemaplate-forme.Fallait-ildesnouveauxcomptes?Pour rais-jeaccéder àl'ActiveDirectory?Desincertitudesassezdéconcertantessurlelongterme.- TouslesmodulesnesontpasoptimauxsurPython3,parexemple,lemoduleLDAPestassezbrouillonetnepermetpasdefairecequed'autresmodulespermettent.Or,j'aicher chépendantd esheuresavantdetrouver commentfaire.Lafau teàquoi?Troppeudedocumentations.J'aidonccontactémoi-mêmelecréateurdumodule,mailauquelilm'aréponduavecbeaucoupdesympathie.- Pythiaétantassezpe uconnu, leserreurs rencontrées etlesmessagesd'erre ursinconnusauwebfurentdifficilesàdéchiffrer.- Jen'aiutiliséungestionnairedeversionquetrèstardivement.Decefait,j'aiprisplusdetempsàréécrirequelquechosedeperdualorsqu'aveccetoutil,celaauraitétébienplusrapide.8UnifiedExtensibleFirmwareInterfacedéfinitunlogicielintermédiaireentrelemicrologiciel(firmware)etlesystèmed'exploitation(OS)d'unordinateur.Cetteinterfacesuccèdesurcertainescartes-mèresauBIOS.

27 4. Améliorations- Actuellement,lacréationestgénérique. Ellen epermetdoncquedes exercice ssimples.Ilestcependant possib ledecré ermanuellementdesexerc icespluscomplexesenécrivantlesscriptssoi-même.Uneaméliorationàapporterseraitdoncd'élargircettegénéricité.- Lamodificationtechniquedesexercices.- Ajouterplustardd'autres langagesàlaplate-formeseraitpourm oiuneréelleréussite.- Plusdestatistiquespertinentes.- Unmoduleanti-plagiatpourdesexercicesplusimportants.- Pouvoirimporterdeslibrairies.- Pouvoirimporterd'autresclasses.- Mettredescontraintestemporellesoudescontraintessurlenombredesoumissions.- Rendrelesexercicesunpeuplusludiques,plusattrayants.

28 5. ConclusionAprèsdenombreusesheuresdeprogrammation,jesuistoujoursaussicontentdemapropositiondeTFE.J'aimeeneffeténormémentl'idéed'avoirlapossibilitédefournirunoutilàl'écoleoùj'aiapprispasmaldechosesdanscertainsdomaines.Dûaufaitqueleurproduitfinalneserapeut-êtrejamaisutilisé,plusieursétudiantsdemonannéetrouventmoinsdemotivationàréaliserleurtravail.Pourmapart,savoirquedesétudiantsaurontpeut-êtrelapossibilitéd'utilisermaplate-formeestunemotivationsupplémentaire.Celamedonneenvied'apporterdenombreusespossibilitésàmonproduit.Aprèslaremisefinaledemontravail,j'espèregardercontactaveclesenseignantsétantintéres sésparmontravail.J'espèreque ceux-cimecon tacterontafi ndepouvoirapportertelleoutellecorrection.Ilesteneffetpossiblequemonproduitnesoitpasoptimalpourtouslesexercicesqu'ilssouhaitentproposeràleursétudiants.Voirmontravailêtreintégréàl'enseignementdelaprogrammationàl'EPHECseraitpourmoiuneréelleréussite.Encequiconcernelesacquis,j'aibeaucoupapprisnotammentdansl'utilisationdeLinuxetsesterminauxUnix.Pythonétantunnouveaulangagepourmoi,jepeuxdirequecelangageestdésormais monpréf éré,celuiquejeprônerai sdanslecas deconceptionsd'applications.Malgréladécouverted'unnouveautypedeserveurweb,jemaintiensmapréférencepourAPACHEetlePHPentantquelangagedeprogrammation.Pythiarestepar-dessustoutunprojetd 'avenir. Eneffet, suiteàmongranddévouementlorsdemonstageconcernantsonaméliorationetmamotivationàdomicilepourmeneràbienmontravaildefind'études,MonsieurCombéfissouhaitegardercontactavecmoiafin depouvoir, plustard,étab lirune futurecollaborationdanslebu tdedévelopperdavantagePythiaetsescomposants.Unautrevéritableacquisesttoutsimplementlagestiondutempsetlerespectd'unplanning.J'aiprissoindebienrespectermeséchéancespersonnellesconcernantdespartiesplusoumoinsimportantesdemonprojet,quitteàtravaillerbienplustardcertainsjours.Pourlapremièrefois,jen'aipassentiunréelmanquedetempsoudustresspourlaremised'untravail.Pourterminer,aprèscestagefructueuxetcetravaildefind'étudescaptivant,jesuisd'oresetdéjàcertaindevouloirfairedelaprogrammationmonfuturmétier.Jepossèdeunevéritablepassionpourlaconceptiondeprogrammes,d'algorithmesouencorelarésolutiondeproblématiques.

29 6. Webographiev ThePythiaProject-www.pythia-project.org(consultéenfévrier2014)v BuildinganAddressBookwithOpenLDAPwww.onlamp.com/pub/a/onlamp/2003/03/27/ldap_ab.html(consultéenmai2014)v HowtocreateanewuserinOpenLDAPmindref.blogspot.be/2010/12/openldap-create-user.html(consultéenmai2014)v Bottle:PythonWebFramework-bottlepy.org/docs/dev/index.html(consultéen2014)v davispuh/MySQL-for-Python-3-https://github.com/davispuh/MySQL-for-Python-3(consultéenmars2014)v WelcometoPython.org-https://pypi.python.org/(consultéen2014)v StackOverflow-stackoverflow.com(consultéen2014)v MySQLDocumentation-dev.mysql.com/doc/(consultéenmars2014)v jQueryUI-jqueryui.com(consultéenmai2014)v jQueryAPIDocumentation-api.jquery.com(consultéenmai2014)v W3SchoolsOnlineWebTutorials-w3schools.com(consultéenmai2014)v Mottie/tablesorter-https://github.com/Mottie/tablesorter(consultéenmai2014)v CodeMirror-codemirror.net(consultéenfévrier2014)v Bootstrap-getbootstrap.com(consultéenmars2014)v RegExr:Learn,Build,&TestRegEx-regexr.com(consultéen2014)

30 7. AnnexesI. Schémarelationnel

31 II. Diagrammed'activité:Soumissiond'unétudiant

quotesdbs_dbs32.pdfusesText_38