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 2022 vil være digital undervisning i zoom. 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.
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.
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. 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.
Lærebok
Høsten 2020 ble det skrevet en ny lærebok for IN1900. Denne skal vi også bruke i høst.
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.
Gi tilbakemeldinger!
Emnet IN1900 er en videreføring av INF1100, som 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:
- 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 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 obligatoriske 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 å "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 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 "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!