Föreläsning 1 Kurspresentation Inblandade personer Målsättning Förkunskaper Kursutvärdering Upplägg Översikt Föreläsning 1 Viktiga begrepp Innehåll Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 2 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 2 3 Inblandade personer Föreläsare Anders Broberg (kursansvarig) Gruppövningar Anders Ulrika Anna Peter Handledare Peter Daniel Anna Ulrika Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 3 4 Kursutvärdering från ifjol 1 Kurs med ca 150 studenter Bra föreläsare, dock lite oförberedd ibland Byt bok/grymt bra bok Rimligare krav Bra tempo på föreläsningarna, lite segt ibland Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 4 Detta resulterade i... Stor omarbetning 2003 an hela kursen Omarbetning av OH-materialet Från kaos till strikt ordning Delvis nya laborationer En nyinlagd datorövning i början av kursen Och vad blev det av detta Överlag så var det mycket positiva intryck från studenterna Bra upplägg Man har lärt sig grymt mycket Boken är fortfarande den samma... Men... Kursen gick på helfart för vissa... Tunga laborationer och svårtolkad lab. Svårt att få handledning 5 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 5 6 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 6
Så... Laborationer Vi har sett över laborationerna ett par gånger Bytt bok till i år Två kurser i år Sett över gruppövningarna Tre stycken Implementera tabeller (individuell) Implementera en router (2 och 2) Analysera tre algoritmer oexperimentellt (individuell) oasymptotiskt (gruppövning) 7 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 7 8 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 8 Liten undersökning om programmering Liten undersökning om programmering fortsättning Sätt er efter programtillhörighet Hur roligt är programmering, gradera er efter en skala: o Det roligaste som finns o Roligare än det mesta o Aceptabelt o Tråkigare än det mesta o Det tråkigaste som finns Flytta om er inom programtillhörighet Vad är det som gör att ni känner det ni gör? Vad är det som gör det så roligt? Varför är det så himla tråkigt? 9 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 9 10 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 10 Mina målsättningar En Topp-3 kurs Alla ska höja sig ett par snäpp som programmerare, och inse att man har gjort det Förstå komplexitetsbegreppet Tid och rum Rolig kurs Era målsättningar 11 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 11 12 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 12
Vad krävs för att nå dit? Ge kursen en ärlig chans Kom i tid till föreläsningarna 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 Förkunskaper Kunna implementera en godtycklig algoritmbeskrivning i JAVA/C 13 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 13 14 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 14 Gruppövningar Gruppövningar 2 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 Gruppövning 1: Implementering av en länkad lista och debugging Gruppövning 2: Komplexitetsanalys Gruppövning 3: Fält, tabeller, stackar och köer Gruppövning 4: Träd, grafer och grafalgoritmer Gruppövning 5: Sökträd, Trie, Heap, Mängd, Lexikon och Prioritetskö 15 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 15 16 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 16 Tentan Websajten Tvådelad tentamen (Måste vara godkänd på båda delarna). En begreppsdel oförklara kortfattat ett antal begrepp En förståelsedel ofrågor där man får visa att man förstått kursen hur saker och ting hänger ihop http://www.cs.umu.se/kurser/tdba36/vt05/ Schema Uppdateringar Formalia Resultatredovisning Gruppövningar Föreläsningar o Introduktion, OH-bilder, läsanvisningar Gamla tentor 17 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 17 18 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 18
Datastrukturer & Algoritmer Tänket viktigt! 19 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 19 20 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 20 21 Innehållsöversikt Algoritmer Komplexitetsanalys, mm Designprinciper Abstrakta datatyper Stack, Kö, Listor, Träd, Graf, P-kö. Heap. Tabell, Sträng, Mängd, Sökträd, Tries, mm Sökning Olika metoder och hur dom passar i olika lägen Sortering 5-6 olika algoritmer, analys Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 21 22 Algoritmer Tids och rumsfrågor Exekvering, implementering, underhåll Tid vs rumskomplexitet Analys av exekveringstider o Olika sätt, vad de står för och +/- Experimentell Asymptotisk o T(n) för em alg => O(n) Primitiva operationer Okulärbesiktning o Att beskriva algoritmer Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 22 Abstrakta DataTyper Beskrivningssätt Organisation, Modell Gränsytan (formell, informell) Grundbegrepp Vad är en organisation, sorterad ADT, mm Primär vs. sekundär struktur Absolut vs. relativ komplexitet Sätt att implementera +/-, när var hur Komplexitet för de viktigaste operationerna Vart hittar vi ADT typiskt Hur olika ADT hänger ihop med varandra Algoritmer på ADT Sökning (traversering) Vad är traversering Olika metoder för sökning i sekvenser Linjär & Binär +/- Ställer de några krav på implementationen av ADTn 23 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 23 24 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 24
Sortering Design av algoritmer Varför sorterar vi? Sorterad ADT vs sortering av data Sökningen blir snabbare ibland Hur kan vi sortera (olika former) +/- När passar dom? Känna till någon bra alg. Bra Stabil sortering Idéer till 4 olika algoritmtyper Brute force, D&C, Greedy och dynamisk programmering Exempel på varje +/- Typiska användningar 25 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 25 26 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 26 Föreläsning 1 Att bygga program bygga broar Brobygge Specifikation Beskrivning Material Verktyg Uppföljning Att bygga program bygga hus/broar Programmering Problembeskrivning Systemdesign Modelleringsverktyg o Datatyper representera datat i programmet 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 Husbygge Specifikation/Beskrivn ing Material Verktyg Utvärdering/uppföljni ng 27 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 27 28 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 28 29 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 29 30 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++ Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 30
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 Flesta studenterna har Java som bakgrund, några har C som bakgrund. Kan själv välja språk på labbarna Oftast pseudokod på föreläsningarna Gränssnitt 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 31 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 31 32 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 32 Gränssnitt Gränssnitt i datavetenskapen Separerar Funktion och implementationen Användning och skapandet Specifikationen och konstruktionen Mellan centralenheter och periferienheter Mellan människan och maskinen Mellan mjukvarukomponenter Funktioner/metoder Datatyper Datakommunikation Distribuerade system 33 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 33 34 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 34 Begrepp Datatyper = op. + obj. Vilka objekt är det? ovad vill vi modellera/representera/ abstrahera Vad kan man göra med dem? ovilka operationer/metoder Begrepp Data - objekten som bär information Datatyp - värdemängd samt operationer Enkel (heltal) Sammansatt (Lista av heltal) o Homogen vs. Heterogen 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 Struktur det som finns kvar när man bortser från elementvärdem 35 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 35 36 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 36
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 37 Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 37