Dit vak begint bij het begin. Je leert over programmeren in het algemeen, en je leert programmeren in drie programmeertalen. Je maakt kennis met allerlei technieken voor het omzetten van een probleemomschrijving naar een programma dat het probleem oplost. Je leert over het verband tussen de computer en de programma's die er op draaien. De opdrachten beslaan het grootste deel van het vak en gaan over allerlei problemen uit bijvoorbeeld de wereld van cryptografie, biologie, economie en gaming.
De groepscoördinatoren van dit vak zijn Robin Langerak en Mees de Vries, en de examinator is Martijn Stegeman. Zij geven het vak vorm en verzorgen de organisatie. Je kunt ze bereiken via e-mail op progik@mprog.nl.
Bij dit vak wordt van je verwacht dat je:
- alle opdrachten in stappen maakt zoals beschreven onder werkwijze
- alle oefeningen doet
- alle werkgroepen bijwoont
Bovendien is het nodig dat je zichtbaar actief meedoet en leert van het vak. Dat doe je onder andere op de volgende manieren:
- wekelijks een aantal keer vragen stellen of beantwoorden op Ed
- goed voorbereid naar de werkgroepen komen
- laag scoren op de "plagiaatschaal" {: start="4"}
Op die manier kunnen je mentor en de docenten een goed beeld vormen van jouw voortgang en constateren dat je aan de leerdoelen van het vak hebt voldaan. Er is daarom ook niet voorzien in een schriftelijk tentamen.
Bij deze cursus wordt je cijfer bepaald door de uitwerkingen van programmeeropdrachten. De opdrachten zijn verdeeld over modules, die als volgt meewegen:
onderdeel | telt mee |
---|---|
Module 0 | niet (moet wel af) |
Module 1 | niet (moet wel af) |
Module 2 | 1/5 deel |
Module 3 | 1/5 deel |
Module 4 | 1/5 deel |
Module 5 | 1/5 deel |
Module 6 | 1/5 deel |
Je moet aan alle bovenstaande verwachtingen voldoen om een cijfer te krijgen voor het vak, tenzij je een schriftelijke uitzondering hebt gekregen van de examinator of coördinator. Voel je vrij om te overleggen of jouw omstandigheden een uitzondering rechtvaardigen (via een mail naar progik@mprog.nl).
Lukt het niet om systematisch laag te scoren op de plagiaatschaal, dan moet je je opdrachten bij de afloop van het vak presenteren en er vragen over beantwoorden, zodat er geconstateerd kan worden dat je voldoet aan de leerdoelen.
Je zit bij dit vak in een team met acht tot twaalf andere studenten. In het team zul je onder andere samen werken aan het ontwerpen van oplossingen voor de opdrachten en het bespreken en verbeteren van jouw code.
Je mentor is een student die het vak eerder heeft gevolgd of een docent die alles over onze cursus weet. Je mentor helpt je wegwijs maken, doet voor hoe je het beste de opdrachten kunt aanpakken, kijkt je werk na, en kan jouw vragen over de organisatie van het vak beantwoorden. Je ontvangt van je mentor een uitnodiging voor een chatomgeving (Slack) waar je gedurende de week contact kunt onderhouden met je team.
Met je mentor heb je elke week een werkgroep waar alle teamleden (met video) aan deelnemen. Via Slack zal je mentor laten weten wanneer de eerste online-werkgroep is, waar je kennis maakt met je team. Als je een probleem ziet met het gebruik van een webcam dan moet je vooraf contact opnemen met de docenten om een oplossing te verzinnen, omdat je anders niet kunt meedoen.
In dit vak ga je verreweg de meeste tijd besteden aan het oplossen van programmeerproblemen. Het vak bestaat uit zeven modules die weer bestaan uit enkele opdrachten. Je werkt in fases aan de opdrachten:
- ontwerp een oplossing voor een opdracht, samen met een partner uit je team
- implementeer deze oplossing, zonder partner, maar met allerlei mogelijkheden om hulp te krijgen
- review met een partner uit je team elkaars uitwerkingen, en verbeter je eigen code
- ontvang je beoordeling en schrijf een reflectie
Iedere week tijdens de werkgroepen neemt je mentor het initiatief om te kijken wie met welke partner gaat samenwerken. Voor de reviews in fase 3 wordt zelfs in een vast schema gerouleerd. Zo doe je ervaring op met verschillende manieren om de opdrachten uit te werken en met verschillende ideeën rondom goede stijl.
Tijdens dit vak zul je vaak de hulp inroepen van de assistenten en medestudenten. Er zijn diverse opties voor het stellen van vragen. De beste optie hangt af van het soort vraag dat je wil stellen.
Slack: direct contact met je team.
- onderlinge support
- snelle vragen over deadlines, contact met samenwerkpartner
- mentor is niet doorlopend beschikbaar!
Ed: altijd beschikbaar, de belangrijkste plek voor hulp.
- vragen over wat er in de opdracht bedoeld wordt
- technische vragen over programmeren en bugs
- vragen over de oefeningen in het basisboek
- medestudenten en assistenten denken mee
Assistentie: direct contact met een assistent, voor moeilijk te formuleren vragen.
- hulp via een videogesprek waar je je scherm kunt delen
- je weet niet waar te beginnen of een onvindbare bug
- moeite met verzinnen oplossing (met partner)
- dagelijks 13-17 uur, wachttijd kan oplopen
Helpdesk: direct contact met een assistent, voor technische problemen.
- problemen met je computer
- problemen met de werking van je online IDE
- hele nare bugs
- aanmelden via Calendly
Mail: contact met de vakcoördinatoren via progik@mprog.nl.
- maken van persoonlijke planningsafspraken
- meedenken over grote problemen met het vak
- andere officiële zaken
- administratie na afloop van het vak
Kom je helemaal niet verder en heb je even geen hulp?
Juist even niet aan de opdracht werken kan je verder helpen!-
Neem een halfuurtje echt even afstand van je computer; dit helpt je brein afstand nemen van het probleem. Met een frisse blik kom je dan toch weer verder.
-
Ga even door met de volgende opdracht van de module om te kijken hoe je daar mee gaat.
-
Of ga oefenen in het basisboek, want dit staat helemaal los van de opdrachten.
Elke module moet op de vooraf bepaalde deadline volledig werkend ingeleverd zijn, waarbij de correcte werking automatisch wordt getest met check50
. Daarna volgt een deadline waarvoor je je werkende programma's verbetert en nogmaals inlevert.
module | deadline oplossing | deadline verbeterd |
---|---|---|
Module 0 | wo 2 sep 17:59 | - |
Module 1 | vr 4 sep 17:59 | - |
Module 2 | vr 11 sep 17:59 | di 15 sep 20:59 |
Module 3 | vr 18 sep 17:59 | di 22 sep 20:59 |
Module 4 | vr 25 sep 17:59 | di 29 sep 20:59 |
Module 5 | wo 7 okt 17:59 | do 8 okt 20:59 |
Module 6 | vr 16 okt 17:59 | ma 19 okt 20:59 (!) |
Module 7 | vr 16 okt 17:59 | ma 19 okt 20:59 (!) |
Wat als ik ziek ben of achterloop?
In het geval van planningsproblemen of een dag ziek zijn kun je in overleg met je mentor de deadline één of twee dagen opschuiven. Je opdracht wordt dan gewoon nagekeken. Breng altijd direct je mentor op de hoogte en vraag om advies over het halen van verdere deadlines. Systematisch achterlopen is niet mogelijk.
Nog later ingeleverd werk kan normaliter niet geaccepteerd worden, behalve in medische noodgevallen. Dat betekent dat je het vak niet kunt halen als je het tempo echt niet bijhoudt. Denk je dat dat gaat gebeuren, vraag dan meteen advies aan de docenten via progik@mprog.nl. Vaak zijn er nog wel oplossingen te verzinnen.
Raak je helemaal uit tempo? Dan kun je overwegen om de stap naar Parttime te zetten. Het is belangrijk dat je dit snel bespreekt met een docent. Ook hierover kunnen zij je adviseren.
Wat als ik al klaar ben?
Als je toch al vrij veel ervaring hebt of het programmeren ligt je gewoon heel lekker, dan is het de bedoeling dat je af en toe via Ed andere studenten helpt met hun vragen. Ook kun je afspreken met studenten uit je team als zij hulp nodig hebben. Let daarbij wel goed op de regels voor samenwerken. Andere studenten helpen is één van de verwachtingen voor het halen van dit vak, dus neem de taak serieus.
Modules 2 t/m 6 kunnen elk 1--6 punten opleveren. Voor elke module zijn diverse aspecten aangegeven op basis waarvan de punten voornamelijk (maar niet uitsluitend) worden bepaald. De aspecten gaan over codekwaliteit, waarover je in module 1 meer leert. De schaal is als volgt:
- uitzonderlijk goede kwaliteit op basis van een doordacht ontwerp
- zeer goede kwaliteit, beperkt ruimte voor verbetering
- degelijke kwaliteit op de genoemde aspecten, met ruimte voor verbetering
- net voldoende aandacht voor de genoemde aspecten, erg veel ruimte voor verbetering
- enige zichtbare aandacht voor een beperkt aantal aspecten
- onvoldoende zichtbare aandacht voor de kwaliteitsaspecten {: start="6" reversed=""}
Het eindcijfer voor deze cursus wordt bepaald door het totaal aantal punten voor de modules. De puntenscore leidt tot een cijfer tussen 1 en 10, afgerond op halven, zoals gebruikelijk.
Module 7 is optioneel maar kan 3 extra punten opleveren. De opdracht wordt nagekeken zoals normaal en de punten tellen voor de helft mee als bonus.
Bij veel modules bieden we ook een "extra opdracht" aan. Deze is bedoeld voor studenten die zich wat comfortabeler voelen met programmeren en extra uitdaging zoeken. Wil je die inleveren, zorg dan dat je éérst de andere opdrachten maakt en inlevert. Dat zijn namelijk de opdrachten waarvoor je een review doet en die beoordeeld zullen worden.
Toch kan het leuk zijn om de extra opdrachten te doen, omdat het uitdagende puzzels zijn waar je veel van leert. Je krijgt 1 punt extra voor een module als je vóór de deadline de extra opdracht hebt ingeleverd.
Het is niet mogelijk om via video-assistentie hulp te krijgen voor de extra opdrachten. Wel kun je er vragen over stellen via Ed. Het is aan te raden om te kijken of je er medestudenten bij kunt betrekken en samen de oplossing te ontwerpen voordat je deze zelf gaat implementeren in code.
In hoorcolleges bespreekt David Malan van Harvard de theorie waarmee je programmeerproblemen kunt oplossen en die je voorbereidt op de oefeningen. De video's zijn een voorbereiding op de opdrachten en bevatten allerlei voorbeelden die je vaak direct kunt toepassen.
Werkgroepen zijn bijeenkomsten van zo'n 30--60 minuten met je mentor. In de werkgroepen krijg je de kans om samen de voortgang te bespreken, de oefeningen door te nemen, tips uit te wisselen over het aanpakken van problemen en om je medestudenten en mentor beter te leren kennen. Gebruik van camera is vereist (laat weten als je omgeving niet geschikt is om te kunnen videobellen, dan kijken we of we een alternatieve werkplek kunnen vinden).
Wekelijks zijn er oefeningen waarin de stof van de vorige weken wordt herhaald en aangescherpt. Je studeert in het Basisboek Programmeren dat vrij beschikbaar is. Vragen over de oefeningen stel je via Ed. De oefeningen worden inhoudelijk besproken tijdens de werkgroepen.
Wil je naast de videocolleges nog eens rustig lezen over de verschillende onderwerpen, dan kunnen de volgende boeken je verder op weg helpen. Ze zijn niet noodzakelijk voor het halen van het vak.
Voor mensen die nog nooit geprogrammeerd hebben
C Programming Absolute Beginner's Guide, Third Edition
Greg Perry, Dean Miller
Pearson Education, 2014
ISBN 9780789751980
Voor studenten met iets meer ervaring
Programming in C, Fourth Edition
Stephen G. Kochan
Pearson Education, 2015
ISBN 9780321776419
De basis van alles wat je inlevert moet jouw eigen intellectuele werk zijn, tenzij anders aangegeven in een opdracht.
Natuurlijk is het nuttig om interactie te hebben met je medestudenten en kan dit helpen bij het beheersen van de stof. Nog sterker, we stimuleren dit door je te vragen samen een ontwerp te maken van je programma's vóórdat je ze zelfstandig implementeert. Maar er is een grens tussen het vragen van hulp aan een ander en het inleveren van werk van een ander. Hier karakteriseren we beide kanten van die grens.
Je mag niet samenwerken aan de implementatie van je programma's. Uitzondering is dat je medestudenten om hulp mag vragen, zolang dat er niet op neer komt dat een ander een deel van het werk voor jou doet. Over het algemeen mag je, als je om hulp vraagt, jouw code laten zien, maar kijk je niet naar de code van een ander. Je laat je dus ook niks voorzeggen.
Waar de grens onduidelijk is vragen we je om "redelijk" te handelen. Hieronder vind je een incomplete lijst van voorbeelden die een beeld schetsen van welke handelingen we als redelijk en onredelijk bestempelen. Twijfel je of een handeling redelijk is, vraag het, en wacht tot je per e-mail toestemming hebt gekregen van de coördinator. Als je onredelijk handelt dan kan dit leiden tot een melding bij de examencommissie.
Voorbeelden van **redelijke** acties
-
Praten met je klasgenoten over de opdrachten in het Nederlands (of een andere gesproken taal).
-
Het cursusmateriaal bespreken met anderen om het beter te begrijpen.
-
Een klasgenoot helpen bij het debuggen tijdens een laptopcollege of daarbuiten, of zelfs online, door het bekijken, compileren of draaien van zijn of haar code, zelfs op je eigen computer.
-
Het in je uitwerking opnemen van een paar regels code die je online of ergens anders vindt, gegeven dat deze regels niet de essentie van de opdracht vormen en dat je de bron van de code vermeldt.
-
Het inzien van tentamens van voorgaande jaren en oplossingen daarvan.
-
Code die jij hebt geschreven versturen of laten zien aan iemand anders, wellicht een klasgenoot, zodat deze jou kan helpen bij het debuggen.
-
Het online delen van een paar regels van jouw code zodat anderen wellicht kunnen helpen met debuggen.
-
Een aan het vak verbonden assistent om hulp vragen.
-
Naar het internet gaan voor tutorials buiten het vak, voor referenties, en voor oplossingen bij technische problemen, maar niet voor gehele oplossingen voor (de essentie van) opdrachten.
-
Het uittekenen of uitwerken van oplossingen op een whiteboard door middel van diagrammen of pseudocode, maar niet "echte" code.
-
Werken met (en zelfs betalen voor) een tutor om je te helpen met het vak, gegeven dat de tutor niet het werk voor je doet.
Voorbeelden van **onredelijke** acties
-
Een oplossing van een opdracht inzien voordat je jouw opdracht hebt ingeleverd.
-
Een klasgenoot vragen om zijn of haar oplossing, voordat je jouw opdracht hebt ingeleverd.
-
Het decompileren, deobfusceren, of demonteren van een "staff" oplossing van een opdracht.
-
Vergeten de bron te citeren van code of technieken die je hebt opgenomen van buiten de lessen van dit vak, en hebt geïntegreerd in je eigen werk, zelfs als je wel de andere restricties aanhoudt.
-
Het aan een klasgenoot geven of laten zien van een oplossing voor een opdracht waar hij of zij (dus niet jij) moeite mee heeft.
-
Betalen, of het aanbieden om te betalen, voor het recht om werk van een ander als onderdeel van jouw eigen werk in te leveren.
-
Het beschikbaar stellen van oplossingen voor opdrachten van dit vak aan anderen die dit vak in de toekomst wellicht gaan volgen.
-
Het opzoeken van complete oplossingen voor opdrachten online of ergens anders.
-
Werk van een opdracht opsplitsen met een ander.
-
Werk van een ander, behalve een paar regels zoals eerder omschreven, inleveren.
-
Hetzelfde of bijna hetzelfde werk inleveren bij dit vak dat je hebt ingeleverd of gaat inleveren bij een ander vak.
-
Het inleveren van werk voor dit vak, waarbij je intentie is om dit ook ergens anders voor in te zetten (zeg voor een baan), zonder daar eerst toestemming voor te hebben gekregen van een docent.
-
Naar de oplossing voor een opdracht van iemand anders kijken, en vervolgens jouw oplossing daarop baseren.
Alle inzendingen worden wekelijks gecontroleerd met behulp van een detectiesysteem dat zoekt naar overeenkomsten in programmacode. Dat kunnen overeenkomsten zijn binnen de groep, met studenten van vorige jaren, of zelfs met code van internet.
Vinden we overeenkomsten, dan gaat de coördinator direct met je in gesprek om je voor te lichten en om af te spreken hoe je het vak zonder plagiëren kunt halen. Is er een vermoeden van plagiaat, dan moet dit gemeld worden bij de examencommissie.
In alle gevallen is het ons doel om dit soort situaties te voorkomen, omdat ze niet leerzaam zijn en veel werk opleveren voor iedereen. Vraag daarom vooral om advies als je denkt dat het misgaat! Er is vaak meer te redden dan je denkt, zelfs al is de deadline nabij.
De plagiaatregeling van de Universiteit van Amsterdam geeft algemene aanwijzingen over plagiaat en is de basis voor bovenstaande regelingen.
Onderstaande regelingen zijn wat streng geformuleerd, maar het is niet de bedoeling dat ze echt nodig zijn! Als je doorzet en de opdrachten afmaakt dan zou je de cursus gewoon moeten halen. Maak je er dus niet teveel zorgen over, maar neem wel direct contact op met je mentor als je denkt dat je in de problemen komt met de planning en/of je cijfers. Ook de coördinator spreekt graag met je als je advies nodig hebt.
Ik heb alles werkend, maar sta een onvoldoende en wil herkansen
-
Alle modules, ook die voldoende waren, moeten opnieuw worden ingeleverd.
-
Alle programma's moeten verbeterd worden ten aanzien van de kwaliteitsaspecten.
-
Het maximumcijfer is in dit geval een 6.0 en wordt alleen toegekend als alle programma's aantoonbaar van voldoende kwaliteit zijn (waarmee je aantoont het betreffende leerdoel gehaald te hebben).
Ik heb een opdracht niet werkend ingeleverd en wil herkansen
-
Herkansen kan pas vanaf het eerstvolgende semester waarin het vak wordt gegeven.
-
Alle modules die niet af waren (en dus niet beoordeeld) moeten opnieuw of alsnog worden ingeleverd.
-
Modules die af en beoordeeld waren mogen niet opnieuw worden ingestuurd. Het oude cijfer blijft staan, met uitzondering van opdrachten die zijn vervangen door nieuwe.
-
Vernieuwde opdrachten moeten op moment van herkansen gewoon gedaan worden.
-
Alle nieuwe beoordelingen vinden plaats zoals gangbaar op het moment van herkansen.
Ik heb niet aan de verwachtingen van het vak voldaan en wil herkansen
-
Hier gaat het bijvoorbeeld om het niet meedoen met werkgroepen.
-
Herkansen kan pas vanaf het eerstvolgende semester waarin het vak wordt gegeven.
-
Er moet een concrete afspraak zijn over het inhalen van minimumeisen vóór je start. Neem hiervoor contact op met de docenten.