Grundläggande programmering, 5p
Senast
uppdaterad 27 april 2003
Våren 2003
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
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.