Inleiding Programmeren

Introduction to Programming

6 EC

Semester 1, periode 1

5062INPR6Y

Eigenaar Bachelor Informatica
Coördinator dr. Steven de Rooij
Onderdeel van Bachelor Informatica, jaar 1Dubbele bachelor Wiskunde en Informatica, jaar 1Minor Informatica, jaar 1
Links Zichtbare leerlijnen

Studiewijzer 2025/2026

Globale inhoud

Programmeren betekent: een computationeel probleem oplossen door de computer een recept te geven dat vertelt hoe de beschikbare informatie moet worden verwerkt. Programmeren is een vaardigheid die oefening en ervaring vereist, en die je gedurende je opleiding voortdurend zult blijven ontwikkelen.
In dit inleidende vak behandelen we de programmeertaal C. De taal C is relatief eenvoudig, en derhalve geschikt als eerste programmeertaal. Bovendien vormt C een brug tussen een aantal verschillende belangrijke vakgebieden: met name bij de vakken computerorganisatie en besturingssystemen kom je moeilijk om de taal heen en zijn er veel synergieën.
Aan de ene kant leer je tijdens deze cursus de taal C in behoorlijk detail kennen; aan de andere kant leer je meer algemene principes van het programmeren die ook in andere programmeertalen relevant zijn, zoals het kiezen van een geschikte datarepresentatie, het opdelen van een probleem in kleinere deelproblemen, goede documentatie schrijven, het testen van code, debugging, en meer.

Studiemateriaal

Literatuur

  • Aanbevolen / niet verplicht: Kernighan and Ritchie, The C Programming Language, 2nd edition, Prentice Hall 1988.

Overig

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

Leerdoelen

  • Een computationeel probleem analyseren en in handelbare stukjes opdelen.
  • Oplossingen implementeren in de programmeertaal C.
  • Leesbare C-code schrijven.
  • Kunnen werken met pointers; begrip van stack en heap.
  • Fouten in programma's opsporen en verbeteren.
  • Specificaties voor code lezen en precies implementeren.
  • Design principes kennen en kunnen toepassen.

Onderwijsvormen

  • Hoorcollege
  • Zelfstudie
  • Zelfstandig werken aan bijv. project/scriptie
  • (Computer)practicum

Op het hoorcollege leer je in enig detail begrijpen hoe de taal werkt en welke overwegingen er bij het programmeren in C een rol spelen. De praktische vaardigheid van het programmeren leer je vooral op het practicum. Het beste begrip van de stof wordt verkregen door zoveel mogelijk de ervaringen tijdens het practicum te koppelen aan de informatie van het hoorcollege.

Verdeling leeractiviteiten

Hoorcollege 14* 2u = 28 uur
Practica 14 * 2u = 28 uur
Oefentoets 2 uur
Tentamen 2 uur
Zelfstudie 108 uur
Totaal 168 uur

De 'zelfstudie' betreft het verwerken van de hoorcollegestof, het zelfstandig afmaken van de practicumopdrachten, alsook het voorbereiden voor het tentamen.

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 bij de hoorcolleges wordt sterk aanbevolen.

    Aanwezigheid op het practicum is een voorwaarde voor deelname aan het hertentamen.

    Toetsing

    Onderdeel en weging Details

    Eindcijfer

    1 (50%)

    Tentamen digitaal

    Moet ≥ 5 zijn, Vereist

    1 (50%)

    Practicum eindcijfer

    Moet ≥ 5 zijn, Vereist

    Eindcijfer na herkansing

    1 (50%)

    Hertentamen digitaal

    Moet ≥ 5 zijn, Vereist

    1 (50%)

    Practicum eindcijfer

    Moet ≥ 5 zijn, Vereist

    Opdrachten: Tijdens de cursus maak je elke week een opdracht. Deze opdrachten staan op Canvas en moeten via Canvas ingeleverd worden. Meer details over de beoordeling vind je ook daar.

    Inzage toetsing

    De manier van inzage wordt via de digitale leeromgeving gecommuniceerd.

    Op Canvas wordt een inzagemoment voor het tentamen bekendgemaakt.

    Opdrachten

    Opgave 1: Introductie

    • Eerste kennismaking met de programmeeromgeving en de taal C

    Opgave 2: De Collatzreeks

    • Leren ontwerpen van functies

    Opgave 3: Conway's Game of Life

    • Omgaan met arrays

    Opgave 4: Vigenère

    • Een iets complexer project

    Opgave 5: Dr Quackerjack

    • Dit programma is een bende; kun jij het opruimen?

    Opgave 6: Eigen spel

    • Maak je eigen spel. Details op 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

    Onderwerpen
    1 Introductie; datatypes
    2 Control flow; functies
    3 Arrays en strings, pointers
    4 I/O; struct en enum; datarepresentatie
    5 Geheugen, recursie; modularisatie, header files en interfaces
    6 Live programmeren; tbd
    7

    Object orientatie en C++; voorbereiding examen

    8 Examen

     

    Contactinformatie

    Coördinator

    • dr. Steven de Rooij