Om kurset

INF1100 har en standarisert emnebeskrivelse, men her følger litt mer detaljert informasjon om undervisningsopplegget.

Undervisningen

Forelesningenes struktur

Det er fire timer plenumsundervisning hver uke i Sophus Lies auditorium. På tirsdag vil vi i første time løse oppgaver i temaer som ble forelest torsdagen uken før. I andre time vil vi snakke om nytt stoff. På torsdag gjør vi det samme: først oppgaver fra tirsdagsforelesningen, og så nytt stoff. Gjennom å vise hvordan man løser programmeringsoppgaver "live" håper vi at studentene får et bedre innblikk i hvordan man tenker rundt det å programmere. Denne typen oppgaveløsning har prioritet over ordinære forelesninger, så noen ganger vil vi bruke av den andre timen til å programmere i plenum. Hver uke trenger vi inn i et nytt kapittel i læreboken, men kapittel 7 legger beslag på to uker.

Når vi foreleser nytt stoff, vil vi behandle noen temaer i dybden, noen temaer overfladisk, mens noen foiler og temaer vil vi hoppe over pga. den korte tiden som er til rådighet på forelesninger. Gjennomgang av foiler, enten direkte eller ved demonstrasjoner på datamaskinen, danner kjernen i forelesningene. Alle foiler er tilgjengelige på nettet og følger læreboken tett, men går ikke på langt nær like dypt ned i stoffet. Bruk gjerne foilene til å få en oversikt over temaet og læreboken og oppgaver til å forstå stoffet og oppnå mestring. Senere kan du bruke foilene til å repetere stoff og få bedre oversikt.

Gruppeundervisningen

I tillegg til plenumsundervisningen er det to timer gruppeøvelser på terminalstue med en lærer man kan spørre. På disse øvelsene skal man jobbe med ukens innleveringsoppgaver, vanligvis 2-5 oppgaver fra forrige ukes forelesningstema. Disse oppgavene skal senere leveres inn elektronisk for retting og godkjenning av gruppelærerne. Normalt skal du rekke ukens oppgaver på gruppetimen dersom du har forberedt deg med å studere kapittelet, foilene og plenumsoppgavene på forhånd.

Piazza: virtuelt forum

I tillegg til veiledning på gruppetimene kan du få hjelp ved å stille faglige spørsmål på kursets markedsplass: piazza.com/uio.no/fall2014/inf1100. Mer administrative, personlige spørsmål, f.eks. ved sykdom slik at man ikke har fått levert obligatoriske oppgaver, skal rettes til kursets mailadresse: inf1100@ifi.uio.no.

Lærebok

Det er skrevet en egen lærebok for INF1100. Den nyeste fjerde-utgaven av denne boken selges i Akademika. Læreboken inneholder teori, eksempler og oppgaver, og er skrevet for også å kunne brukes ved andre universiteter i verden som ønsker en innføring i programmering tett koblet mot matematikk og naturvitenskapelige anvendelser.

Primer_pic.jpg

Den største forskjellen mellom 3. og 4. utgave av boka er rundt oppgavene. Veldig mange oppgaver er restrukturert i spørsmål a), b), c) osv., og inneholdet i oppgavene kan være endret. Nå er alle oppgavene tilgjengelige i en nedlastbar PDF fil. Man kan derfor lese i tredjeutgaven og bruke PDF-filen for forelesninger (men henvisningene fra oppgavene til seksjonsnummer i boka vil ikke alltid stemme). I fjerdeutgaven er det gjennomgående i teksten mer vekt på testing av kode, og det er innført spesielle konvensjoner for å gjøre dette slik at testene passer inn i profesjonelle testrammeverk (nose og pytest). Vi anbefaler ikke å studere 1. eller 2. utgave av boka.

Gi tilbakemeldinger!

Emnet INF1100 startet i 2007. Dette fremdeles en ganske ny type kurs, også i internasjonal sammenheng, så vi regner fortsatt med at både undervisningsform, utvalg av oppgaver og pensum kan bli justert noe underveis, men ikke så mye som i de første årene. Vi ønsker å være i tett dialog med studentene om å gjøre kurset enda bedre!

Arbeidsform

Så hva skal du som student gjøre for å mestre stoffet og sikre deg en god karakter på eksamen? Eller enda viktigere: hvordan skal du arbeide for å oppnå gode ferdigheter i programmering for senere kurs? Opplegget er relativt enkelt (og helt algoritmisk!):

  • Delta på alle de 6 timene med undervisning hver uke, i det minste til du kan så mye programmering at undervisningen har altfor treg progresjon for deg.
  • Bruk 2 timer på å lese ukens kapittel før forelesningene starter. Bla gjennom foilene for repetisjon og oversikt - før eller etter at du leser teksten. Evnen til å oppfatte nytt stoff på en forelesning er sterkt begrenset hvis man ikke er forberedt.
  • Bruk 2 timer på å løse oppgavene som foreleser skal gå gjennom i plenum. Da vil du se hva du ikke har forstått og få mye mer ut av oppgavegjennomgangen.
  • Bruk 1 time på å etterarbeide disse oppgavene etter at du har sett løsningene (de er tilgjengelige på nett).
  • Deretter forsøker du å løse ukens obligatoriske innleveringsoppgaver - med forberedelsene over bør du greie oppgavene på et par timer, gjerne på gruppetimen.

Summerer du timene over, får du 13, som er 1/3 av en normalarbeidsuke på 40 timer for gjennomsnittsstudenten.

Følg rådene

Oppskriften over fungerer: hundrevis av studenter har allerede fulgt den og endt opp med A eller B på eksamen og et godt grunnlag for å løse matematiske problemer via programmering i senere kurs.

Raske veier mot målet er ofte trege

Undervisningen tar utgangspunkt i at alle studenter arbeider slik listen over beskriver. Hvis du velger andre opplegg, for eksempel å gå rett på ukens obligatoriske oppgaver, vil du fort ende opp med å "knote", ikke skjønne "noenting", bla febrilsk i bøker og foiler og bruke mange unødvendige timer på frustrasjon med lavt læringsutbytte. Læring gjennom oppgaver er helt sentralt, men oppgaver du ikke forstår noe av fordi du mangler det teoretiske grunnlaget, er et ineffektivt utgangspunkt. Oppskriften over sikrer deg mest fritid og den mestring og forståelse som studiet senere krever, pluss en god karakter.

Eksamen

Både midtveiseksamen og den endelige eksamen vil ligge tett opptil et sett med obligatoriske oppgaver og oppgaver løst i plenum. Har du forstått disse oppgavene, blir eksamen en hyggelig opplevelse. For å forstå oppgavene, er det lurt først å lese relevant teori og eksempler i læreboken. Mange oppgaver er nemlig tett knyttet til stoffet i boken. Vi definerer faktisk pensum gjennom plenumsoppgaver og obligatoriske oppgaver og ikke gjennom kapitler i læreboken. Boken er et middel til å nå målet, som er å mestre et sett med oppgaver.

Samarbeid

Det kan være svært utbytterikt å samarbeide med andre, men det kan også være et effektiv hinder for å oppnå egen forståelse og mestring. Det er viktig at du tidlig som student har et elt bevisst forhold til når og hvordan du skal samarbeide og når du bør studere på egenhånd.

Erfaring viser at i en gruppe som samarbeider om oppgaver og der kunnskapsnivået blant studentene varier mye, vil den faglig sterkeste ha stort utbytte av samarbeidet gjennom å lede oppgaveløsningen og forklare andre. De svakeste vil fort ende opp i en "skrive av" situasjon der de ikke får nok tid til å forstå det som foregår. Med etterarbeiding av oppgaveløsningen på egenhånd der man trenger dypt inn i detaljene og prøver å forstå dem, så kan dette være en god form for læring. Dessverre erfarer vi at en del ender opp med bare å "skrive av".

Programmering er en ferdighet som krever mye trening

Svært få vil være så begavede fra naturens side at de forstår programmering bare ved å skrive av og lese løsninger. Så godt som alle må lære programmering (og regning og andre ferdigheter i realfag) ved å jobbe på egenhånd med et solid antall oppgaver. Mestring er krevende, men betalingen får du ved å kjenne på mesteringsfølelsen når du mestrer.

Som student er det viktig å fokusere på individuelle ferdigheter, altså at du på egenhånd har kunnskap og erfaring til å løse nye problemer. Bare på denne måten kan du greie deg senere i studiet og i arbeidslivet, og det gjelder både når du må løse problemer selv og i samarbeid med andre. Uten individuelle ferdigheter har du lite å bidra med i et samarbeid!

Testing av individuelle ferdigheter

Vi har nå et forsterket fokus på individuelle ferdigheter i INF1100/MAT-INF1100L og andre kurs. Det betyr at studenter blir testet individuelt, først og fremst på eksamen, men også i forbindelse med gruppetimer for å kontrollere at oppgavene som leveres inn er forstått. I stedet for et sterkt fokus på juks, der målet er å avsløre og utvise studenter som leverer inn andres arbeid, konsentrerer vi oss om å måle kunnskapen hver enkelt student har ervervet seg. Vi bryr oss altså ikke om hvordan du fremskaffer løsningen på en oppgave, men vi bryr oss om å teste i hvilken grad du forstår hvordan et programmeringsproblem skal løses. Når du samarbeider med andre må derfor kritisk vurdere i hvilken grad samarbeidet gir deg individuelle ferdigheter. Samarbeidspartnere som er på samme mestringsnivå som deg selv kan være en god ting. Og når du leverer inn en oppgave, må du spørre deg selv om du kan forklare hva som skjer på hver linje i programmet og hvorfor linjen er nødvendig. Formelt sett er det faktisk slik at i det du trykker på innleveringsknappen samtykker du at du kan forklare alle detaljer av løsningen din. Et mindre antall studenter blir plukket ut og testet at de har skjønt hva de har sendt inn.

Av Hans Petter Langtangen
Publisert 21. apr. 2015 21:32