Om kurset
IN1900 har en standardisert emnebeskrivelse, men her følger litt mer detaljert informasjon om undervisningsopplegget.
Undervisningen
Forelesningenes struktur
Det er fire timer plenumsundervisning hver uke, som høsten 2023 vil være i Sophus Lies auditorium. Forelesningene vil være en kombinasjon av oppgaveløsning i plenum ("live-programmering"), og mer tradisjonelle forelesninger basert på foiler eller annet materiale. 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 la introduksjonen av nye tema være selvstudium, og bruke mesteparten av tiden i forelesningene til live-programmering. Hver uke går vi gjennom ett kapittel fra læreboka.
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 4-5 oppgaver fra forrige ukes forelesningstema. Oppgavene kan senere leveres inn elektronisk for retting og tilbakemelding fra gruppelærerne. Normalt skal du rekke ukens oppgaver på gruppetimen dersom du har forberedt deg med å studere kapittelet, foilene og plenumsoppgavene på forhånd.
Lærebok
Vi bruker denne læreboka for IN1900 i 2023.
Elektronisk utgave av boka er gratis tilgjengelig for alle. Boka dekker mesteparten av pensum i kurset, og vi vil i tillegg bruke et kompendium.
Den nye læreboka er en oppdatert kortversjon av boka som har vært brukt i kurset i mange år: A primer on scientific programming with Python av Hans Petter Langtangen. Denne boka bruker en eldre versjon av Python, men det aller meste av innholdet er fortsatt relevant og gyldig. Denne boka går mye mer i detalj enn den nye læreboka og inneholder mange flere eksempler og problemstillinger, så den er en veldig nyttig tilleggsressurs for de som vil lære mer programmering. En elektronisk versjon er tilgjengelig fra UiO-biblioteket. Linken virker bare hvis du er logget på UiO sitt nettverk, og skal da føre til en side hvor du kan laste ned en pdf-fil.
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:
- Delta på alle de 6 timene med undervisning hver uke. Hvis du kan litt programmering fra før, og derfor opplever de første ukene som altfor enkle, så er det selvfølgelig greit å droppe noen forelesninger. Det er likevel viktig å følge med på hva som blir gjennomgått, siden progresjonen er ganske rask og det helt sikkert kommer tema i løpet av høsten som du ikke kjenner fra tidligere.
- Les ukens kapittel i læreboka før forelesningen starter.
- Bruk litt tid på forhånd til å 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. Hvis du ikke rekker å løse oppgavene ordentlig er det uansett nyttig å bruke litt tid på å tenke gjennom hvordan du ville løst dem, og om det er noen oppgaver eller deloppgaver som er spesielt utfordrende.
- Bruk litt tid på å etterarbeide disse oppgavene etter at du har sett løsningene (de er tilgjengelige på nett).
- Deretter forsøker du å løse ukens innleveringsoppgaver -med forberedelsene over bør du greie oppgavene på et par timer, gjerne på gruppetimen.
Samlet tidsbruk på disse punktene bør være ca 11-12 timer, som er i underkant av 1/3 av en normal arbeidsuke på 40 timer.
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 å søke febrilsk på nettet og i lærebøker 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 de oppgavene som gis som innleveringsoppgaver og oppgaver løst i plenum. Hvis du har 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.
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 helt 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 situasjon der de kopierer andres løsninger og ikke får nok tid til å forstå det som foregår. Med etterarbeid på egenhånd der man trenger dypt inn i detaljene og prøver å forstå dem, så kan dette likevel 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.