Grundläggande programmering, 5p

 Senast uppdaterad 28 april 2004


Våren 2004


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. 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

 Några OH för den morgontrötte. Spelet Tjugoett

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

Suns Java Tutorial

Java documentation

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.