ÿþýüûúùø øö ô Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Innehåll 2 ÿkurspresentation Inblandade personer Administration Målsättning Förkunskaper Kursutvärdering Upplägg Översikt ÿföreläsning 1 Viktiga begrepp ÿkapitel 1 och 2 i kursboken Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 2 Inblandade personer ÿföreläsare Anders Broberg Lena Kallin Westin (kursansvarig) Ulrika Hägglund ÿhandledare Mattias Flodin David Olsson 3 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 3
Administration ÿpersoner som inte haft en datoranvändare (xxx@cs.umu.se) på datavetenskap tidigare: Fyll i vit blankett och prata med mig. Fyll i gul blankett för att få tillgång till labsalarna. ÿom detta är första kursen på UmU: Fyll i blå blankett också. 4 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 4 Kursutvärdering ÿ2 Kurser ifjol ÿbästa föreläsaren /Byt ut föreläsaren? ÿbyt bok/grymt bra bok ÿrimligare krav ÿbättre ordning på OH-bilderna ÿmer programmeringsövningar ÿföreläsningarna drog ut på tiden 5 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 5 Målsättningar ÿrolig och viktig kurs Kanske en Topp-3 kurs? ÿbli en bättre programmerare och inse att man blivit det Känna till kända lösningar på typiska problem Konstruera robusta och korrekta program Konstruera och beskriva algoritmer och datatyper ÿförstå komplexitetsbegreppet Tid och rum 6 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 6
Vad krävs för att nå dit? ÿge kursen en ärlig chans Läs boken, förstå vad som står där Gör övningar Börja med laborationerna i tid Utnyttja handledningen Säg till om det är något som inte funkar 7 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 7 Förkunskaper ÿkunna implementera en godtycklig algoritmbeskrivning i JAVA/C 8 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 8 Websajten ÿhttp://www.cs.umu.se/kurser/tdba47/vt03/ Schema Uppdateringar Formalia Resultatredovisning Gruppövningar Föreläsningar o Introduktion, OH-bilder, läsanvisningar Gamla tentor 9 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 9
Gruppövningar ÿtill varje föreläsning finns det övningar från boken ÿvissa utvalda räknar vi på gruppövningarna ÿsitter i smågrupper och hjälper varandra ÿen gruppövning i datorlabbet ÿfrivillig gruppövning 0, fredag 10-12 För de som tänker programmera i C ÿfrivillig legoprogrammeringsövning Måndag eftermiddag 10 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 10 11 Gruppövningar ÿ Gruppövning 0 (för de som läst C): Att programmera stora C-program ÿ Gruppövning 1: Implementering av en länkad lista och debugging ÿ Gruppövning 2: Fält, tabeller, stackar och köer ÿ Gruppövning 3: Komplexitetsanalys ÿ Gruppövning 4: Träd, Heap, Prioritetskö, Grafer och grafalgoritmer ÿ Gruppövning 5: Sökträd, Trie, Mängd, Lexikon ÿ Gruppövning 6: Gammal tenta Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 11 Examination ÿ Tre stycken obligatoriska uppgifter Implementera tabeller Implementera en router Analysera tre algoritmer o Experimentellt o Asymptotiskt (gruppövning) Alla löses individuellt ÿtvådelad tentamen (Måste vara godkänd på båda delarna). En begreppsdel o Förklara kortfattat ett antal begrepp En förståelsedel o Frågor där man får visa att man förstått kursen hur saker och ting hänger ihop 12 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 12
13 Innehållsöversikt ÿalgoritmer Komplexitetsanalys, tid och rum Designprinciper Exekvering, implementering, underhåll ÿabstrakta datatyper Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mm Modell, Organisation, Specifikation, Gränsyta Olika grundbegrepp Implementation, komplexitetsanalys Tillämpningar Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 13 14 Innehållsöversikt forts ÿsökning och traversering Olika metoder och hur dom passar i olika lägen Kan sökmetoderna ställa krav på implementationen av ADT och i så fall vilka? ÿsortering Sorterad ADT vs sortering av data 5-6 olika algoritmer, analys ÿdesign av algoritmer Olika algoritmtyper som brute force, divide and conquer, greedy och dynamiska Exempel och typiska användningsområden För- och nackdelar Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 14 Att bygga program ÿ bygga hus/broar ÿprogrammering ÿhusbygge Problembeskrivning Specifikation/Beskrivning Systemdesign Material Modelleringsverktyg Verktyg o Datatyper representera datat i programmet Utvärdering/uppföljning o Algoritmer stegvis plan för att utföra något, modellera hur man löser problemet o Kontrollstrukturer för att modellera flödet Utvärdering/uppföljning o Komplexitetsanalys o Valideringskriterier 15 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 15
16 Metaforer för programbyggnad ÿinstruktionsmetaforen Programmeraren är en arbetsledare som ger instruktioner till datorn som den sedan följer i tur och ordning till punkt och pricka. ÿproblemlösningsmetaforen Vad ska göras och hur ska det göras? Programmeraren löser problemet (skriver en algoritm) som sedan implementeras. ÿadaptionsmetaforen Programmet är ett objekt som ingår och interagerar med en miljö. Programmet anpassas till miljön gradvis Låg nivå nära datorn Hög nivå Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 16 Datavärldsbilder ÿmanipulativa ansatsen Hantverksmetafor, man har ett (passivt) objekt som bearbetas steg för steg tills man nått målet. Imperativa språk som C, Pascal, Modula, Ada ÿfunktionella ansatsen Matematisk funktionsmetafor, man ändrar aldrig ett objekt. Resultatobjekten är avbildningar av startobjekten. Funktionella/relationella språk som ML, Lisp, Prolog ÿobjektorienterade ansatsen Objekten har själv egenskaper och beteenden och interagerar med andra objekt. Händelsestyrd programmering. Objektorienterade språk som Java, C++ 17 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 17 Kursens (och bokens) strategi: ÿatt beskriva datastrukturer och ansatser så neutralt som möjligt. Detta gör att kunskaperna blir mer generella och allmänt tillämpbara. ÿspråkoberoende 2/3 av studenterna har Java som bakgrund och 1/3 har C som bakgrund. Kan själv välja språk på labbarna Oftast pseudokod på föreläsningarna 18 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 18
Gränssnitt 19 ÿvad är ett gränssnitt? Kontaktyta Gränsen mellan två eller flera delar Överenskommelse - oberoende av vem, vart, hur ska det passa o Musköten 1700-talet o Lego Uppmuntrar till lösaktighet o Skruvmejslar med olika spetsar Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 19 20 Gränssnitt ÿseparerar Funktion och implementationen Användning och skapandet Specifikationen och konstruktionen ÿfinns i datavetenskapen Mellan centralenheter och periferienheter Mellan människan och maskinen Mellan mjukvarukomponenter o Funktioner/metoder o Datatyper o etc Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 20 21 Begrepp ÿdata - objekten som bär information ÿdatatyp - värdemängd samt operationer Enkel (heltal) Sammansatt (Lista av heltal) o Homogen vs. Hetrogen Fysisk - Implementerad i språket/hårdvaran Abstrakt - När man inte är intresserad av om/hur den är implementerad i språk/hårdvara Konstruerad när man beskrivit hur man skulle representera objekten och operationer Implementerad - komplett konstruerad från grunden (fysiska datatyper) och redo att användas i ett program Konkret = Fysiska, implementerade eller konstruerade datatyper Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 21
Beskrivningssätt ÿ Modell - vardaglig, det man modellerar Kö ÿ Organisation Den grundläggande naturen på objekten, linjärt ordnade, före och efter relation etc. ÿ Informell beskrivning Gränsytan (nödvändig och minimal, kraftfull) Informell beskrivning av operationernas funktion Signaturdiagram ÿ Formell beskrivning - rent matematisk-logisk ÿ Konstruktioner och implementationer Komplexitetsanalys ÿ Tillämpningar och algoritmer 22 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 22