EDAA01 Programmeringsteknik
Transcription
EDAA01 Programmeringsteknik
EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 1+2 (Ges även lp 3) 7.5 hp anna.axelsson@cs.lth.se sandra.nilsson@cs.lth.se 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