Module Eindproef: Informatie

Overzicht

Voor de eindproef wordt je als cursist verwacht een probleem naar keuze op te lossen door er software voor te programmeren. Dat kan allerlei vormen aannemen (web app, lokaal te installeren software, enz…). Het probleem bepaalt de oplossing en niet andersom.

De ontwikkeling van je project gebeurt in stappen die telkens worden opgevolgd en begeleid.

  • November (+- na de herfstvakantie): Projectbeschrijving indienen en bespreken
  • Januari (+- na de kerstvakantie): Technisch Voorstel indienen en bespreken
  • April (+- na de paasvakantie): Demo geven en bespreken
  • Eind Juni: Individuele Eindproef verdediging

Tijdens de lessen wordt tijd voorzien om aan je project te werken en vragen te stellen.

Projectbeschrijving

De projectbeschrijving is een document waar je in uitlegt welk probleem je wil oplossen en hoe je van plan bent dit aan te pakken.

Denk o.a. na over volgende vragen:

  • Welke functionaliteiten wil je allemaal voorzien?
  • Op welke manier zal een gebruiker interageren met je oplossing? (Use-cases)
  • Hoe beeld je je het uiteindelijke resultaat in? Maak eventueel een schets (wireframe).
  • Van welke frameworks en andere Python packages zou je gebruik kunnen maken?

De verwachting is dat dit een vrij kort (+- 1-2 pagina’s) en bondig document is.

Technisch Voorstel

In het technisch voorstel (technisch design document) werk je de projectbeschrijving in detail verder uit.

  • Je weet nu precies welke frameworks en packages je zult gebruiken, en op welke manier.
  • Datamodel is grotendeels uitgewerkt.
  • Use-cases in detail uitgewerkt.
  • Structuur van de implementatie ligt grotendeels vast.
  • Je hebt al kleine stukjes code (proof-of-concept) getest.

Als je bijvoorbeeld van plan bent een externe API te gebruiken om data op te vragen, dan wil je nu al code hebben die de API aanspreekt. Op die manier weet je zeker dat je de API ook echt zult kunnen gebruiken, dat de data bruikbaar zal zijn voor jou oplossing, enz…

Je bent vrij in de keuze van het document-formaat. Aangeraden is om met een markdown document (bvb DESIGN.md) te werken in de Git repo waar je uiteindelijke oplossing zal komen. Op die manier heb je een centrale plek die mee kan evolueren met je implementatie en waar je in tussentijd ook proof-of-concept code kan bijhouden en delen.

Demo

Je geeft een korte demonstratie van de onderdelen die al werken. Op die manier kan er samen besproken worden wat je nog verder moet uitwerken en hoe. Zo nodig kan er bijgestuurd worden. Dit is ook een goed moment on in de klas verder te werken aan je project en vragen te stellen.

Eindproef Verdediging

Eind juni kom je je eindwerk presenteren.

Tijdens de eerste 5 tot 10 minuten geef je een pitch:

  • Waarover gaat jou project? Welk probleem lost het op?
  • Geef een korte demonstratie.
  • Bespreek de technische aspecten van je project…
    • Welke frameworks en componenten heb je gebruikt? Waarom?
    • Hoe zie het data model er uit?
    • Wat heb je geleerd bij het programmeren van de oplossing?

Daarna volgt gedurende 15 tot 20 minute een Q&A. Hier kan je vragen verwachten over de technische uitwerking van je project, specifieke stukken code, enz…

Beoordelingsfactoren

  • Tussentijdse opleveringen (beschrijving, projectplan, demo).
  • Je begrijpt alle code en kan keuzes en details uitleggen.
  • Correct en netjes gestructureerde, leesbare code.
  • Functionaliteit.
  • Betrouwbaarheid en veiligheid van de oplossing.
  • Duidelijke logging.
  • Uitbreidingsmogelijkheden.
  • Documentatie (projectplan maar ook bvb. een duidelijke README.md).
  • Code in Git. Regelmatige en duidelijke commits.
  • Minstens een aantal basic automatische testen.

Voorbeelden

Een aantal voorbeelden als inspiratie.

  • Een web applicatie om de productie van een zonnepaneelinstallatie + thuisbatterij bij te houden. Opslag van data uit de omvormer, aggregatie en analyse van de data. (Django, PostgreSQL)
  • Een applicatie om je maandbudget in de plannen en uitgaven bij te houden. (Flask, PostgreSQL)
  • Een desktop applicatie om flashcards aan te maken voor het aanleren van bordspellen, met integratie van een bestaande web API. (Flet, Requests, PostgreSQL)
  • Een applicatie die een gebruiker toelaat zijn boekenverzameling te beheren. De applicatie maakt gebruik van de OpenLibrary API om boeken op te zoeken en toe te voegen aan één of meerdere bookshelves. (Flet, FastAPI, Requests, MongoDB)