© 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 Administration Målsättning Förkunskaper Kursutvärdering Upplägg Översikt Föreläsning 1 Viktiga begrepp Kapitel 1 och 2 i kursboken
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Inblandade personer Föreläsare Anders Broberg Lena Kallin Westin (kursansvarig) Ulrika Hägglund Handledare Lena Kallin Westin Ulrika Hägglund
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Lena KW
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Ulrika H Anders B
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Administration Personer som inte haft en datoranvändare på datavetenskap 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å.
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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
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 Läs boken, förstå vad som står där Delta på föreläsningar Gör (grupp)ö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, 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, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Gruppövningar 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Examination Tre stycken obligatoriska uppgifter Implementera tabeller Implementera en router Analysera tre algoritmer oExperimentellt oAsymptotiskt (gruppövning) Alla löses individuellt 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, 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
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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ändnings- områden För- och nackdelar
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 ??? oSkruvmejslar med olika spetsar
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, Gränssnitt Separerar Funktion och implementation Användning och skapande Specifikation och konstruktion Finns i datavetenskapen Mellan centralenheter och periferienheter Mellan människan och maskinen Mellan mjukvarukomponenter oFunktioner/metoder oDatatyper oetc…
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
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