Programmeertalen

Programming Languages

6 EC

Semester 2, periode 4

5062PROG6Y

Eigenaar Bachelor Informatica
Coördinator dr. Ana Oprescu
Onderdeel van Bachelor Informatica, jaar 1Dubbele bachelor Wiskunde en Informatica, jaar 1Pre-master Software Engineering, jaar 1

Studiewijzer 2019/2020

Globale inhoud

Voor een informaticus is een programmeertaal wat een hamer is voor de timmerman, een stuk gereedschap. Informatici leren echter tijdens hun studie noodzakelijkerwijs een zeer beperkt aantal programmeertalen, en als je alleen een hamer hebt gaat elk probleem vanzelf op een spijker lijken. Er zijn echter vele honderden programmeertalen in omloop, zoveel dat programmeertalen in klassen worden onderverdeeld en ook nog eens langs verschillende dimensies. Er zijn imperatieve talen, declaratieve talen, er zijn 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. Van de informaticus wordt verder nog verwacht in staat te zijn zelf een taal te ontwerpen als er voor het gestelde probleem geen goede taal beschikbaar is "met gereedschap maak je gereedschap".

Tijdens dit vak brengen we zeven programmeertalen voor het voetlicht, elke week één. De programmeertalen omvatten in ieder geval imperatieve, logische en functionele talen. De precieze invulling daarvan kan van jaar tot jaar verschillen. 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 het probleem, en dat er voor elk doel wel een programmeertaal is of gemaakt kan worden. Hierbij zijn naast het programmeren ook de paradigma's en hun impact op de keuzes tijdens het ontwerpen van programmeertalen en de programma's die hiermee geschreven kunnen worden een belangrijk onderdeel van het vak.

Studiemateriaal

Overig

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

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

Leerdoelen

  • elementaire computerprogramma's schrijven in de behandelde programmeertalen
  • de behandelde programmeerparadigmas herkennen en vergelijken op hoog niveau
  • de behandelde programmeertalen en hun link naar paradigmas herkennen en vergelijken op hoog niveau
  • gegeven een probleem de voor- en nadelen van een mogelijke oplossing in de behandelde programmeertalen/paradigma's benoemen
  • zelfstandig ontbrekende informatie vinden, bijvoorbeeld in handleidingen of op internet, en deze toepassen

Onderwijsvormen

  • Hoorcollege
  • Werkcollege
  • Zelfstudie
  • Practicum Academische Vaardigheden (PAV): 1 of 2 contacturen per week plus zelfstudie

Zelf-studie: a) pre-lecture activiteit, om de syntax van een taal te leren en de basis te leggen voor de kennis van het paradigma en de programmeertaal op een hoger niveau; b) opdrachten, het ontwikkelen van novice skills in de programmeertaal.

Lecture: a) algemene lecture over het paradigma en de hieraan gekoppelde programmeertaal; b) lecture over taaleigen onderdelen van de programmeertaal en Q&A over practische aspecten van het programmeren in specifieke programmeertaal.

Laptop seminar: Begeleidt programmeren aan de opdracht.

AVI: Rapporteren over en reflecteren op enkele opdrachten.

Verdeling leeractiviteiten

Activiteit

Aantal uur

Hoorcollege

30

Laptopcollege

28

Tentamen

3

Zelfstudie

107

Academische vaardigheden

Zie AVI.

Aanwezigheid

Aanwezigheidseisen opleiding (OER-B):

  • Voor practica en werkgroepbijeenkomsten met opdrachten geldt een aanwezigheidsplicht. Wanneer studenten niet voldoen aan deze aanwezigheidsplicht kan dit als gevolg hebben dat het onderdeel niet met een voldoende kan worden afgerond.

Aanvullende eisen voor dit vak:

Alle eisen staan op Canvas.

Toetsing

Onderdeel en weging Details

Eindcijfer

60%

Team Assignments

Moet ≥ 5 zijn

1 (14%)

Opgave 1: Bash Teams

1 (14%)

Opgave 2: Haskell Teams

1 (14%)

Opgave 4: Python Teams

1 (14%)

Opgave 3: Prolog Teams

1 (14%)

Opgave 5: Erlang Teams

1 (14%)

Opgave 6: Go Teams

1 (14%)

Opgave 7: C++ Team

40%

Tentamen

Moet ≥ 5.5 zijn

De 7 team practicumopgaven worden beoordeeld met een cijfer tussen de 1 en 10. De 7 individuele practicumopgaven worden beoordeeld met pass/fail. Ten hoogste twee individuele practicumopgaven mogen met een fail worden afgesloten. Alle deadlines zijn strikt, te laat ingeleverde opgaven worden niet nagekeken.

Inzage toetsing

De manier van inzage wordt via de digitale leeromgeving gecommuniceerd.

Opdrachten

Opgave 1: Bash

  • Zie Canvas

Opgave 2: Haskell

  • Zie Canvas

Opgave 3: Prolog

  • Zie Canvas

Opgave 4: Python

  • Zie Canvas

Opgave 5: Erlang

  • Zie Canvas

Opgave 6: Go

  • Zie Canvas

Opgave 7: C++

  • Zie Canvas

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 team opgave
1 Bash Sun 09.02.2020 18:00
2 Haskell Sun 16.02.2020 18:00
3  Prolog Sun 23.02.2020 18:00
4  Python Sun 01.03.2020 18:00
5  Erlang Sun 08.03.2020 18:00
6  Go Sun 15.03.2020 18:00
7  C++ Sun 22.03.2020 18:00
8  Tentamen  

 

Rooster

Het rooster van dit vak is in te zien op DataNose.

Aanvullende informatie

Aanbevolen voorkennis

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

Aanwezigheidsplicht

Aanwezigheid tijdens de laptopcolleges is verplicht voor eerstejaars Informaticastudenten.

Academische Vaardigheden Informatica

Dit vak geeft inhoud aan het lesprogramma van Academische Vaardigheden Informatica (AVI).

Verwerking vakevaluaties

Hieronder vind je de aanpassingen in de opzet van het vak naar aanleiding van de vakevaluaties.

We have introduced gradathon sessions such that the individual feedback is given within 24 hours from the submission of the assignment. We have introduced additional lectures on Thursdays, we have introduced a Recap session to prepare students for the exam. 

CodeGrade has been fitted with AutoTests both for functionality, as well as for style.

Contactinformatie

Coördinator

  • dr. Ana Oprescu

Docenten

  • Ana Oprescu
  • Koen van Elsen
  • Bas Terwijn

Staff

  • Koen van Elsen
  • Damian Frölich BSc
  • Frederick Kreuk
  • Daan Kruis BSc
  • S. van Oostveen
  • Bas Terwijn
  • B. Westerveld
  • Ivan de Wolf