Grundläggande programmering, 5p
Senast
uppdaterad 28 april 2004
Våren 2004
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. Det
är oerhört viktigt att komma förberedd till laborationerna. Om så inte sker,
räcker inte laborationstiden. Laborationsanvisningarna distribueras via webbsidan.
Resultatet anslås på webben.
Notera, att om rättningen av labbarna har gett betyget ”K”, för komplettering
så krävs en kompletterande uppgiftslösning före den nya utsatta dead-linen.
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 enligt särskilt schema. Vid denna delredovisning,
som är obligatorisk, ska
programstrukturen diskuteras. Redovisningen ska ske vid ett seminarium vid
kursens slut (se 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 cirka 3 timmar, enligt en
särskild gruppuppdelning. Denna gruppuppdelning blir tillgänglig endast ett
fåtal dagar före seminarierna.
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 ett varmt rekommenderat komplement till den klassiska
undervisning. SI-verksamheten sker i samma grupper som lektionerna. 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 1137 (laborationshandledning, laborationsrättning, problemlösningshjälp, projekthandledning, vissa seminarier)
Henrik Boström, Henrik.Bostrom@swipnet.se (SI-ledare)
Kurslitteratur
Skansholm, J: Java Direkt med Swing, Studentlitteratur. Äldre upplagor av samma
bok, liksom de flesta andra läroböcker i Java, kan användas.
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/gp2004
.
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, |
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 |
AB |
|
Lab1 18/3 |
Introduktion till Java. Knapptryckningsövning |
|
MS |
Obs! Samling i en lektionssal |
F3 19/3 |
Klasser, objekt, metoder. Variabler, tilldelning, enkel inläsning/utskrift. Metoder, parametrar, styrande satser |
2.1-2.8, 2.10, 18.1 |
AB |
|
F4 22/3 |
forts |
2.1-2.8, 2.10, 18.1 |
AB |
|
F5 22/3 |
Reserv |
|
|
|
SI1, A 22/3 |
(kan starta tidigare om reservföreläsningen inte används) |
|
HB |
|
SI1, B 22/3 |
|
|
HB |
|
Le1 23/3 |
Mycket enkla programsnuttar |
|
AB |
|
Lab2 25/3 |
Introduktion till Java. Programmera-själv-övning |
|
MS |
|
SI2, 25/3 |
|
|
HB |
|
F6 26/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 |
F7 29/3 |
forts |
3.1 -3.4, 4.1 -4.4 |
AB |
|
F8 29/3 |
Reserv |
|
|
|
Lab3 30/3 |
Introduktion till objektorientering. Tänk-själv-övning. |
|
MS |
|
SI3, 30/3 |
|
|
HB |
|
Glad
påsk! |
||||
F9 14/4 |
Enkel objektorientering forts |
|
AB |
|
F10 14/4 |
forts |
|
AB |
|
SI4 14/4 + 15/4 |
|
|
HB |
|
Le2 15/4 + 16/4 |
Enkla program, objektorientering |
|
AB |
Suns Java Tutorial, avsnitt om Object, Message och Class är läsvärda |
F11 19/4 |
Avancerad objektorientering, arv, relationer mellan klasser och objekt |
4.1 - 4.5,3.2 - 3.4 |
AB |
|
F12 19/4 |
forts |
|
AB |
|
F13 20/4 |
Arrayer |
kap 9 |
AB |
|
Le3 21/4 |
Objektorienterade program, arrayer. |
|
AB |
|
SI5, 22/4 |
|
|
HB |
|
F14 28/4 |
Använding av färdiga klasser, exempel. Introduktion till projekten. Större program. |
|
AB |
|
F15 28/4 |
forts. |
|
AB |
|
F16 29/4 |
Större program, exempel |
|
AB |
|
Trevlig
sista april! |
||||
Le4 3/5 |
Komplexare program |
|
AB |
|
F17 4/5 |
Beräkningsmodeller |
Roland Bol |
|
|
F18 4/5 |
Klassvariabler. Avancerade programspråkskonstruktioner. Enkel grafik |
AB |
|
|
F19 6/5 |
Enkel grafik |
AB |
|
|
F20 6/5 |
Reserv |
AB |
|
|
SI6, 7/5 |
|
HB |
|
|
Lab4 7/5 |
Mer avancerad objektorientering. Tänk-stort-övning. |
MS |
|
|
Lab5 10/5 |
Enkel grafik. Rita-och-berätta-övning. |
AB |
|
|
Sem P/V 18/5 |
Vetenskapen datavetenskap |
|
LGJ, AB |
|
SI7, A 12/5 |
|
|
HB |
|
SI7, B 13/5 |
|
|
HB |
|
Tenta 24/5 |
|
|
studenterna |
|
Sem P 2/6 – 3/6 |
Redovisning, programmeringsuppgift |
|
AB/MS |
|
Länkar
Skansholms bok,
med bl a tryckfel, lösningar till uppgifter, samt anvisningar
för hur man installerar Java själv mm
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
Development Kit download for Linux, Solaris or Windows
Ansvarig för web-sidan: Anders
Berglund.