Grundläggande programmering, 5p

 Senast uppdaterad 27 april 2003


Våren 2003


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.

Programmeringsuppgiften ska redovisas vid ett obligatoriskt seminarium, se nedan.

Laborationer
Fem 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 webbsidan. Resultatet anslås på webben.

Försenat 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.

Programmeringsprojekt
Utöver laborationsuppgifterna tillkommer en programmeringsprojekt, som ska lösas i grupp om två studenter. Uppgiften delas ut vid mitten av kursen. Uppgiften ska delredovisas vid kursens mitt, enligt särskilt schema. Vid denna delredovisning, som är obligatorisk,  ska programstrukturen diskuteras. Redovisningen ska ske vid ett seminarium vid kursens slut (prel. 5 + 6 juni, enligt schema). Anvisningar för detta seminarium, som till formen liknar en disputation, distribueras i god tid före seminariet. Vid dessa seminarier förutsätts varje elev närvara under 3 timmar, enligt en särskild gruppuppdelning.

Handledning

Handledning på programmeringsuppgiften samt problemlösningshjälp (men använd främst laborationstid, SI och DatorQ) ges av Mayank Saksena. Respektera Mayanks 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.  Bästa, ja, kanske 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)
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 2 % 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@it.uu.se, tel 018 471 31 67 (kursansvarig lärare, föreläsningar, övningar, vissa seminarier)

Mayank Saksena, Mayank.Saksena@it.uu.se, rum 1110 (laborationshandledning, laborationsrättning, problemlösningshjälp, projekthandledning, vissa seminarier)

Johan Kvarnström, quarnan@swipnet.se (SI-ledare)

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

Suns java tutorial på http://java.sun.com/docs/books/tutorial/ är utmärkt referenslitteratur.

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

Undervisningsplan (preliminär, kan komma att ändras)

Tillfälle

Innehåll

Litteraturhänvisning

Lärare

Kommentar

F1 17/3

Kursintroduktion. Vad är programmering? Programkonstruktion, algoritmbegreppet.

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

AB

 

F2 17/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 18-19/3

Introduktion till Java. Knapptryckningsövning

 

MS

 Obs! Samling i en lektionssal

F3 20/3

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

2.1-2.8, 2.10

AB

 

F4 24/3

forts

2.1-2.8, 2.10

AB

 

Le1 25/3

Mycket enkla programsnuttar

 

AB

 

Lab2 27/3

Introduktion till Java. Programmera-själv-övning

 

MS

 

F5 31/3

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

F61/4

forts

3.1 -3.4, 4.1 -4.4

AB

 

Lab3 3/4

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

 

MS

 

Le2 4/4

Enkla program, objektorientering

 

AB

 

F7 7/4

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

2.11,4.5,9.4, 10.1, 10.5, 10.10

AB

 

F8 8/4

forts

4.5, 10.1, 10.5, 10.10

AB

 

F9 10/4

forts

4.5, 10.1, 10.5, 10.10

AB

 

F10 10/4

Reserv. Troligen behöver vi använda denna tid till en föreläsning.

 

AB

 

Glad påsk!

Le3 23/4

Objektorienterade program, arrayer

 

AB

 

F11 24/4

Använding av färdiga klasser, exempel. Introduktion till projekten. Större program.

2.9, 5.6, 9.3 - 9.6, 9.12, 11 (översikt)

AB

 

F12 24/4

forts.

 

AB

 

Lab4 28/4

Mer avancerad objektorientering. Tänk-stort-övning.

 

MS

 

F13 28/4

Större program, exempel

 10.10

AB

 

Trevlig sista april!

Le4 5/5

Komplexare program

 

AB

 

F14 6/5

Klassvariabler. Avancerade programspråkskonstruktioner. Enkel grafik

6.1 - 6.7

AB

 

F15 6/5

Beräkningsmodeller

Meddelas senare

Roland Bol

 

F16 7/5

Enkel grafik

 

AB

 

F17 7/5

Reserv

 

AB

 

Lab5 8/5

Enkel grafik. Rita-och-berätta-övning.

 

AB

 

Sem P/V 20/5

Vetenskapen datavetenskap

Artikel

LGJ, AB

 

Tenta 23/5

 

Inga hjälpmedel, men det går bra i alla fall

 

 

Sem P 5/6 – 6/6

Redovisning, programmeringsuppgift

Studenternas projekt

MS, 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.it.uu.se/datordrift/programvara/sshinstallationer.shtml#windoze

Java Developmnet Kit download for Linux, Solaris or Windows 

Ansvarig för web-sidan: Anders Berglund.