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.

Semester
1e en 2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Nederlands
Tentamen
Ja
Faculteit
Faculteit Ingenieurswetenschappen
Verantwoordelijke vakgroep
Elektronica en Informatica
Onderwijsteam
Jan Lemeire (titularis)
Bart Jansen
Ruben De Smet
Colas Schretter
Tobias Birnbaum
Onderdelen en contacturen
36 contacturen Hoorcollege
40 contacturen Werkcolleges, practica en oefeningen
27 contacturen Zelfstudie en externe werkvormen
Inhoud

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 

- uitdrukking/expression 
- toekenning/assignment
- functies (definitie en call)
 
Types, operatoren en built-in functies 
 
- int, float
- str 
- list 
- tuple 
- bool
 
Les 2
Modules 
Objecten en methodes
 
Les 3
Control flow statements 
- keuzes maken: if 
- iteraties
   o counted loops: for 
   o conditional loops: while
 
Les 4
Iteraties onder controle houden 
Recursie 
Werken met bestanden/files 
Fouten opsporen, onder controle houden en debuggen
 
Les 5
Algoritmes 
- zoeken/search
   o linear search
   o binary search 
- sort/sorteren
   o selection en insertion sort 
   o merge sort
 
Les 6
Python Wrap Up 
Een laatste algoritme van naaldje tot draadje

•  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.

Studiemateriaal
Handboek (Vereist) : Practical Programming, An Introduction to Computer Science Using Python 3.6, Jennifer Campbell, Paul Gries, Jason Montojo, and Greg Wilson, 3de, The Pragmatic Programmers, 9781680502688, 2017
Digitaal cursusmateriaal (Vereist) : De slides en aanvullend studiemateriaal voor het eerste semester, http://www.etro.vub.ac.be/Education/Courses/Python/
Cursustekst (Vereist) : Informatica, Deel I: Java en object geprogrammeerd oriënteren, Jan Lemeire, VUB, 2220170006161, 2019
Digitaal cursusmateriaal (Vereist) : De slides en aanvullend studiemateriaal voor het tweede semester, http://parallel.vub.ac.be/education/java
Cursustekst (Vereist) : Informatica, deel II. Algoritmen en datastructuren -  deel III. Technologie,historiek en economische aspecten van de informatica, Jan Lemeire, VUB, 2220170006178, 2019
Bijkomende info

De slides en aanvullend studiemateriaal voor het eerste semester zijn te vinden op http://www.etro.vub.ac.be/Education/Courses/Python/

Voor het tweede semester is dit op http://parallel.vub.ac.be/education/java
 
De volgende 3 werken zijn te koop in de Standaard Student Shop
 
1) "Practical Programming: An introduction to Computer Science using Python" geschreven door Jennifer Campbell, Paul Gries, Jason Montojo, Greg Wilson (eerste semester).
 
2) Informatica deel I: Java en object-georienteerd programmeren
 
3) Informatica deel II: "Algoritmes en datastructuren" en deel III: "technologie, historiek en economische aspecten" (tweede semester)
Leerresultaten

Algemene competenties

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.

Beoordelingsinformatie

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:

  • theorieexamen mondeling met een wegingsfactor 1 en aldus 22% van het totale eindcijfer.

    Toelichting: schriftelijk examen over de inhoud van de hoorcolleges van het eerste semester

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • oefeningenexamen 1 met een wegingsfactor 17 en aldus 17% van het totale eindcijfer. Dit betreft een tentamen.

    Toelichting: praktisch oefeningenexamen over practica eerste semester
  • schrif ex inhoud HOC 1 met een wegingsfactor 17 en aldus 17% van het totale eindcijfer.

    Toelichting: mondeling examen over de hoorcolleges van het tweede semester
  • oefeningenexamen 2 met een wegingsfactor 22 en aldus 22% van het totale eindcijfer. Dit betreft een tentamen.

    Toelichting: praktisch oefeningenexamen over practica eerste semester

Binnen de categorie WPO Praktijkopdracht dient men volgende opdrachten af te werken:

  • project met mond verdediging met een wegingsfactor 1 en aldus 22% van het totale eindcijfer.

    Toelichting: projectwerk met bijhorende mondelinge verdediging

Aanvullende info mbt evaluatie

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.

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Dit studiedeel maakt geen deel uit van vastgelegde afstudeervereisten. Het is aldus een vrij keuzevak.