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



Previous PDF Next PDF







Vocabulaire anglais: à lécole

to put one's hand up → lever la main to know → à savoir to revise → réviser to take/ to sit an exam → prendre / passer un examen to pass one's exams → passer ses examens to fail one's exams → échouer à ses examens to fail an exam → Rater un examen to flunk a test → flouter un test to repeat a year/ to repeat a grade



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

les exercices réalisés par les étudiants Ces derniers pourront donc s'entraîner à leur guise sur des exercices basiques Cette interface web pédagogique participerait donc à l’apprentissage des néo programmeurs Avant de pouvoir commencer mon travail, mon premier objectif fut d’apprendre le



Bachelor of Science en géographie - unifrch

Plan d’études du Bachelor of Science en géographie Etat au 02 07 2020 – 4 – 1 2 Structure générale des études Les études de BSc et de MSc sont composées d’unités d’enseignement (UE) telles que les cours, les exercices, les travaux pratiques, les projets, les séminaires, etc À chaque UE est asso-



Bachelor of Science en géographie - unifrch

ou alors au début du cours L’évaluation des exercices, des travaux pratiques, des projets ou dautres travaux personnels ’ s’effectue selon des critères déterminés au début du semestre Leur réussite peut être déterminante pour accéder à l’épreuve du cours correspondant Pour chaque épreuve, l’étudiant-e





Modalités d’évaluation des UE de mathématiques

SMA 05801 Master’s thesis 30 Written thesis, assessed with a mark SMA 05802 Presentation of master’s thesis 3 Talk No mark is given SMA 07003 Méthodes mathématiques de l’Informatique I (cours avec exercices) 5 Épreuve écrite de 120 min Les exercices inclus dans les cours doivent être réussis (selon des



Modalités d’évaluation des UE de la géographie et des géosciences

des cours se fait par des épreuves orales ou écrites dont la durée est fixée dans la présente annexe Les épreuves se déroulent, en général, durant trois sessions d'examens (printemps, été, automne) Pour chaque épreuve, l’étudiant-e s'inscrit dans les délais prescrits



Modalités d’évaluation des UE en sciences de la Terre

L'évaluation satisfaisante des exercices est un prérequis pour accéder à l'épreuve du cours correspondant L'évaluation des cours se fait par des épreuves orales ou écrites dont la durée est fixée dans la présente annexe Les épreuves se déroulent, en général, durant trois sessions d'examens (printemps, été, automne)



Master en Sciences de lIngénieur Efficacité Energétique et

- de la résolution des exercices complémentaires proposés en fin de séance ; - d'un travail régulier personnel de l'étudiant Les supports de cours et les énoncés des applications sont disponibles sur la plateforme Moodle, ainsi que les énoncés des examens des années précédentes (en général, les deux dernières

[PDF] Bachibac pour la seconde 3ème Espagnol

[PDF] bacterie PDF Cours,Exercices ,Examens

[PDF] bacterie ou virus 4ème SVT

[PDF] bactéries du yaourt svt PDF Cours,Exercices ,Examens

[PDF] Bactéries et virus 3ème SVT

[PDF] Bactéries qui se multiplient niveau 3ème 3ème Mathématiques

[PDF] bacteriologie clinique pdf PDF Cours,Exercices ,Examens

[PDF] bacteriologie medicale PDF Cours,Exercices ,Examens

[PDF] bacteriologie medicale pratique pdf PDF Cours,Exercices ,Examens

[PDF] badminton analyse de mon jeu PDF Cours,Exercices ,Examens

[PDF] badminton au bac Terminale Autre

[PDF] Bagdad (je voudrais juste que vous me corrigez le travail que j'ai fait) 5ème Histoire

[PDF] baguette d'or avignon menu PDF Cours,Exercices ,Examens

[PDF] Baisse d'impôts 1ère Mathématiques

[PDF] baisse d'impot 2016 pour qui PDF Cours,Exercices ,Examens

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