EDAA01 Programmeringsteknik

EDAA01 Programmeringsteknik - fördjupningskurs
Läsperiod lp 1+2 (Ges även lp 3)
7.5 hp
[email protected]
[email protected]
http://cs.lth.se/edaa01ht
Förkunskapskrav:
Godkänd på obligatoriska moment och/eller på tentamen i någon av
grundkurserna EDA016, EDA011 eller EDA017
eller
Godkänt betyg på grundkursen EDA501 eller EDAA20
PFK (Introduktion)
HT 2015
1 / 15
Detta kan du ...
Förkunskaper
en hel del om programmering och objektorientering
begrepp som klass, objekt, attribut, metod, parameter
skriva mindre program i programspråket Java
skriva och debugga program i utvecklingsverktyget Eclipse
använda vektorer, matriser och (delvis) klassen ArrayList
enkla algoritmer som t.ex. linjärsökning, insättning i en redan sorterad
vektor
använda arv – superklass, subklass, abstrakt metod
PFK (Introduktion)
HT 2015
2 / 15
Detta ska du lära dig ...
Kursens mål
mer om programmering och objektorientering
interface, exceptions, generik ...
använda olika algoritmer och datastrukturer för att effektivt lösa
problem
sökning, sortering ...
listor, binära sökträd, hashtabeller, heapar ...
dels genom att använda färdiga klassbibliotek och dels genom att göra
egna implementeringar
testa klasser (jUnit)
analysera och jämföra algoritmers tidsåtgång
formulera rekursiva algoritmer
skriva program med grafiska användargränssnitt
PFK (Introduktion)
HT 2015
3 / 15
Mål
Förklaring av termer
Algoritm
Beskrivning hur man stegvis löser ett problem.
Ex: matrecept, linjärsökning
Datastruktur
En samling variabler som hör ihop på något sätt.
Ex: vektor, länkad lista, träd
Biliotek
En samling färdiga klasser som är tänkta att användas i andra program.
Fungerar som en utvidgning av programspråket.
Ex: Javas standardbibliotek för samlingar - Java Collections Framework
PFK (Introduktion)
HT 2015
4 / 15
Varför är detta viktigt att kunna?
Till skillnad mot övningsprogram är riktiga program stora, skrivs av flera
personer, har lång livstid, kräver underhåll . . . .
Därför är följande viktigt:
bra design
att man kan välja lämpliga algoritmer, datastrukturer och färdiga
byggstenar (klasser ur bibliotek)
bra verktyg för programutveckling, felsökning och testning
PFK (Introduktion)
HT 2015
5 / 15
Från problem till program
Specifikation av problemet
Design Val av lösningsmetoder (algoritmer, X
y
XXX
XXX
datastrukturer) för delproblem
X
Implementering (programskrivning) Testning X
Behandlas i
EDA061/F10,
OMD
Behandlas i
denna kurs
Underhåll (korrigeringar och uppdateringar)
Parallellt: dokumentation
PFK (Introduktion)
HT 2015
6 / 15
Exempel 1
Skriv program för att hantera kontakter (namn, mobil nr ...).
Att fundera på:
Ska vi använda en vektor eller finns det andra, bättre sätt att lagra
posterna? Finns det färdiga klasser som kan användas?
Hur sker kommunikationen med användaren (utskrifter i konsolfönstret
eller snyggare grafiskt användargränssnitt)? Hur designar man
programmet så att man lätt kan byta sätt?
Hur söker man snabbt om antal poster är stort är stor?
...
PFK (Introduktion)
HT 2015
7 / 15
Exempel 2
Problem: Givet n tal, tag reda på de k största.
Ex: Talen är 4, 1, 9 , 5, 2, 6 och k = 3 ger svaret 5, 6, 9
Lösning: Lagra talen i en vektor och sortera dem med en enkel algoritm.
Sedan är det enkelt att avläsa de k största: 1, 2, 4, 5, 6, 9
Fungerar detta om n och k är stort? Är algoritmen tillräckligt snabb? Finns
det någon annan datastruktur än vektor som passar bättre?
PFK (Introduktion)
HT 2015
8 / 15
Kursens struktur
f 1-2
ö1-3,
lab1
f 3-4
ö 4-5
lab 2
Interface,
exceptions,
generik,
JCF,
iteratorer
Listor,
stackar
köer,
länkade
strukturer
PFK (Introduktion)
f5
ö6
f6
ö7
lab 3
Algoritmers
effektivitet,
Rekursion
tidskomplexitet
f7
lab 6
Grafiska
användargränssnitt
f 8-10
ö 8-11
lab 4-6
Set, map.
Träd,
binära
sökträd,
hashtabeller
f 11
ö 12
f 12
ö 13
Prioritetsköer,
heapar
Sortering
HT 2015
9 / 15
Kursmoment
Laborationer – 6 st lp 1 läsvecka 3, 5, 7 och lp 2 läsvecka 2, 4, 6,
obligatoriska
Kräver förberedelser.
Ska lösas i grupper om två. Anmälan till önskad labbgrupp görs på
kursens hemsida senast ons 2/9.
Inlämningsuppgift – andra halvan av kursen obligatorisk
Ska lösas i grupper om två.
Finns på hemsidan. Det finns två alternativ att välja mellan.
Redovisas i läsvecka 7 i lp 2.
Övningsuppgifter
Viktigt komplement till laborationerna.
Löses på egen hand. Uppgifter och lösningsförslag finns på kursens
hemsida
Föreläsningar – 13 st, lp 1 läsvecka 1-7 och lp 2 läsvecka 1-4, 6-7
Bilder läggs ut på hemsidan och används delvis under föreläsningarna.
Tillsammans med de bilder som inte visats blir de publicerade bilderna
en sammanfattning av kursinnehållet som kan användas för repetition.
PFK (Introduktion)
HT 2015
10 / 15
Examination
Skriftlig tentamen
Kursen inrapporteras i Ladok i två delar
Obligatoriska moment (laborationer + inlämningsuppgift) 3 hp
Tentamen 4.5 hp
PFK (Introduktion)
HT 2015
11 / 15
Lärobok
E. Koffman och A. T. Wolfgang: Data Structures: Abstraction and
Design Using Java, Second Edition.
Den gamla upplagan heter: Objects, Abstraction, Data Structures and
Design Using Java Version 5.0.
Det går bra att använda både den nya och den gamla upplagan
Litteraturanvisningar i kursmaterialet ges för båda upplagorna.
Ny upplaga är på gång (jan 2016).
PFK (Introduktion)
HT 2015
12 / 15
Relation till andra kurser
För C och D ingår kursen i kurskedjor.
Det är viktigt att känns till förkunskapskraven i kedjan. Finns på
hemsidan.
I övrigt gäller att nästan alla valfria kurser i datavetenskap kräver
godkänt i EDAA01.
PFK (Introduktion)
HT 2015
13 / 15
CEQ-synpunkter
Överlag nöjda studenter
Några synpunkter från tidigare kursomgångar:
Laborationerna har varit intressanta och har haft ett första intryck av
att vara väldigt avancerade men sedan varit lättare än vad man kunnat
tro.
Laborationerna var för svåra för att klara av på endast ett tillfälle. –
Labbarna kräver förberedelser.
Det var bra att jobba i par på uppgifterna så man har någon att
diskutera med hela tiden.
Jobbigt att behöva köa för att få hjälp med inlämningsuppgiften. –
Börja i god tid.
Saknar övningstillfällena. – Övningsuppgifterna finns kvar som
självstudieuppgifter. Viktiga! Lös dem.
PFK (Introduktion)
HT 2015
14 / 15
Nytt sedan förra kursomgången:
Senaste versionen av Java, Java 8, innehåller en del nyheter med
anknytning till kursen. I kursboken och i det mesta av kursmaterialet
används Java 7.
Vissa föreläsningsbilder med Java 8 kommer dock att smygas in.
JavaFX kommer att användas (istället för Swing-paketet) för att
skriva grafiska användargränssnitt. Påverkar labb 3, 6 och
inlämningsuppgiften.
Det kommer (troligen) att finnas möjlighet att skriva
inlämningsuppgiften för Android.
Tentorna påverkas ej av detta. Extentorna är alltså fortfarande
aktuella.
PFK (Introduktion)
HT 2015
15 / 15