7 ECTS credits
195 u studietijd
Aanbieding 1 met studiegidsnummer 1008047ANR voor alle studenten in het 1e en 2e semester met een inleidend bachelor niveau.
Het eerste semester (12u HOC en 24u WPO ) behandelt de elementaire programmeerconcepten met behulp van Python.
Het tweede semester (24u HOC, 18u WPO en 24u ZW) diept deze uit aan de hand van Java en wordt afgesloten met een programmeerproject.
1) Het hoorcollege vangt aan met enkele belangrijke aspecten van de moderne computertechnologie. We focussen op enkele essentiële factoren die tot het succes van de huidige computers leidden (oa. architectuur van computersystemen, besturingssystemen, compilers, software versus hardware). Verbanden met de belangrijkste opvolgvakken worden aangehaald en gekaderd.
Basisbegrippen van programmeren worden in eerste instantie aangeleerd in Python. Python is een pedagogisch zeer interessante taal en voldoende laagdrempelig. Daarna wordt er verder gegaan met Java en komt het object-georiënteerd programmeren aan bod. Java is een taal die goed aansluit met de noden die de studenten zullen tegenkomen in hun latere studies en loopbaan. De cursus bestaat uit 2 grote delen: de basisconcepten van moderne programmeertalen (Python & Java) en algoritmen & datastructuren (complexiteit en toepassing)
• Basisconcepten (Python)
Les 1
Statements
• Object-georiënteerde concepten (Java)
- Object-georiënteerd denken, de wereld opgedeeld in objecten: objecten met bijbehorende attributen en methoden, gedefinieerd door klassen.
- Vertalen van de python-syntax naar java: enkelvoudige types, operatoren, statements, expressies, ...
- Een taxonomie van klassen: overerving (inheritance) en overschrijving (method overriding)
- De weg naar abstractie: abtracte methoden, interfaces en polymorfisme.
Noot: het doel van dit deel van de cursus is het aanleren van alle basiselementen van de objectgeoriënteerde programmeertaal Java. Er wordt verwacht dat de studenten complexere concepten zoals inheritance, polymorphism en encapsulation begrijpen en kunnen toepassen in een beperkte context (schrijven van programma’s met beperkte complexiteit, gebruik maken van de Java API, functionaliteit toevoegen aan een bestaand OO design). Het is niet de bedoeling om de studenten een volledige objectgeoriënteerde ontwerpmethodologie bij te brengen.
• Algoritmes en datastructuren
Dit onderdeel introduceert algoritmes en datastructuren, met de nadruk op het gebruik van de door de programmeertaal aangereikte standaardbibliotheken, en niet op de interne werking of op het ontwerpen en implementeren van eigen structuren.
Tijdscomplexiteit van operaties als insert, delete, ... (big O notatie)
Vector, linked list
Stack, Queue
Trees en recursie
Graphs en shortest-path
HashTables
Search and sort
2) In inleidende oefeningensessies worden de syntaxelementen (van zowel Python als Java) uit het hoorcollege ingeoefend door het maken van eenvoudige oefeningen en wordt de student vertrouwd gemaakt met de ontwikkelomgeving (code editeren, debugging, ...).
3) Na de initiële begeleide oefeningen, worden de studenten ingedeeld in kleine groepen en wordt door elke groep een project in detail uitgewerkt in Java. De studenten hebben de mogelijkheid om uit een beperkte lijst projectopgaven te kiezen. Deze lijst omvat projecten die zich situeren in de verschillende vakgebieden binnen de ingenieurswetenschappen (i.e. bouwkunde, fysica, werktuigkunde, scheikunde, EIT, computer science) en zijn zo opgezet dat de student ervaart dat er binnen elke ingenieursdiscipline in belangrijke mate van specifieke programma’s gebruik gemaakt wordt. De studenten zullen van nabij begeleid worden bij het uitwerken van hun project.
De slides en aanvullend studiemateriaal voor het eerste semester zijn te vinden op http://www.etro.vub.ac.be/Education/Courses/Python/
Kennis en inzicht:
* De student kent de basiselementen van een moderne computer en kan ze duiden in het kader van de computer als informatieverwerkend medium.
* De student kan de basiselementen, de combinatietechnieken en de abstractietechnieken uitleggen die in de programmeertalen Java en Python beschikbaar zijn om computerprogramma's te bouwen.
* De student kan de opbouw van de algoritmen en datastructuren die in de cursus werden behandeld schetsen en de toepassing en schaalbaarheid ervan toelichten.
* De student weet dat er een breed scala van bibliotheken bestaan voor algemene en specifieke taken.
* De student ziet het belang van de opgedane programmeerkennis in voor de vakgebieden van de ingenieurswetenschappen (bouwkunde, mechanica, fysica, chemie, ...). Hij weet zijn creativiteit en inventiviteit in te zetten voor het bedenken van nuttige programma’s in het kader van deze ingenieursdisciplines.
Toepassing van kennis en inzicht:
* De student kan een rekenkundig probleem vertalen naar een algoritme.
* De student beheerst een moderne programmeertaal. Hij kan algoritmen van een gemiddelde complexiteit vertalen naar een python of java programma. Hij kan zijn programma debuggen en testen.
* De student kan een programma van een zekere omvang construeren dat voldoet aan de kwaliteitseisen van gestructureerd programmeren.
* De student kan bestaande bibliotheken gebruiken die instaan voor basisfunctionaliteiten.
* De student kan zijn kennis uit de verscheidene ingenieursdisciplines inzetten voor het implementeren van programma’s.
Oordeelvorming:
* De student kan voor een gegeven opdracht oordelen over de bruikbaarheid van een gegeven programmeertechniek, datastructuur of algoritme en de voor- en nadelen van bepaalde keuzes inschatten.
Communicatie:
* De student kan zowel met informatici als niet-informatici reflecteren over programma’s van een gemiddelde complexiteit. Hij kan de werking van algoritmes duidelijk maken alsook de programmatorische keuzes.
* De student kan in een beperkt team samenwerken aan een programma van een zekere omvang.
* De student kan ervoor zorgen dat de broncode van zijn programma begrijpbaar is door het te structureren, van een goede naamgeving te voorzien en niet-triviale aspecten van commentaar te voorzien.
Leervaardigheden:
* De student kan snel een nieuwe programmeertaal aanleren doordat hij de brug kan slaan met de taalelementen aangeleerd in deze cursus.
* De student kan het gebruik van nieuwe bibliotheken aanleren op basis van de beschikbare documentatie.
De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 22% van het eindcijfer
Examen Schriftelijk bepaalt 56% van het eindcijfer
WPO Praktijkopdracht bepaalt 22% van het eindcijfer
Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:
Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:
Binnen de categorie WPO Praktijkopdracht dient men volgende opdrachten af te werken:
Evaluatie van dit OO bestaat voor uit projectwerk met bijhorende mondelinge verdediging, een praktisch oefeningenexamen en een schriftelijke/mondeling examen over de inhoud van de hoorcolleges.
Dit studiedeel maakt geen deel uit van vastgelegde afstudeervereisten. Het is aldus een vrij keuzevak.