Programmeertalen

Programming Languages

6 EC

Semester 2, periode 4

5062PROG6Y

Eigenaar Bachelor Informatica
Coördinator dr. L.T. van Binsbergen
Onderdeel van Bachelor Informatica, jaar 1Dubbele bachelor Wiskunde en Informatica, jaar 1Pre-master Software Engineering, jaar 1
Links Zichtbare leerlijnen

Studiewijzer 2025/2026

Globale inhoud

Voor een informaticus is een programmeertaal een essentieel gereedschap. Informatici leren echter tijdens hun studie noodzakelijkerwijs een beperkt aantal programmeertalen. Er zijn echter vele honderden programmeertalen in omloop die elk hun eigen geschiedenis hebben en toepassingsgebieden. Programmeertalen kunnen in klassen worden onderverdeeld langs verschillende dimensies. Zo zijn er imperatieve talen, declaratieve talen, object georiënteerde talen, functionele talen, logische talen, prototype talen, talen ontworpen voor implementatie van parallelle en gedistribueerde algoritmen, talen speciaal voor administratieve applicaties, database talen, markup languages en nog heel veel meer. Bovendien combineren sommige programmeertalen eigenschappen van verschillende van dit soort "paradigma's". Van een informaticus wordt verwacht dat die zich snel een programmeertaal kan eigen maken. Er komen immers voortdurend nieuwe talen bij en deze kunnen heel snel populair worden. Er zijn ook informatici die hun eigen talen ontwerpen, bijvoorbeeld als er voor een gesteld probleem of taak geen perfecte taal beschikbaar is -- "met gereedschap maak je gereedschap".

Tijdens dit vak brengen we verschillende programmeertalen voor het voetlicht . De programmeertalen omvatten in ieder geval declaratieve, gedistribueerde en object georiënteerde talen. Het doel van deze cursus is de student bij te brengen dat de keuze van de programmeertaal een wezenlijk onderdeel is van het oplossen van een programmeer-probleem, en dat er voor elk doel wel een programmeertaal is of gemaakt kan worden. Bovendien zullen we overeenkomsten en verschillen tussen talen bespreken op een conceptueel niveau, hetgeen het makkelijker moet maken in de toekomst nieuwe talen te leren. Daarnaast wordt er aandacht besteed aan het toepassingen van handleidingen en documentatie. In het vak worden technische vaardigheden gedoceerd (programmeren in talen van verschillende aard) en is er daarnaast aandacht voor conceptuele analyses van de ontwerpkeuzes die voor bestaande talen zijn gemaakt. 

Studiemateriaal

Overig

  • Collegeslides en referenties naar online materiaal worden gepubliceerd op Canvas.

  • Het materiaal voor het Practicum Academische Vaardigheden staat op de aparte Canvas pagina genaamd 'Practicum Academische Vaardigheden INF jaar 1' en de website http://practicumav.nl/

Leerdoelen

  • Idiomatische computerprogramma's schrijven in de behandelde programmeertalen.
  • De behandelde programmeertalen vergelijken op basis van concepten en paradigma's.
  • De voor- en nadelen afwegen van de keuze voor een programmeertaal in het algemeen en om een specifiek probleem op te lossen.
  • Informatie toepassen vanuit handleidingen en documentatie over programmeertalen.

Onderwijsvormen

  • Hoorcollege
  • Laptopcollege
  • Zelfstudie

Tijdens de meeste hoorcolleges zullen de studenten worden voorbereid op het maken van de praktische opdrachten door een specifieke taal in detail te behandelen. Andere hoorcolleges hebben specifiek als doel vergelijkingen te trekken tussen de behandelde talen, maar ook andere talen binnen het op dat moment behandelde paradigma. In de laptopcolleges werken de studenten aan hun programmeervaardigheden in de behandelde talen.

Verdeling leeractiviteiten

Activiteit

Aantal uur

Hoorcollege

30

Laptopcollege

28

Zelfstudie

110

Aanwezigheid

  • Voor sommige studieonderdelen geldt een aanwezigheidsplicht. Indien er een aanwezigheidsplicht geldt, dan staat dit aangegeven in de studiegids die te raadplegen is via de UvA-website. De onderbouwing voor, en invulling van, deze aanwezigheidsplicht kan per vak verschillen, en is indien van toepassing opgenomen in deze studiewijzer.
  • Aanvullende eisen voor dit vak:

    Aanwezigheid tijdens de werkgroepen is cruciaal voor succesvolle deelname aan het vak maar is niet verplicht. Er zal niet op aanwezigheid worden gecontroleerd en aanwezigheid zal ook geen (direct) invloed hebben op de beoordeling. 

    Toetsing

    Onderdeel en weging Details

    Eindcijfer

    0%

    Case Study: Go

    0%

    Case Study: Java

    6%

    Erlang

    6%

    Haskell

    6%

    Python

    6%

    Rust

    76%

    Tentamen

    Moet ≥ 5 zijn, NAP bij geen cijfer

    75%

    24-03-2026 Tentamen

    NAP bij geen cijfer

    25%

    Deeltentamen

    NAP bij geen cijfer

    Eindcijfer na herkansing

    76%

    Hertentamen

    Moet ≥ 5 zijn, NAP bij geen cijfer

    6%

    Erlang

    6%

    Haskell

    6%

    Python

    6%

    Rust

    Er zijn vier practicumopdrachten, twee case study opdrachten (digitale toetsen op Ans), en twee deeltentamens. Alle onderdelen zijn beoordeeld met een cijfer tussen de 1 en 10.

    Voor het tentamen en hertentamen geldt een minimum eis van een 5. De deeltentamens zijn verplicht. Deze eis geldt niet voor de deeltentamens (oftewel, een gebrek bij het ene deeltentamen kan gecompenseerd worden door het andere).

    De deadlines zijn strikt, te laat ingeleverde opgaven worden niet nagekeken. Het relatieve gewicht staat hierboven aangegeven. De case study opdrachten zijn formatief en tellen dus niet mee.

    Er is één hertentamen dat de cijfers voor het tentamen (de twee deeltentamens) vervangt. Voor de practicumopdrachten en case studies bestaan geen herkansingsmogelijkheden. 

    Inzage toetsing

    De manier van inzage wordt via de digitale leeromgeving gecommuniceerd.

    Opdrachten

    Opgave 1: Python

    • Zie Canvas

    Case Study 1: Java

    • Zie Canvas

    Opgave 2: Rust

    • Zie Canvas

    Opgave 3: Haskell

    • Zie Canvas

    Case Study: Go

    • Zie Canvas

    Opgave 4: Erlang

    • Zie Canvas

    De practicumopdrachten worden individueel gedaan. Feedback wordt gegeven via Canvas (CodeGrade en Speedgrader).

    De case studies worden individueel op Ans uitgevoerd. Studenten kunnen hun eigen werk nakijken via de rubric op Ans.

    Alle opdrachten worden beoordeeld met een cijfer van 1 tot en met 10. 

    Fraude en plagiaat

    Over het algemeen geldt dat elke uitwerking die je inlevert ter verkrijging van een beoordeling voor een vak je eigen werk moet zijn, tenzij samenwerken expliciet door de docent is toegestaan. Het inzien of kopiëren van andermans werk (zelfs als je dat hebt gevonden bij de printer, in een openstaande directory of op een onbeheerde computer) of materiaal overnemen uit een boek, tijdschrift, website, code repository of een andere bron - ook al is het gedeeltelijk - en inleveren alsof het je eigen werk is, is plagiaat.

    We juichen toe dat je het cursusmateriaal en de opdrachten met medestudenten bespreekt om het beter te begrijpen. Je mag bronnen op het web raadplegen om meer te weten te komen over het onderwerp en om technische problemen op te lossen, maar niet voor regelrechte antwoorden op opgaven. Als in een uitwerking gebruik is gemaakt van externe bronnen zonder dat een bronvermelding is vermeld (bijvoorbeeld in de rapportage of in commentaar in de code), dan kan dat worden beschouwd als plagiaat.

    Deze regels zijn er om alle studenten een eerlijke en optimale leeromgeving aan te kunnen bieden. De verleiding kan groot zijn om te plagiëren als de deadline voor een opdracht nadert, maar doe het niet. Elke vorm van plagiaat wordt bestraft. Als een student ernstige fraude heeft gepleegd, kan dat leiden tot het uitschrijven uit de Universiteit. Zie voor meer informatie over het fraude- en plagiaatreglement van de Universiteit van Amsterdam: www.student.uva.nl

    Weekplanning

    Weeknummer Programmeertaal Deadline
    Deadline
    Deadline
    1 Intro / Python Python puzzel    
    2 Python / Rust Python opdracht Rust puzzel Case study Java
    3 Rust Rust opdracht     
    4  Haskell Haskell puzzel  Deeltentamen 1 (25%)  
    5  Haskell Haskell opdracht    
    6  Erlang Erlang puzzel Case Study Java  
    7  Erlang Erlang opdracht    
    8 - Deeltentamen 2 (75%)    

    De precieze deadlines zijn op Canvas te vinden. De tentamens staan op het rooster.

    Aanvullende informatie

    Aanbevolen voorkennis

    Studenten worden geacht reeds te kunnen programmeren in een imperatieve taal (zoals Java/C). Vakken vergelijkbaar met Inleiding Programmeren (5062INPR6Y) en Datastructuren (5062DATA6Y) bieden een goede voorbereiding voor dit vak.

    Practicum Academische Vaardigheden

    Dit vak zal inhoud geven aan schrijfopdrachten die de INF studenten uitvoeren voor het vak AVI

    Contactinformatie

    Coördinator

    • dr. L.T. van Binsbergen

    Docenten

    • Thomas van Binsbergen (tevens coordinator)
    • Bas Terwijn
    • Christopher Esterhuyse 
    • Taco Walstra
    • Adeela Ashraf (lab coordinator)