Grundläggande programmering, 5p

Föreläsningsplanen uppdaterad 14 april 2002

Våren 2002


Kursinformation

Mål
Efter kursen skall den studerande:
- Kunna beskriva problemlösning med hjälp av algoritmer
- Kunna implementera (enkla) algoritmer i programspråket Java
- Behärska grunderna i god objektorienterad programkonstruktion

Innehåll
Kursen behandlar programmering som metod för problemlösning. Formulering av algoritmer, val av datatyper och konstruktion av program i valt programspråk är centralt. I kursen används språket Java för implementeringen av program. Dokumentation och testning av program tas upp och en orientering om programmeringsstil och programkvalitet ges. Programmering som metod diskuteras ur vetenskapliga, tekniska och samhälleliga perspektiv, liksom programmeringens betydelse i komplexa system. Dessutom ges en orientering om teorier för beräkningar. Moment som behandlas är t ex Turingmaskiner, finita automater, beräkningsbarhet och komplexitetsteori. Gemensamt med kursen vetenskapsteori ges ett moment om dataetik samt ett seminarium om vetenskapsteoretiska frågeställningar inom datateknik.

Särskild behörighet
Kurserna System i teknik och samhälle: introduktion och Algebra eller motsvarande kunskaper. Kursen bör läsas parallellt med Vetenskapsteori.

Undervisning
Föreläsningar, övningar med studentaktivitet, obligatoriska seminarier och laborationer.

Undervisningsformer

Föreläsningar
Föreläsningar, vilka delvis är av översiktskaraktär. Detta förutsätter att deltagarna studerar kurslitteraturen kontinuerligt under kursens gång. Föreläsningarna som är markerade "reserv" används endast om tiden fram till dessa inte har räckt till för det givna kursmaterialet. Föreläsningsplanen är preliminär och kommer att ändras fortlöpande. Mer information kommer att ges via WWW.

Lektioner/Övningar
Övningar i halvklass. Dessa tillfällen är tänkta för tänkta för att gå igenom exempel, öva i mindre grupper, diskutera och förtydliga svåra moment etc. Övningarna bygger på aktivt deltagande och förberedelser inför lektionerna av studenterna, och kommer delvis att göras med studenter vid tavlan. Förberedelseuppgifter distribueras via föreläsningsplanen.

 

Seminarier
Ett obligatoriskt seminarium gemensamt med kursen vetenskapsteori ingår i kursen. Detta seminarium kommer att behandla frågor kring vetenskap, teknik, programmering och mjukvaruutveckling. Inför detta seminarium skall ett mindre individuellt PM skrivas. Närmare anvisningar delas ut i god tid före seminariet.

Även programmeringsuppgiften ska redovisas vid ett obligatoriskt seminarium, se nedan.

Laborationer
Laborationer i tredjedelsklass är schemalagda. Under dessa arbetar deltagarna med att lösa programmeringsuppgifter vid dator, med tillgång till handledare. Det rekommenderas att arbeta i grupper om två personer med laborationerna. Båda deltagarna i gruppen ska aktivt delta i arbetet och närvara vid redovisning av laborationerna. Redovisningsformerna för laborationerna varierar och framgår av varje laborationsinstruktion. Redovisning av laborationsuppgifter ska göras löpande under kursens gång. Kom förberedd till laborationerna. Laborationsanvisningarna distribueras via föreläsningsplanen. Resultat återfinns här.

Försent redovisade laborationer kommer att rättas först vid höstterminens början.

Vi genomför alla laborationer på Unix-arbetsstationer. Om du vill arbeta hemma så kan du göra detta genom att köra ssh (för krypterad inloggning) mot någon av våra datorer eller genom att själv installera Java, som är gratis, hemma. All redovisning ska dock ske på institutionens arbetsstationer, och alla laborationer och program ska laddas ned på dessa system när de är färdiga.

Programmeringsuppgift
Utöver laborationsuppgifterna tillkommer en programmeringsuppgift, som ska lösas i grupp om två studenter. Uppgiften delas ut vid mitten av kursen. Denna uppgift ska redovisas vid ett seminarium samband med kursens slut. Anvisningar för detta seminarium, som till formen liknar en disputation, distribueras i god tid före seminariet.

Handledning

Handledning på programmeringsuppgiften samt problemlösningshjälp (men använd främst laborationstid, SI och DatorQ) ges av Elena Fersman. Respektera Elenas mottagningstider.

Eget arbete

Utöver laborationsuppgifterna är det bra träning att arbeta med övningsuppgifter och exempel, t ex från övningstillfällena eller boken. Kom ihåg: enda sättet att lära sig programmera är att programmera. Detta kan ta tid, så räkna med att lägga ner mer tid än den schemalagda handledningstiden för att lösa uppgifterna.

Supplemental Instruction (SI) - Mentorsprogrammet
Mentorgruppens syfte är att vara en hjälp för studenterna i deras självstudier med stöd av en äldre student. Mentormötena är upplagda som en studiegrupp där de äldre studenterna fungerar som förebilder och arbetar nära tillsammans med de nya studenterna. Frågor och problem bearbetas och diskuteras i grupperna med hjälp av böckerna och egna föreläsningsanteckningar. Innehållet på mentormötena bestäms företrädesvis av studenterna utifrån vad de har problem med. Mentormötena är helt frivilliga. Mer info

Examination

Graderat betyg
Kursen examineras huvudsakligen genom laborationer och programmeringsuppgift, seminarier samt tentamen. Det graderade betyget beror av tentamensresultatet, med en eventuell bonus inräknad.

Bonus

Bonus lämnas för förberedelser av lektionsuppgifter till lektionerna. Lösningsförslagen behöver inte vara korrekta, det som premieras är att ha tänkt igenom uppgifterna. Samarbete om lösningsförslag är tillåtna. Varje student avgör själv om han/hon är förberedd inför lektionerna, genom att markera förberedda uppgifter på en lista. Studenter som uppger sig har förberett uppgifter kan ombedas redovisa dem vid tavlan, eller tas till individuella "stickprovsförhör". Förberedelser kan ge maximalt 1% av tentamens totala poäng per lektionstillfälle. Det går inte att få bonus för uppgifter utan att vara närvarande vid lektionen.

Lärare
Anders Berglund, Anders.Berglund@docs.uu.se, tel 018 471 31 67 (kursansvarig lärare, föreläsningar, övningar, vissa seminarier)

Elena Fersman, Elena.Fersman@docs.uu.se (laborationshandledning, laborationsrättning, problemlösningshjälp, vissa seminarier)

Jesper Wilhelmsson, jewi7435@student.uu.se (SI-ledare)

Kurslitteratur
Skansholm, J: Java Direkt, Studentlitteratur 1999.
Referensexemplar finns i seminarierummet, hus 7.
Artiklar enligt senare meddelande

Hemsida
Kursens hemsida är http://www.docs.uu.se/~andersb/sts/gp/. Härifrån nås kursinformation, laborationer mm.

Undervisningsplan (preliminär, kommer att ändras)

Tillfälle

Innehåll

Litteraturhänvisning

Lärare

Kommentar

F1 19/3

Kursintroduktion. Vad är programmering? Programkonstruktion, algoritmbegreppet.

Kap 1 (utom 1.8), 2.1, 2.2, 18.1

AB

 

F2 19/3

Programkonstruktion och algoritmer forts. Introduktion till objektorienterad programmering och Java. Första programmet.

Kap 1 (utom 1.8), 2.1, 2.2, 18.1

AB

 

Lab1 21/3

Introduktion till Java. Knapptryckningsövning

 

EF

 

F3 25/3

Klasser, objekt, metoder. Variabler, tilldelning, enkel inläsning/utskrift. Metoder, parametrar, styrande satser

2.1-2.8, 2.10

AB

 

F4 25/3

forts

2.1-2.8, 2.10

AB

 

Le1 26/3

Mycket enkla programsnuttar

 

AB

 

Lab2 27/3

Introduktion till Java. Programmerasjälvövning

 

EF

 

F5 15/4

Enkel objektorientering. Metoder, parametrar.

2.7,2.10,3.2 -3.4, 4.1 -4.4

AB

Suns Java Tutorial, avsnitt om Object, Message och Class är läsvärda

F6 15/4

forts

3.1 -3.4, 4.1 -4.4

AB

 

Lab3 16/4

Introduktion till objektorientering. Tänk-själv-övning.

 

EF

 

Le2 17/4

Enkla program, objektorientering

 

AB

 

F7 19/4

Arrayer. Avancerad objektorientering, arv, relationer mellan klasser och objekt

2.11,4.5,9.4, 10.1, 10.5, 10.10

AB

 

F8 18/4

forts

4.5, 10.1, 10.5, 10.10

AB

 

Le3 23/4

Objektorienterade program, arrayer

 

AB

 

F9 22/4

forts

4.5, 10.1, 10.5, 10.10

AB

 

F10 22/4

Beräkningsmodeller

Meddelas senare

Arne Anders-son

 

F12 24/4

Reserv

 

AB

 

F13 25/4

Använding av färdiga klasser, exempel

 2.9,5.6

AB

 

Lab4 26/4

Mer avancerad objektorientering

 

EF

 

Le4 2/5

Komplexare program

 

AB

 

F14 2/5

Introduktion till projekten.Större program, avancerade programspråkskonstruktioern

9.3 -9.6, 9.12, 11 (översikt)

AB

 

F15 3/5

Enkel grafik

6.1 - 6.7

AB

 

Lab5 6/5

Enkel grafik

 

AB

 

F16 7/5

Större program, avancerade programspråkskonstruktioner

exempel 

AB

 

F17 8/5

Reserv

 

AB

 

F18 15/5

Reserv

 

AB

 

V/P 16/5

Dataetik

meddelas senare 

Göran Collste

 

Sem P/V 21/5

Vetenskapen datavetenskap

meddelas senare

LGJ, AB

 

Tenta 25/5

 

 

 

 

Sem P 28/5 -29/5

Redovisning, programmeringsuppgift

 

EF, AB

 

 

Länkar
Skansholms bok, med bl a tryckfel, lösningar till uppgifter mm

Suns Java Tutorial

Java 2, version 1.3 dokumentation

Om du vill kunna logga in hemifrån på datorer på Polacksbacken, så kan du hämta programmet ssh (för krypterad inloggning) här:
http://www.tdb.uu.se/datorer/sshinstallationer.html

Java Developmnet Kit download for Linux, Solaris or Windows 

Ansvarig för web-sidan: Anders Berglund.