Algoritmen en Complexiteit Programmeerparadigma’s Voorbereiding Visitatie ZAP vergadering woensdag 27/2/2008 1/11 Algoritmen en Complexiteit: Inhoud week 1-4 5-6 7 8 - 10 11-12 inhoud Uniforme worst-case tijdscomplexiteit, toegepast op sorteeralgoritmen: big-o, big-omega lexicografisch sorteren comparison-based sorteren Modellen: RAM, RASP, TM en de verbanden ertussen. log vs. uniforme complexiteit Subwoord - probleem NP - time en NP - space SAT is in NP - time Reducties: hamiltonian path, colourability Randomized algorithms, Mincut, RP , ZPP 2/11 Werkvorm Klassiek hoorcollege met “theoretische” oefeningen Enkele opdrachten, maar zonder permanente evaluatie Materiaal: Syllabus (uitgewerkte slides) Handboeken: Aho, Hopcroft, Ullman: “The design and Analysis of Computer Algorithms” Aho, Motwani, Ullman: “Automata Theory, Languages and Computation” Examen: Open boek (syllabus) 3/11 Doelstellingen - Basiskennis over tijds-en plaatscomplexiteit: definities en hun motivatie Complexiteit van een gegeven algoritmen kunnen bepalen Redeneren over de correctheid van een algoritme Inzicht verwerven in de samenhang complexiteit - model Basiskennis complexiteitsklassen Gebruik van reducties tussen problemen Kennismaking met gerandomizeerde algoritmen en hun analyse 4/11 Volgtijdelijkheid Vereiste voorkennis: - Enige programmeerervaring, basiskennis algoritmen Eindige automaten (Talen en Automaten) Turing machines (Machines en Berekenbaarheid) Elementaire datastructuren (Gegevensstructuren) 5/11 Kerncompetenties • • • • • • • KC1: Analyse en ontwerp KC2: Implementatie KC3: Onderhoud KC4: Databank KC5: Lokaal netwerk beheer KC6: Support en advies KC7: Communicatievaardigheden • • • • • • KCD1: Formeel denken +++ KCD2: Wetenschappelijk verwerken van data KCD3: Opvolgen technologische ontwikkelingen KCD4: Eigen maken nieuwe technieken + KCD5: Autonoom en creatief functioneren + KCD6: Wetenschappelijke basis +++ ++ + 6/11 Programmeerparadigmas: Inhoud week 1 2-6 6 - 12 inhoud theorie Inleiding: de 4 belangrijkste paradigma’s, overzicht. Theorie achter het functioneel programmeren ( - calculus): syntax, beta-reductie, alpha-congruentie combinatoren, rekenen in - calculus, lijststructuren reductiestrategieën, normal order types, implementatie Logisch programmeren in PROLOG: de taal, syntax en semantiek unificatie, implementatie Practica: functioneel programmeren in Haskell programmeren in PROLOG 7/11 Werkvorm Theorie: hoorcollege met “theoretische” oefeningen over - calculus Practica: programmeeropdrachten Haskell - Prolog gedeeltelijk permanente evaluatie Materiaal: Syllabus (uitgewerkte slides) Handboeken: Simon Thompson, “Haskell, the Craft of Functional Programming” Adam Brooks Webber, “Modern Programming Languages: a Practical Introduction” Examen: Open boek (syllabus) + programmeeropdrachten 8/11 Doelstellingen - Basiskennis - calculus: geschiedenis en motivatie, werking verband met echte functionele talen - Programmeren in Haskell - Programmeren In PROLOG - Noties van de implementatie van beide 9/11 Volgtijdelijkheid Vereiste voorkennis: - Enige programmeerervaring, basiskennis algoritmen Basiskennis logica: wff, kwantoren, predicaten Enkele noties van berekenbaarheid Elementaire datastructuren Verband met andere vakken; zoals databases, AI? 10/11 Kerncompetenties • • • • • • • KC1: Analyse en ontwerp KC2: Implementatie KC3: Onderhoud KC4: Databank KC5: Lokaal netwerk beheer KC6: Support en advies KC7: Communicatievaardigheden • • • • • • KCD1: Formeel denken ++ KCD2: Wetenschappelijk verwerken van data KCD3: Opvolgen technologische ontwikkelingen KCD4: Eigen maken nieuwe technieken ++ KCD5: Autonoom en creatief functioneren KCD6: Wetenschappelijke basis ++ ++ + (?) 11/11