© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Innehåll Kurspresentation Inblandade personer Målsättning Förkunskaper Kursutvärdering Upplägg Översikt Föreläsning 1 Viktiga begrepp
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Inblandade personer Föreläsare Anders Broberg (kursansvarig) Gruppövningar ?? Handledare Peter Markus Erik Tommy
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Kursutvärdering från ifjol, och förfjol 1 Kurs med ca 120 studenter Bra föreläsare, dock lite oförberedd ibland Dumt att byta bok mitt i kursen Rimligare krav Bra tempo på föreläsningarna, lite segt ibland
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Intryck Överlag så var det mycket positiva intryck från studenterna Bra upplägg Man har lärt sig grymt mycket Men... Tunga laborationer och svårtolkad lab.
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Så... Vi har sett över laborationerna ett par gånger Bytt bok till i år tillbaka till Janlert & Wibergs bok Sett över gruppövningarna
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Laborationer Tre stycken Implementera tabeller (individuell) Implementera en router (2 och 2) Analysera tre algoritmer oExperimentellt (individuell) oAsymptotiskt (gruppövning)
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Liten undersökning om programmering Sätt er efter programtillhörighet Hur roligt är programmering, gradera er efter en skala: oDet roligaste som finns oRoligare än det mesta oAceptabelt oTråkigare än det mesta oDet tråkigaste som finns Flytta om er inom programtillhörighet
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Liten undersökning om programmering fortsättning 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?
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Era målsättningar
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Förkunskaper Kunna implementera en godtycklig algoritmbeskrivning i JAVA/C
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Gruppövningar 2 Gruppövning 1: Implementering av en länkad lista och debugging Gruppövning 2: Komplexitetsanalys Gruppövning 3 och 4: Fält, tabeller, stackar och köer Träd, grafer och grafalgoritmer Sökträd, Trie, Heap, Mängd, Lexikon och Prioritetskö
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Tentan 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”
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Websajten Schema Uppdateringar Formalia Resultatredovisning Gruppövningar Föreläsningar oIntroduktion, OH-bilder, läsanvisningar Gamla tentor
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Datastrukturer & Algoritmer
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Tänket viktigt!
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Algoritmer Tids och rumsfrågor Exekvering, implementering, underhåll Tid vs rumskomplexitet Analys av exekveringstider oOlika sätt, vad de står för och +/- –Experimentell –Asymptotisk oT(n) för em alg => O(n) –Primitiva operationer –Okulärbesiktning oAtt beskriva algoritmer
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Sortering 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Design av algoritmer Idéer till 4 olika algoritmtyper Brute force, D&C, Greedy och dynamisk programmering Exempel på varje +/- Typiska användningar
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Föreläsning 1 Att bygga program ≈ bygga broar Brobygge Specifikation Beskrivning Material Verktyg Uppföljning
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Att bygga program ≈ bygga hus/broar Husbygge Specifikation/Beskrivning Material Verktyg Utvärdering/uppföljning Programmering Problembeskrivning Systemdesign Modelleringsverktyg oDatatyper – representera datat i programmet oAlgoritmer – stegvis plan för att utföra något, modellera hur man löser problemet oKontrollstrukturer – för att modellera flödet Utvärdering/uppföljning oKomplexitetsanalys oValideringskriterier
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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å
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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++
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Gränssnitt Vad är ett gränssnitt? Kontaktyta Gränsen mellan två eller flera delar Överenskommelse - oberoende av vem, vart, hur ska det ”passa” oMusköten 1700-talet oLego Uppmuntrar till lösaktighet oSkruvmejslar med olika spetsar
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Gränssnitt Separerar Funktion och implementationen Användning och skapandet Specifikationen och konstruktionen
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Gränssnitt i ”datavetenskapen” Mellan centralenheter och periferienheter Mellan människan och maskinen Mellan mjukvarukomponenter Funktioner/metoder Datatyper Datakommunikation Distribuerade system
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Begrepp Datatyper = op. + obj. Vilka objekt är det? oVad vill vi modellera/representera/ abstrahera Vad kan man göra med dem? oVilka operationer/metoder
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Begrepp Data - objekten som bär information Datatyp - ”värdemängd” samt operationer Enkel (heltal) Sammansatt (Lista av heltal) oHomogen 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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