Beginselen van programmeren (B-KUL-G0N28A)

Doelstellingen
Dit opleidingsonderdeel reikt concepten en technieken aan om kleine problemen op te lossen en te implementeren met behulp van een hogere programmeertaal. Het introduceert studenten daarenboven in de paradigma's van het objectgericht programmeren en van het functioneel programmeren, die gehanteerd worden in de ontwikkeling van grotere programma's. De nadruk in de studie ligt op de concepten en technieken zelf, niet zozeer op de programmeertaal.
Leerresultaten:
• Oplossen van algoritmische problemen door functionele decompositie ("verdeel en heers").
• Implementeren van algoritmen op een iteratieve en recursieve manier.
* Inzicht in de werking van gegevenssstructuren zoals lijsten, verzamelingen en mappen.
• Inzicht in diverse algoritmen om gegevens te sorteren.
* Redeneren over de correctheid en de eindigheid van eenvoudige algoritmen.
* Inschatten van de tijdscomplexiteit en van de geheugencomplexiteit van eenvoudige algoritmen.
Begintermen
Geen specifieke voorkennis vereist.
Volgtijdelijkheidsvoorwaarden
Dit opleidingsonderdeel is een voorwaarde voor het opnemen van volgende opleidingsonderdelen:
H01O9A : Gegevensbanken
G0P36B : Computergesteund probleemoplossen in de natuurkunde
H01P5B : Computerarchitectuur en systeemsoftware
Identieke opleidingsonderdelen
Dit opleidingsonderdeel is identiek aan de volgende opleidingsonderdelen:
H01B6B : Methodiek van de informatica
X0A06A : Beginselen van programmeren
X0A06B : Beginselen van programmeren
Plaats in het onderwijsaanbod
- Bachelor in de informatica (Leuven) 180 sp.
- Bachelor in de wiskunde (Leuven) 180 sp.
- Bachelor in de fysica (Leuven) 180 sp.
- Bachelor in de geografie (programma voor studenten gestart vóór 2024-2025) (Leuven) (Minor wis- en natuurkunde) 180 sp.
- Educatieve master in de wetenschappen en technologie (Leuven) 120 sp.
- Bachelor in de geowetenschappen (Leuven) (Afstudeerrichting Geografie) 180 sp.
Onderwijsleeractiviteiten
3 sp. Beginselen van programmeren: college (B-KUL-G0N28a)
Inhoud
1. Elementaire programma’s
• Ontwikkelen van eenvoudige programma’s die zich beperken tot toekenningen, conditionele opdrachten, invoer/uitvoer en oproepen van voorgedefinieerde functies.
• Inleiding tot de architectuur van computers en de uitvoering van programma’s.
• Concepten: variabelen, uitdrukkingen (numeriek en tekstueel), toekenning, conditionele opdrachten, invoer/uitvoer, functie-oproepen.
2. Iteratieve programma’s (algoritmiek)
• Beredeneerde ontwikkeling van iteratieve programma’s volgens de paradigma’s van het gestructureerd programmeren en van functionele decompositie.
• Correctheidsbewijzen en eindigheidsbewijzen voor eenvoudige algoritmes (o.a. door inductie over de lusinvariant).
• Inschatten van de complexiteit van eenvoudige algoritmes, met nadruk op de tijdscompleixiteit.
• Afhandeling van fouten die zich voordoen tijdens de uitvoering.
• Concepten: iteratieve opdrachten, samengestelde gegevensstructuren (lijsten, mappen, tuppels, verzamelingen, matrices), lusinvariant en lusvariant, uitzonderingen.
3. Recursieve programma’s
• Recursieve ontwikkeling van algoritmes volgens het paradigma van verdeel-en-heers.
• Inzicht in de uitvoering van recursieve programma’s.
• Concepten: definitie van functies, parameterbinding, lokale en gobale scope, documentatie, programmastapel.
4. Inleiding tot het objectgericht programmeren
• Inleiding tot de structurerende concepten van het objectgericht programmeren.
• Functies: parameterbinding, terugkeerwaarden, scope, hergebruik van functies, stapsgewijze verfijning
• Concepten: klassen, objecten, constructoren, overerving.
5. Toepassingen
• Sorteren en zoeken: inzicht in diverse strategieën voor het sorteren van data (selection sort, bubble sort, insertion sort, counting sort, quick sort, heap sort, merge sort) en voor het opzoeken van data (linear search, binary search).
• Reële getallen: inzicht in afrondingsfouten die ontstaan bij het rekenen met getallen in vlottende komma-voorstelling.
• Eenvoudige simulatie- en optimalisatieproblemen.
Alle programma's worden geschreven in de programmeertaal Python
In dit opleidingsonderdeel maakt de student ook kennis met de relevantie en hedendaagse uitdagingen van de informatica.
Studiemateriaal
Handboek; presentatieslides.
Toelichting werkvorm
Hoorcolleges in grote groep in auditorium
3 sp. Beginselen van programmeren: oefeningen (B-KUL-G0N78a)
Studiemateriaal
Opdrachten en oplossingen
Toelichting werkvorm
Oefensessie - PC-sessie
Interactief oplossen van oefeningen in kleinere groepen onder sterke begeleiding. De opdrachten worden gemaakt op computer.
Evaluatieactiviteiten
Evaluatie: Beginselen van programmeren (B-KUL-G2N28a)
Toelichting
Deel I: theorie & kleine vraagjes
Deel II: programmeer-oefeningen
Toelichting bij herkansen
Deel I: theorie & kleine vraagjes
Deel II: programmeer-oefeningen