Program Development Methodologies (Programming 2)
Vår 2014
Innhald
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.
- K.A. Mughal, T.Hamre og R.W.Rasmussen: Java som første programmeringsspråk, Cappelen Akademisk Forlag
- Notat om kontraktar, ADT og testing.
- Øvingsoppgåver, eksempelkode, forelesningar og supplerande materiale.
Emneansvarleg, forelesar: Magne Haveraaen
Ansvarlege undervisingsassistenter: Michał Pilipczuk
Gruppeleiarar: Anna Eilertsen (torsdagar), Patrick Monslaup (fredagar)
Forelesningar, startar 2014-01-21 (veke 4)
- Tirsdagar 1015 - 1200 i Høgteknologisenteret, Stort auditorium (2144)
- Onsdagar 0815 - 1000 i Høgteknologisenteret, Stort auditorium (2144)
Grupper, startar 2014-01-30 (veke 5)
- Torsdagar 1015 - 1200 i Høgteknologisenteret, Datalab 3, 1128 (1. etg.)
- Torsdagar 1215 - 1400 i Høgteknologisenteret, Datalab 3, 1128 (1. etg.)
- Fredagar 1015 - 1200 i Høgteknologisenteret, Datalab 3, 1128 (1. etg.)
NB! Veke 11 og 12 (14.3. og 21.3.) går desse gruppene 1415 - 1600.
- Fredagar 1215 - 1400 i Høgteknologisenteret, Datalab 3, 1128 (1. etg.)
Vekedrillen, startar 2014-02-03 (veke 6)
- Veke 6-11: Måndagar 1415 - 1600 i Høgteknologisenteret, Datalab 4, 1107.
- Veke 12-21: Måndagar 1215 - 1400 i Høgteknologisenteret, Datalab 4, 1107.
Forelesningar og grupper er eit tilbod til studentane.
Det er sjeldan studentar som nytter tilbodet stryk til eksamen.
Tilbodet har fleire komponentar:
- Vanlege forelesningar.
- Vekedrillen; ei oppsummering og drilling av vekas viktigaste lærestoff.
Delta her om du har vanskar med innhaldet i ei forelesning eller vil styrkje forståinga di.
- Månadlege meisterklasser: oppsummering på eit høgre teoretisk nivå.
For dei som skjønar det meste og vil forstå meir,
og for dei som vil ha ei komprimert oppsummering av lærestoffet.
- Vanlege grupper med gjennomgang av oppgåver.
- Obligatoriske oppgåver der rettleiing vert gitt på gruppeøvingane.
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.
- --
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.
- --
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
- 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
- Drill: lineære datatyper: stabel, kø, prioritetskø; v14-06drill-linear
Rekursjon; 12; v14-07-recursion
--
Oppgåve 3
- Drill: rekursjon (mappestruktur); v14-07drill-recursion
Meisterklasse, oppsummering (sikkerheit, slumptallsgeneratorer); v14-08-randomness
--
Oppgåve 4 obligatorisk, rettleiing; oppgave04-rationals
- Drill (obligatorisk oppgave)
Søking og sortering; 9; v14-09-sorting_searching
Søking og sortering; 9
Oppgåve 4 obligatorisk, rettleiing
- 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
- 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
- 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
- Drill (obligatorisk oppgave)
Unnatakshandtering; 13; v14-17-try_catch
Serialisering, filhandtering; 14; v14-18-file_io
Innlevering oppgåve 6, fredag 28.3.2014
- Drill: dynamiske datatyper, stabel (lenka), Stack (frå standardbiblioteket), rekusjon; v14-18drill-TowerOfHanoi
Grafisk brukergrensesnitt; 15; v14-19-gui
--
Oppgåve 7
- Drill: dynamiske datatyper, lenka liste, lenka 2D-liste, generiske argument; v14-19drill-Memory
--
--
Oppgåve 8
- Påskeferie
- --
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
- 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)
- Drill: praktisk arbeid med obligatorisk oppgåve
--
Onsdag 14-18: inf101-hackaton med dei kursansvarlege (dataromma)
Innlevering oppgåve 9, fredag 9.5.2014
- --
--
--
Øvingar torsdag for dei som ikkje fekk godkjent oppgåve 9
- Drill: oppsummering
Hex-konkurransen
--
Oppgåve 10
Veke 23:
- Måndag 2. juni: inf101 krasjkurs, arrangert av fagutvalet
- Torsdag 5. juni: 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