Onderwijstaal : Nederlands |
Volgtijdelijkheid
|
|
Geen volgtijdelijkheid
|
| Studierichting | | Studiebelastingsuren | Studiepunten | P2 SBU | P2 SP | 2de Examenkans1 | Tolerantie2 | Eindcijfer3 | |
 | master in de industriële wetenschappen: elektronica-ICT | Keuze | 108 | 4,0 | 108 | 4,0 | Ja | Ja | Numeriek |  |
|
| Eindcompetenties |
- EC
| EC1 - De Master in de industriële wetenschappen: elektronica-ICT kan in eigen professioneel denken en handelen -- met een gepaste ingenieursattitude en met continue aandacht voor de eigen vorming -- adequaat communiceren, effectief samenwerken, en rekening houden met de economische, ethische, maatschappelijke en/of internationale context en is zich hierbij bewust van de impact op de omgeving. | | - DC
| DC-M8 - kan kennis en vaardigheden kritisch evalueren om op basis hiervan eigen denken en handelen bij te sturen. (kritisch reflecteren) | | | - BC
| kan zijn denkwijze aanpassen om de overgang te maken van zijn 'oude' imperatieve vaardigheden naar het functioneel paradigma. | | - DC
| DC-M12 geeft blijkt van een gepaste ingenieursattitude. (ingenieursattitude) | | | - BC
| verkiest een efficiënte codeerstijl | - EC
| EC2 - De Master in de industriële wetenschappen: elektronica-ICT beheerst een geheel van kennis en vaardigheden omtrent het ontwerpen van software en analoge en digitale systemen en kan deze creatief concipiëren, plannen en uitvoeren als geïntegreerd deel van een methodologisch en projectmatig geordende reeks van handelingen binnen een multidisciplinair project met een belangrijke onderzoeks- en/of innovatiecomponent | | - DC
| DC-M1 - heeft kennis van de basisbegrippen, structuur en samenhang. (kennis bezitten) | | | - BC
| kent de fundamentele concepten van het functionele programmeerparadigma. | | | - BC
| kent de syntax van Haskell en van de functionele stijl van Java. | | - DC
| DC-M5 - kan problemen analyseren, logisch structureren en interpreteren. (analyseren) | | | - BC
| kan analyseren hoe een probleem opgelost kan worden volgens de methodiek van het functioneel paradigma. | | - DC
| DC-M6 - kan methodes selecteren en gefundeerde keuzes maken om problemen op te lossen of oplossingen te ontwerpen. (oplossen en ontwerpen) | | | - BC
| kan een ontwerp maken voor een probleem met inachtname van de filosofie van het functioneel paradigma | | - DC
| DC-M7 - kan geselecteerde methodes en hulpmiddelen aanwenden om oplossingen en ontwerpen te implementeren. (implementeren en operationaliseren) | | | - BC
| kan een werkende implementatie uitwerken in Haskell en in de functionele stijl van Java | | | - BC
| kan functioneel reactieve code schrijven. | - EC
| EC7 - De Master in de industriële wetenschappen: elektronica-ICT heeft gespecialiseerde kennis en inzicht in principes en toepassingen binnen de domeinen van computertechnieken en algoritmen van programmeertalen, en kan hierin initiëren, plannen, kritisch analyseren en gefundeerd oplossen met oog voor dataverwerving en implementatie en met behulp van simulatietechnieken of geavanceerde tools, bewust van mogelijk fouten, praktische beperkingen en met aandacht voor actuele technologische ontwikkelingen. | | - DC
| DC-M2 - heeft inzicht in de basisbegrippen en methodes. (begrijpen) | | | - BC
| begrijpt hoe de functionele stijl tot preciezere code kan leiden met een kleiner foutenrisico | | | - BC
| begrijpt dat functioneel programmeren een rol kan spelen in doelgerichter aantonen van eigenschappen van algoritmes. | | - DC
| DC-M4 - kan informatie opzoeken, meten of verzamelen en correct refereren. (data verwerven) | | | - BC
| kan de tijdscomplexiteit van een algoritme of een implementatie berekenen. | | - DC
| DC-M5 - kan problemen analyseren, logisch structureren en interpreteren. (analyseren) | | | - BC
| kan een probleem zo (her)structureren, waar nodig in deelproblemen, zodat het handig via de functionele stijl opgelost kan worden. | | | - BC
| kan de werking van lazy evaluation in het algemeen en in concrete voorbeelden uitleggen. | | | - BC
| kan de geldigheid van de wetten van functors en applicative in concrete situaties aantonen. | | - DC
| DC-M6 - kan methodes selecteren en gefundeerde keuzes maken om problemen op te lossen of oplossingen te ontwerpen. (oplossen en ontwerpen) | | | - BC
| kan de gepaste functionele structuren selecteren op gebied van gegevensstructuren, het evaluatiemechanisme als wat betreft slimme functie-compositie om een probleem doelgericht op te lossen | | | - BC
| kan hogere orde functies inzetten om een hoger niveau van abstractie en hergebruik van code te bekomen. | | | - BC
| kan een functioneel reactief systeem ontwerpen |
|
| EC = eindcompetenties DC = deelcompetenties BC = beoordelingscriteria |
|
Traditionele, imperatieve programmeertalen staan dicht, te dicht bij de hardware waar ze op draaien en botsen daardoor snel op hun beperkingen omdat ze te veel focussen op hoe iets moet gebeuren i.p.v. wat er moeten gebeuren. Het paradigma van het declaratief programmeren laat ontwikkelaars toe om zich enkel bezig te houden met het wat ipv het hoe en verhoogt daardoor de productiviteit van de ontwikkelaar. In dit opleidingsonderdeel leren we de belangrijkste component van het declaratief programmeren, met name het functioneel programmeren. Oordeelkundige toepassing hiervan resulteert in programma's met 10x minder regels code en 3x snellere ontwikkeling met minder fouten. We gebruiken in de eerste plaats de programmeertaal Haskell, een taal die in de academische wereld ontwikkeld is, maar we behandelen ook de functionele technieken in Java, en werpen ook een (snelle) blik op Functional Reactive Programming (FRP).
Inhoud:
- Kennismaking met Haskell
- Recursief programmeren en staartrecursie
- Hogere orde functies
- Luie evaluatie (lazy evaluation)
- Monadic programmeren
- Het haskell-bibliotheek-systeem
- Functionele technieken in Java
- Functional Reactive Programming
Omdat functioneel programmeren bijzonder geschikt is voor het programmeren van algoritmes, komt dit prominent aan bod en kijken we ook naar de tijdscomplexiteit van de implementatie van recursieve algoritmes in Haskell.
|
|
|
|
|
|
|
Applicatiecollege ✔
|
|
|
|
|
|
Demonstraties ✔
|
|
|
Huiswerktaken ✔
|
|
|
Oefeningen ✔
|
|
|
Onderwijsleergesprek ✔
|
|
|
Workshop ✔
|
|
|
|
Periode 2 Studiepunten 4,00
Evaluatievorm | |
|
Schriftelijke evaluatie tijdens onderwijsperiode | 50 % |
|
Behoud van deelcijfer in academiejaar | ✔ |
|
Voorwaarde behoud van deelcijfer in academiejaar | Vanaf 12/20 |
|
|
|
|
|
|
|
Andere: | mondelinge toelichting op verzoek |
|
|
|
|
|
Schriftelijk examen | 50 % |
|
Behoud van deelcijfer in academiejaar | ✔ |
|
Voorwaarde behoud van deelcijfer in academiejaar | Vanaf 10/20 |
|
|
|
|
|
|
|
|
Andere: | mondelinge toelichting op verzoek |
|
|
|
|
|
Evaluatievoorwaarden (deelname en/of slagen) | ✔ |
|
Voorwaarden | De student moet op zowel de evaluatie tijdens het academiejaar als op het examen minstens een delibereerbaar cijfer halen (minstens 8,0/20). |
|
|
|
Gevolg | Indien de student op een van de delen minder dan 8,0/20 haalt, bestaat het punt uit het gewogen gemiddelde van beide delen met een maximum van 9/20. |
|
|
|
Tweede examenkans
Evaluatievorm tweede examenkans verschillend van eerste examenkans | |
|
|
 
|
Verplicht studiemateriaal |
|
Het cursusmateriaal wordt via het elektronisch leerplatform verspreid. |
|
 
|
Opmerkingen |
|
Situering binnen het leerdomein/curriculum
Dit opleidingsonderdeel neemt binnen het leerdomein IT/software engineering een unieke rol in doordat hier een totaal ander programmeerparadigma aangebracht wordt dan in de andere opleidingsonderdelen, nl. functioneel programmeren waarbij neveneffecten niet toegelaten zijn tenzij op een heel strikte manier geprogrammeerd. Dit klinkt redelijk fundamenteel/fundamentalistisch, maar zorgt wel voor een verfrissende blik op je dagdagelijke programmeerpraktijk, met blijvende impact, ook buiten dit opleidingsonderdeel.
Relatie met het werkveld
De programmeertaal Haskell, die de hoofdmoot uitmaakt van dit opleidingsonderdeel wordt toegepast in een aantal hoog-innovatieve bedrijven, maar nog in te beperkte mate in Belgische bedrijven. De functionele programmeertechnieken hebben echter ook ingang gevonden in mainstreamtalen zoals C#, Java, C++, Javascript, Python, ... en daar is het al meer mainstream, maar dan vooral bij de betere programmeurs. In dit opleidingsonderdeel leren we hoe we de functionele stijl in Java kunnen toepassen, wat zeer relevant is voor het werkveld.
Relatie met onderzoek
Haskell is dé functionele taal binnen de academische wereld en wordt dus ook in dit opleidingsonderdeel behandeld. Verschillende van de bevindingen uit het functioneel programmeren zijn al doorgesijpeld naar de 'gewone' programmeertalen, maar er is nog steeds behoefte aan een vertaalslag naar bedrijven, en zeker in België. De onderzoeksgroep ACRO in Diepenbeek zet sterk in op deze vertaalslag en werkt ook aan het gebruik van (reactive) functionele talen als programmeertaal voor robotica-toepassingen. |
|
|
|
|
|
 | master in de industriële wetenschappen: informatica | Keuze | 108 | 4,0 | 108 | 4,0 | Ja | Ja | Numeriek |  |
|
| Eindcompetenties |
- EC
| EC1 - De master in de industriële wetenschappen informatica kan in eigen professioneel denken en handelen -- met een gepaste ingenieursattitude en met continue aandacht voor de eigen vorming -- adequaat communiceren, effectief samenwerken, en rekening houden met de economische, ethische, maatschappelijke en/of internationale context en is zich hierbij bewust van de impact op de omgeving. [people, data literacy and essential software skills] | | - DC
| DC-M8 - kan kennis en vaardigheden kritisch evalueren om op basis hiervan eigen denken en handelen bij te sturen. (kritisch reflecteren) | | | - BC
| kan zijn denkwijze aanpassen om de overgang te maken van zijn 'oude' imperatieve vaardigheden naar het functioneel paradigma. | | - DC
| DC-M12 - geeft blijkt van een gepaste ingenieursattitude. (ingenieursattitude) | | | - BC
| verkiest een efficiënte codeerstijl | - EC
| EC3 - De master in de industriële wetenschappen informatica heeft gevorderde kennis en inzicht in principes en toepassingen van software engineering waaronder software development processen, software architecturen en software life cycle, en kan deze toepassen in complexe en praktijkgerichte probleemdomeinen en dit met aandacht voor de actuele technologische ontwikkelingen. [software engineering] | | - DC
| DC-M1 - heeft kennis van de basisbegrippen, structuur en samenhang. (kennis bezitten) | | | - BC
| kent de fundamentele concepten van het functionele programmeerparadigma | | | - BC
| kent de syntax van Haskell en van de functionele stijl van Java | | - DC
| DC-M4 - kan informatie opzoeken, meten of verzamelen en correct refereren. (data verwerven) | | | - BC
| kan de tijdscomplexiteit van een algoritme of een implementatie berekenen | | - DC
| DC-M5 - kan problemen analyseren, logisch structureren en interpreteren. (analyseren) | | | - BC
| kan een probleem zo (her)structureren, waar nodig in deelproblemen, zodat het handig via de functionele stijl opgelost kan worden. | | - DC
| DC-M6 - kan methodes selecteren en gefundeerde keuzes maken om problemen op te lossen of oplossingen te ontwerpen. (oplossen en ontwerpen) | | | - BC
| kan een ontwerp maken voor een probleem met inachtname van de filosofie van het functioneel paradigma | | | - BC
| kan de gepaste functionele structuren selecteren op gebied van gegevensstructuren, het evaluatiemechanisme als wat betreft slimme functie-compositie om een probleem doelgericht op te lossen. | | | - BC
| kan een functioneel reactief systeem ontwerpen. | | - DC
| DC-M7 - kan geselecteerde methodes en hulpmiddelen aanwenden om oplossingen en ontwerpen te implementeren. (implementeren en operationaliseren) | | | - BC
| kan een werkende implementatie uitwerken in Haskell en in de functionele stijl van Java | - EC
| EC5 - De master in de industriële wetenschappen informatica beheerst een geheel van gespecialiseerde kennis en vaardigheden voor het ontwerpen van modulaire, geïntegreerde software-systemen die op basis van data-verwerving en data-analyse intelligente beslissingen kunnen nemen, die resilient zijn (veilig, robuust en schaalbaar) en dit binnen een multidisciplinair project met een toegepaste onderzoeks- en/of innovatiecomponent. [intelligent & resilient systems] | | - DC
| DC-M2 - heeft inzicht in de basisbegrippen en methodes. (begrijpen)
| | | - BC
| begrijpt hoe de functionele stijl tot preciezere code kan leiden met een kleiner foutenrisico. | | | - BC
| begrijpt dat functioneel programmeren een rol kan spelen in doelgerichter aantonen van eigenschappen van algoritmes | | - DC
| DC-M5 - kan problemen analyseren, logisch structureren en interpreteren. (analyseren)
| | | - BC
| kan de werking van lazy evaluation in het algemeen en in concrete voorbeelden uitleggen. | | | - BC
| kan analyseren hoe een probleem opgelost kan worden volgens de methodiek van het functioneel paradigma. | | | - BC
| kan de geldigheid van de wetten van functors en applicative in concrete situaties aantonen. | | - DC
| DC-M6 - kan methodes selecteren en gefundeerde keuzes maken om problemen op te lossen of oplossingen te ontwerpen. (oplossen en ontwerpen)
| | | - BC
| kan hogere orde functies inzetten om een hoger niveau van abstractie en hergebruik van code te bekomen | | - DC
| DC-M7 - kan geselecteerde methodes en hulpmiddelen aanwenden om oplossingen en ontwerpen te implementeren. (implementeren en operationaliseren)
| | | - BC
| kan functioneel reactieve code schrijven. |
|
| EC = eindcompetenties DC = deelcompetenties BC = beoordelingscriteria |
|
Traditionele, imperatieve programmeertalen staan dicht, te dicht bij de hardware waar ze op draaien en botsen daardoor snel op hun beperkingen omdat ze te veel focussen op hoe iets moet gebeuren i.p.v. wat er moeten gebeuren. Het paradigma van het declaratief programmeren laat ontwikkelaars toe om zich enkel bezig te houden met het wat ipv het hoe en verhoogt daardoor de productiviteit van de ontwikkelaar. In dit opleidingsonderdeel leren we de belangrijkste component van het declaratief programmeren, met name het functioneel programmeren. Oordeelkundige toepassing hiervan resulteert in programma's met 10x minder regels code en 3x snellere ontwikkeling met minder fouten. We gebruiken in de eerste plaats de programmeertaal Haskell, een taal die in de academische wereld ontwikkeld is, maar we behandelen ook de functionele technieken in Java, en werpen ook een (snelle) blik op Functional Reactive Programming (FRP).
Inhoud:
- Kennismaking met Haskell
- Recursief programmeren en staartrecursie
- Hogere orde functies
- Monadic programmeren
- Het haskell-bibliotheek-systeem
- Functionele technieken in Java
- Functional Reactive Programming
Omdat functioneel programmeren bijzonder geschikt is voor het programmeren van algoritmes, komt dit prominent aan bod en kijken we ook naar de tijdscomplexiteit van de implementatie van recursieve algoritmes in Haskell.
|
|
|
|
|
|
|
Applicatiecollege ✔
|
|
|
|
|
|
Demonstraties ✔
|
|
|
Huiswerktaken ✔
|
|
|
Oefeningen ✔
|
|
|
Onderwijsleergesprek ✔
|
|
|
Workshop ✔
|
|
|
|
Periode 2 Studiepunten 4,00
Evaluatievorm | |
|
Schriftelijke evaluatie tijdens onderwijsperiode | 50 % |
|
Behoud van deelcijfer in academiejaar | ✔ |
|
Voorwaarde behoud van deelcijfer in academiejaar | Vanaf 12/20 |
|
|
|
|
|
|
|
Andere: | mondelinge toelichting op verzoek |
|
|
|
|
|
Schriftelijk examen | 50 % |
|
Behoud van deelcijfer in academiejaar | ✔ |
|
Voorwaarde behoud van deelcijfer in academiejaar | Vanaf 10/20 |
|
|
|
|
|
|
|
|
Andere: | mondelinge toelichting op verzoek |
|
|
|
|
|
Evaluatievoorwaarden (deelname en/of slagen) | ✔ |
|
Voorwaarden | De student moet op zowel de evaluatie tijdens het academiejaar als op het examen minstens een delibereerbaar cijfer halen (minstens 8,0/20). |
|
|
|
Gevolg | Indien de student op een van de delen minder dan 8,0/20 haalt, bestaat het punt uit het gewogen gemiddelde van beide delen met een maximum van 9/20. |
|
|
|
Tweede examenkans
Evaluatievorm tweede examenkans verschillend van eerste examenkans | |
|
|
 
|
Verplicht studiemateriaal |
|
Het cursusmateriaal wordt via het elektronisch leerplatform verspreid. |
|
 
|
Opmerkingen |
|
Situering binnen het leerdomein/curriculum
Dit opleidingsonderdeel neemt binnen het leerdomein IT/software engineering een unieke rol in doordat hier een totaal ander programmeerparadigma aangebracht wordt dan in de andere opleidingsonderdelen, nl. functioneel programmeren waarbij neveneffecten niet toegelaten zijn tenzij op een heel strikte manier geprogrammeerd. Dit klinkt redelijk fundamenteel/fundamentalistisch, maar zorgt wel voor een verfrissende blik op je dagdagelijke programmeerpraktijk, met blijvende impact, ook buiten dit opleidingsonderdeel.
Relatie met het werkveld
De programmeertaal Haskell, die de hoofdmoot uitmaakt van dit opleidingsonderdeel wordt toegepast in een aantal hoog-innovatieve bedrijven, maar nog in te beperkte mate in Belgische bedrijven. De functionele programmeertechnieken hebben echter ook ingang gevonden in mainstreamtalen zoals C#, Java, C++, Javascript, Python, ... en daar is het al meer mainstream, maar dan vooral bij de betere programmeurs. In dit opleidingsonderdeel leren we hoe we de functionele stijl in Java kunnen toepassen, wat zeer relevant is voor het werkveld.
Relatie met onderzoek
Haskell is dé functionele taal binnen de academische wereld en wordt dus ook in dit opleidingsonderdeel behandeld. Verschillende van de bevindingen uit het functioneel programmeren zijn al doorgesijpeld naar de 'gewone' programmeertalen, maar er is nog steeds behoefte aan een vertaalslag naar bedrijven, en zeker in België. De onderzoeksgroep ACRO in Diepenbeek zet sterk in op deze vertaalslag en werkt ook aan het gebruik van (reactive) functionele talen als programmeertaal voor robotica-toepassingen. |
|
|
|
|
|
1 Onderwijs-, examen- en rechtspositieregeling art. 12.2, lid 2. |
2 Onderwijs-, examen- en rechtspositieregeling art. 16.9, lid 2. |
3 Onderwijs-, examen- en rechtspositieregeling art. 15.1, lid 3.
|
Legende |
SBU : studiebelastingsuren | SP : studiepunten | N : Nederlands | E : Engels |
|