6 EC
Semester 2, periode 4
5081SOEN6Y
| Eigenaar | Bachelor Kunstmatige Intelligentie |
| Coördinator | Bas Terwijn |
| Onderdeel van | Bachelor Kunstmatige Intelligentie, jaar 1 |
| Links | Zichtbare leerlijnen |
Software Engineering binnen de bachelor Kunstmatige Intelligentie bouwt voort op de programmeerbasis uit Introductie in Programmeren (Python) en Computational Problem Solving (Prolog). Het vak verdiept programmeervaardigheden en bereidt studenten voor op een breed scala aan vervolgvakken waarin robuuste, schaalbare en goed gestructureerde code essentieel is.
De cursus behandelt gevorderde Python-concepten zoals functie- en command-line-argumenten, foutafhandeling met exceptions, mutability en hashing, higher-order functies, lambda’s, lazy evaluation en recursie. Deze leggen een fundament voor het schrijven van correcte, onderhoudbare en efficiënte programma’s.
Op het gebied van software-ontwerp introduceert het vak de software-levenscyclus met een blik op non-functional requirements, objectgeoriënteerd ontwerp, polymorfisme en een selectie van veelgebruikte design patterns. Deze thema’s leggen de basis voor het ontwerpen van grotere softwaresystemen, een vaardigheid die bij latere grotere projecten onmisbaar is.
Daarnaast worden klassieke algoritmische technieken behandeld, waaronder depth-first search, breadth-first search en adversarial search. Deze helpen studenten om klassieke AI-problemen systematisch te verkennen en op te lossen.
Verder maken studenten kennis met belangrijke Python-bibliotheken zoals math, random, pytest, logging, matplotlib, pygame, memory_graph en invocation_tree voor het implementeren, testen, debuggen en visualiseren van verschillende softwaresystemen.
Studenten raken vertrouwt met essentiële ontwikkeltools zoals Visual Studio Code en git, waardoor zij professionele werkmethoden leren toepassen. Het vak vormt zo een cruciale brug tussen basisprogrammeren en het grotere AI-software-ecosysteem.
Python, Visual Studio Code, Git, pygame
Laptop voor genoemde software
In hoorcolleges worden concepten rondom software design, implementatie en onderhoud geïntroduceerd.
In laptopcolleges is er hulp van TA's en ruimte voor samenwerking bij het toepassen van deze concepten in opdrachten.
|
Activiteit |
Uren |
|
|
Hoorcollege |
28 |
|
|
Laptopcollege |
28 |
|
|
Tentamen |
3 |
|
|
Zelfstudie |
109 |
|
|
Totaal |
168 |
(6 EC x 28 uur) |
Aanwezigheidseisen opleiding (OER-B Artikel B-4.10):
| Onderdeel en weging | Details |
|
Eindcijfer | |
|
0.7 (70%) Tentamen 1 | Moet ≥ 4.5 zijn |
|
0.043 (4%) programmeeropdrachten week1 | |
|
0.043 (4%) programmeeropdrachten week2 | |
|
0.043 (4%) programmeeropdrachten week3 | |
|
0.043 (4%) programmeeropdrachten week4 | |
|
0.043 (4%) programmeeropdrachten week5 | |
|
0.086 (9%) programmeeropdrachten week6 + week7 |
Het tentamen gaat over de stof besproken in de hoorcolleges en de stof behandeld in de programmeeropdrachten van week 1 t/m week 7. Het tentamen wordt schriftelijk afgenomen (pen en papier) en er zijn geen hulpmiddelen toegestaan (geen computer/slides/boek/notities).
Programmeeropdrachten moeten voor de aangegeven deadline zijn ingeleverd om mee te tellen. Uitzonderingen hierop kunnen alleen via de studieadviseur worden aangevraagd.
Alleen het tentamen kan herkanst worden, de cijfers voor de programmeeropdrachten blijven staan.
Voor tentameninzage wordt later in Datanose een activiteit geroosterd. In uitzonderlijke situaties kan voor inzage ook een afspraak worden gemaakt met de vakcoördinator.
| programmeer- opdrachten: |
onderwerpen | groepsverband | feedback | becijfering |
|
week1 |
command line arguments, packages |
individueel | autotest en inzage tijdens laptopcollege | autotest |
|
week2 |
exceptions, data model, data structures |
individueel | autotest en inzage tijdens laptopcollege | autotest |
|
week3 |
object-orientatie, polymorphisme, lazy evaluation |
individueel | autotest en inzage tijdens laptopcollege | autotest |
|
week4 |
recursion, adverserial search |
individueel | autotest en inzage tijdens laptopcollege | autotest |
|
week5 |
recursion, adverserial search, pytest |
individueel | autotest en inzage tijdens laptopcollege | autotest |
|
week6 + week7 |
git, pygame project |
groepje van 3 of 4 personen | schriftelijk | becijfering volgens criteria |
Dit vak hanteert de algemene 'Fraude- en plagiaatregeling' van de UvA. Hier wordt nauwkeurig op gecontroleerd. Bij verdenking van fraude of plagiaat wordt de examencommissie van de opleiding ingeschakeld. Zie de Fraude- en plagiaatregeling van de UvA: http://student.uva.nl
| Weeknummer | Onderwerpen | Studiestof |
| 1 | software lifecycle, command line arguments, packages | hoorcollege slides, opdrachten |
| 2 | exceptions, data model, data structures | hoorcollege slides, opdrachten |
| 3 | object-orientatie, polymorphisme, lazy evaluation | hoorcollege slides, opdrachten |
| 4 | recursion, adverserial search, pytest. logging | hoorcollege slides, opdrachten |
| 5 | recursion, adverserial search, pytest, logging | hoorcollege slides, opdrachten |
| 6 | git, pygame project, design patterns | hoorcollege slides, opdrachten |
| 7 | git, pygame project, design patterns | hoorcollege slides, opdrachten |
| 8 | tentamen | bovenstaande |
De deadline van elke opdracht wordt aangegeven op Canvas en zal doorgaans aan het einde van de week liggen.
Het gebruik van UvA AI Chat en andere GenAI tools is toegestaan bij het maken van opdrachten, ook is samenwerken met medestudenten toegestaan en wordt aangemoedigd maar, het ingeleverde werk moet wel eigen werk zijn in de zin dat u zelf het werk moet kunnen uitleggen en ook de gedachtegang hoe u tot dit werk bent gekomen. Als u dat als student onvoldoende kunt, dan kan dit als fraude en/of plagiaat worden gezien, dan kan dit een negatief effect op uw beoordeling hebben, en dan moeten wij dit melden bij de examencommisie wat ernstige gevolgen kan hebben voor uw studie (zie de Fraude en Plagiaatregeling op de UvA website). Daarnaast zal het niet zelf maken van opdrachten naar alle waarschijnlijkheid ook onvoldoende voorbereiding blijken voor het minimum-tentamencijfer.
Neem dus zelf de verantwoording voor uw leerproces en laat u niet verleiden om bij de geringste weerstand al naar GenAI tools te grijpen. Bij studeren gaat het dan mischien juist ook om zelf steeds weerstanden overkomen. Gebruik GenAI tools vooral wel als feedback na het maken van een opdracht, en ga er mee in discussie om onduidelijkheden weg te nemen en uw inzicht te vergroten, maar blijf kritisch want GenAI hallucinaties zijn talrijk. Het gebruik van GenAI tools en samenwerken kunnen een heel positief effect op uw studieresultaten hebben, mits dat op een verantwoorde manier gebeurt.