Skip to content

Latest commit

 

History

History
252 lines (145 loc) · 14.5 KB

index.md

File metadata and controls

252 lines (145 loc) · 14.5 KB

Basis
objectgeoriënteerd
programmeren

Studiewijzer INF4ALL
Herfst 2021

Dit is een inleiding in het programmeren in de talen C en Python met behulp van objecten en classes. De cursus vraagt veel zelfstudie, maar docenten en assistenten zijn natuurlijk regelmatig beschikbaar op de momenten dat het pittig wordt.

De cursus is geschikt voor beginners, maar beginnen met programmeren kost simpelweg heel erg veel tijd. Tijdens de eerste weken krijg je een indruk van de studielast. Hou er rekening mee dat we ook af en toe even versnellen.

Naast het werken aan "problemen oplossen" is er veel aandacht voor codekwaliteit door middel van peer reviews en is er persoonlijke feedback op de opdrachtuitwerkingen. Het cursusmateriaal is tot slot open source en herbruikbaar voor de bovenbouw van het vwo.

De docent is Martijn Stegeman. Hij geeft het vak vorm en verzorgt de organisatie. Je kunt hem bereiken via e-mail op [email protected].

Verwachtingen

Bij dit vak wordt van je verwacht dat je:

  1. alle opdrachten in stappen maakt zoals beschreven onder werkwijze
  2. alle vrijdagse bijeenkomsten bijwoont
  3. voor de programmeervragen van het tentamen overwegend werkende oplossingen implementeert

Eindcijfer

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 1 x
Module 2 x
Module 3 x
Module 4 optioneel
  • Standaard eindcijfer = totaal punten / 18 * 9 + 1
  • Alternatief eindcijfer = totaal punten inclusief module 4 / 24 * 9 + 1

Je moet hoe dan ook aan alle bovenstaande verwachtingen voldoen om een cijfer te krijgen voor het vak, tenzij je een schriftelijke uitzondering hebt gekregen van de docent. Dat betekent vooral dat je géén opdrachten kunt overslaan. Voel je vrij om te overleggen of jouw omstandigheden een uitzondering rechtvaardigen (via een mail naar [email protected]).

Werkwijze

In dit vak ga je verreweg de meeste tijd besteden aan het oplossen van programmeerproblemen. Het vak bestaat uit modules die elk weer bestaan uit enkele opdrachten. Je werkt in fases aan de opdrachten:

  1. ontwerp een oplossing voor een opdracht, op basis van de gegeven informatie
  2. implementeer deze oplossing, en controleer steeds je oplossingen met de aangeboden tools
  3. review met een partner uit elkaars uitwerkingen, en verbeter je eigen code
  4. ontvang je beoordeling en schrijf een korte reflectie

Code reviews (punt 3) vinden plaats tijdens de bijeenkomsten. De partners worden steeds gerouleerd. Zo doe je ervaring op met verschillende manieren om de opdrachten uit te werken en met verschillende ideeën rondom goede stijl.

Vragen stellen

Tijdens dit vak zul je vaak de hulp inroepen van de assistenten en medestudenten. Bij de bijeenkomsten in Utrecht is geen tijd voor het assisteren bij de opdrachten. Zorg dus dat je de assistentie in de loop van de weken vóór de bijeenkomsten inplant.

Assistentie: direct contact met een assistent, voor moeilijk te formuleren vragen.

  • helpen nadenken over de probleemstelling
  • bugs in je programma
  • problemen met de werking van je online IDE
  • in principe elke werkdag beschikbaar
  • aanmelden via de planningstool (link volgt!)

Mail: contact met de docent via [email protected].

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

Bijeenkomsten

Tijdens de bijeenkomsten in Utrecht staan de volgende onderdelen op het programma:

  • Kennismaking
  • Terugblik op de opdrachten
  • Onderlinge code reviews
  • Aanwijzingen voor de cursus

De data:

  • vrijdag 3 september
  • vrijdag 1 oktober
  • vrijdag 29 oktober (afgelast)
  • vrijdag 26 november (afgelast)
  • vrijdag 24 december (afgelast)

Het tentamen is ingepland op 21 januari 2022.

Deadlines

Elke module moet op de vooraf bepaalde deadline volledig werkend ingeleverd zijn, waarbij de correcte werking automatisch wordt getest met checkpy of check50, die je zelf ook ter beschikking krijgt. Daarna volgt een deadline waarbij je je werkende programma's verbetert en nogmaals inlevert.

module naam deadline oplossing deadline verbeterd
Module 1 C do 30 sep 12:59 vr 1 okt 20:59
Module 2 Readability + Caesar do 28 okt 12:59 vr 29 okt 20:59
Module 3 Find + DNA do 25 nov 12:59 vr 26 nov 20:59
Module 4 Hangman + Adventure do 23 dec 12:59 vr 24 dec 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 docent de deadline een aantal dagen opschuiven. Je opdracht wordt dan gewoon nagekeken. Breng altijd direct je docent 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 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 [email protected]. Vaak zijn er nog wel oplossingen te verzinnen.

Cijfers

De modules 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:

  1. uitzonderlijk goede kwaliteit op basis van een doordacht ontwerp
  2. zeer goede kwaliteit, beperkt ruimte voor verbetering
  3. degelijke kwaliteit op alle genoemde aspecten, met ruimte voor verbetering
  4. net voldoende aandacht voor alle genoemde aspecten, erg veel ruimte voor verbetering
  5. enige zichtbare aandacht voor een beperkt aantal aspecten
  6. onvoldoende zichtbare aandacht voor de kwaliteitsaspecten {: start="6" reversed=""}

Voor module 4 worden bij volledige uitwerking altijd 6 punten toegekend.

Beoordeling tentamens

Voor het tentamen krijg je 5 programmeeropdrachtjes die je zelfstandig moet uitwerken. Over het algemeen krijg je geen code-raamwerk aangeleverd. Om het tentamen te halen moet je voldoende opdrachten werkend maken, exact volgens de voorbeelden bij de opgaven, waarbij je gebruik moet maken van voldoende complexe combinaties van elementaire programmeerstructuren. Gebruik je Python, dan ben je enigszins in het nadeel omdat daar meer shortcuts ingebouwd zitten. Het "hardcoden" van oplossingen is niet voldoende, de oplossingen moeten algemeen zijn.

De beoordeling is "gehaald" of "niet gehaald".

Samenwerken

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.

Plagiaat

Alle inzendingen worden 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.

Herkansingen

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.