INF101 - Vidaregåande programmering (Programmering 2)

Program Development Methodologies (Programming 2)

Vår 2014

Innhald

Kursomtale og pensum

Objekt-basert programmering er kjernen i kurset. Sentrale omgrep som blir dekte er abstraksjonar, spesifikasjonar og objekt-orientert design (kontrakt/implementasjon). Metodar for oppdeling, dokumentasjon, konstruksjon og testing av program blir vektlagt.

Emnet gir ei innføring i bruk og implementering av klassiske datastrukturar. Bruk og utvikling av enkle programbibliotek står sentralt. Øvingsopplegget er arbeidskrevjande med fleire obligatoriske oppgåver.

Studentane skal kjenne til og kunne nytte kunnskap frå dette emnet til å utvikle større programsystem.

Pensum tar utgangspunkt i læreboka frå inf100.

Kursansvarlege

Emneansvarleg, forelesar: Magne Haveraaen
Ansvarlege undervisingsassistenter: Michał Pilipczuk
Gruppeleiarar: Anna Eilertsen (torsdagar), Patrick Monslaup (fredagar)

Undervisningstidspunkt

Forelesningar, startar 2014-01-21 (veke 4)

Grupper, startar 2014-01-30 (veke 5) Vekedrillen, startar 2014-02-03 (veke 6) Forelesningar og grupper er eit tilbod til studentane. Det er sjeldan studentar som nytter tilbodet stryk til eksamen. Tilbodet har fleire komponentar:

Semesterplan (skisse)

For kvar veke står tema for vekedrill måndag, tema for forelesning tysdag og kapittelnummer frå boka, tema for forelesning onsdag og kapittelnummer frå boka, tema for gruppeøvingane torsdag og fredag. Bak kvart tema står eksempelkode som du finn i inf101-svn.

  1. --
    Introduksjon, programvarekvalitet og fallgruver (begrenset størrelse på data); 1-5; v14-01-pitfalls
    Kontraktar, pakkar (grensesnitt, javadoc, aksiom; dato); 7.2, 8.9, notat; v14-02-date
    Oppgåve 0: Installasjon av verktøy; hjelp med installering vert gitt torsdag 12-14 i Datalab 3.
  2. --
    ADT-omgrepet: kontrakt, forkrav, datainvariant, likskap (stabel, kø og prioritetskø API, generiske klasser); 8, 10.3, notat
    ADT-omgrepet: kontrakt, forkrav, datainvariant, likskap; 8, 10.3, notat; v14-04-linear_in_out
    Oppgåve 1; oppgave01-hospitalet
  3. Drill: abstraksjon, API, ADT; v14-04drill-abstractioncase
    ADT-omgrepet: kontrakt, forkrav, datainvariant, likskap; 8, 10.3, notat
    Testing (teste med aksiom: hovedprogram, JUnit, JAxT); 8.3, notat
    Oppgåve 2
  4. Drill: lineære datatyper: stabel, kø, prioritetskø; v14-06drill-linear
    Rekursjon; 12; v14-07-recursion
    --
    Oppgåve 3
  5. Drill: rekursjon (mappestruktur); v14-07drill-recursion
    Meisterklasse, oppsummering (sikkerheit, slumptallsgeneratorer); v14-08-randomness
    --
    Oppgåve 4 obligatorisk, rettleiing; oppgave04-rationals
  6. Drill (obligatorisk oppgave)
    Søking og sortering; 9; v14-09-sorting_searching
    Søking og sortering; 9
    Oppgåve 4 obligatorisk, rettleiing
  7. Drill (obligatorisk oppgave)
    Arv, polymorfisme (overlasting, overstyring); 6, 7; v14-11-inheritance
    Arv, polymorfisme (overlasting, overstyring); 6, 7; v14-12-design_figure
    Ingen grupper torsdag 6.3. grunna fagkritisk dag.
    Innlevering oppgåve 4, fredag 7.3.2014; oppgave04-rationals-magne, oppgave04-rationals-michal
  8. Drill: implementere 2D-tabell, finne naboer; v14-12drill-GameOfLife, v14-12drill-GameOfLifeFasit
    Bruk av dynamiske datatypar (standardbiblioteket: samlingsklassar, Collection, HashMap, HashSet, ArrayList); 10; v14-13-collections
    Meisterklasse (oppsummering)
    Oppgåve 5; oppgave05-arv
  9. Drill: arv, klassediagrem (oversikt over prosjekt); v14-14drill-hierarchy
    Implementasjon av dynamiske datatypar (referansar/peikarar); 11; v14-15-references
    Implementasjon av dynamiske datatypar (enkelt-/dobbeltlenka lister med og utan vaktnode); 11; v14-16-linear_in_out-linked
    Oppgåve 6 obligatorisk, rettleiing
  10. Drill (obligatorisk oppgave)
    Unnatakshandtering; 13; v14-17-try_catch
    Serialisering, filhandtering; 14; v14-18-file_io
    Innlevering oppgåve 6, fredag 28.3.2014
  11. Drill: dynamiske datatyper, stabel (lenka), Stack (frå standardbiblioteket), rekusjon; v14-18drill-TowerOfHanoi
    Grafisk brukergrensesnitt; 15; v14-19-gui
    --
    Oppgåve 7
  12. Drill: dynamiske datatyper, lenka liste, lenka 2D-liste, generiske argument; v14-19drill-Memory
    --
    --
    Oppgåve 8
  13. Påskeferie
  14. --
    Meisterklasse (oppsummering), siste forelesning (høgintegritetsprogramvare: påliteleg, robust, sikker); First-ever trucks/cars platoon on public roads (youtube) 'Ariane 5' Rocket first launch failure/explosion (youtube)
    --
    Oppgåve 9 obligatorisk, rettleiing; oppgave09-hex_ui
  15. Drill: abstraksjon, enums, dybde først og bredde først søk; v14-20drill-connectivity v14-20drill-connectivity-sol
    --
    --
    Oppgåve 9 obligatorisk, rettleiing (kun fredag)
  16. Drill: praktisk arbeid med obligatorisk oppgåve
    --
    Onsdag 14-18: inf101-hackaton med dei kursansvarlege (dataromma)
    Innlevering oppgåve 9, fredag 9.5.2014
  17. --
    --
    --
    Øvingar torsdag for dei som ikkje fekk godkjent oppgåve 9
  18. Drill: oppsummering
    Hex-konkurransen
    --
    Oppgåve 10
Veke 23:

Eksamen

5 timar skriftleg (penn og papir) eksamen. Både de obligatoriske arbeidskrava og eksamen må vere bestått for å få godkjent eksamen i emnet. Alle skrivne og trykte hjelpemiddel er lovlege.
Sist oppdatert 2014-05-30 av Magne Haveraaen