Software Engineering

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

Studiewijzer 2025/2026

Globale inhoud

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.

Studiemateriaal

Software

  • Python, Visual Studio Code, Git, pygame

Overig

  • Laptop voor genoemde software

Leerdoelen

  • The student is familiar with Python packages such as math, random, and matplotlib for data manipulation and visualisation.
  • The student has a good understanding of the Python Data Model and can apply it to ensure code correctness.
  • The student can choose the right Python built-in data structure (e.g., list, set, dictionary) to optimize performance for specific use cases.
  • The student can use logging frameworks and debug tools to diagnose and resolve issues in software applications.
  • The student can use exceptions to separate business logic from error handling, ensuring clean and maintainable code.
  • The student can use higher-order functions and generators to create modular and reusable code.
  • The student can use pytest for test-driven development to write, execute, and maintain unit tests for robust software development.
  • The student can use object-oriented abstraction to design modular and maintainable software systems.
  • The student can use object-oriented encapsulation to preserve invariants and ensure data integrity.
  • The student can use object-oriented inheritance to avoid code duplication and promote code reuse.
  • The student can use object-oriented information hiding to achieve separation of concerns and reduce coupling.
  • The student can use abstract base classes to define interfaces and integrate diverse software components.
  • The student can use Git for version control and team collaboration, enabling effective management of a code base.
  • The student can use basic symbolic AI algorithms to model and solve optimization problems, bridging software engineering with artificial intelligence.

Onderwijsvormen

  • Hoorcollege
  • Laptopcollege

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.

Verdeling leeractiviteiten

Activiteit

Uren

Hoorcollege

28

Laptopcollege

28

Tentamen

3

Zelfstudie

109

Totaal

168

(6 EC x 28 uur)

Aanwezigheid

Aanwezigheidseisen opleiding (OER-B Artikel B-4.10):

  • Voor sommige studieonderdelen geldt een aanwezigheidsplicht. Indien er een aanwezigheidsplicht geldt, dan staat dit aangegeven in de studiegids. De onderbouwing voor, en invulling van, deze aanwezigheidsplicht kan per vak verschillen, en is opgenomen in de studiewijzer. Wanneer studenten niet voldoen aan deze aanwezigheidsplicht kan het onderdeel niet met een voldoende worden afgerond.

Toetsing

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.

Inzage toetsing

Voor tentameninzage wordt later in Datanose een activiteit geroosterd. In uitzonderlijke situaties kan voor inzage ook een afspraak worden gemaakt met de vakcoördinator.

Opdrachten

 

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

 

Fraude en plagiaat

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

Weekplanning

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.

Aanvullende informatie

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.

Contactinformatie

Coördinator

  • Bas Terwijn