PROGRAMMERINGSMETODIK

Relevanta dokument
PROGRAMMERINGSMETODIK

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Objektorienterad programmering, allmänt

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Imperativ programmering

Objektorienterad programmering

Program & programmering

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

SKOLFS. beslutade den XXX 2017.

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Imperativ programmering. Föreläsning 4

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Exempel på typer av datorspråk EXCEL

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

SKOLFS. beslutade den -- maj 2015.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Introduktion till programmering

Inledande programmering med C# (1DV402) Introduktion till programmering

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Datastrukturer och algoritmer

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Objektorienterad programmering

Innehåll. Inblandade personer. ÿkurspresentation Inblandade personer Administration Målsättning Förkunskaper Kursutvärdering Upplägg Översikt

Exempel på typer av datorspråk EXCEL

Programmering = modellering

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

Objektorienterad programmering. Grundläggande begrepp

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Grundkurs i programmering - intro

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Programmering som språk

Fakulteten för ekonomi, kommunikation och IT. Utbildningsplan SGITD. IT-Designprogrammet. Study programme in IT-Design

Digitalt lärande och programmering i klassrummet

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Föreläsning 2. Operativsystem och programmering

Varför programmering i läroplanerna?

IT för personligt arbete F6

Kursplanering för EE3D i kursen Programmering 1, 100p.

Genicore AB. Modellbaserad ansats. En liten firma i Göteborg som gör stora datasystem. Systemspråk - När modellen är systemet. torsdag 10 maj 2012

Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm

Objektorienterad programmering

Objektorienterad programmering

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

13 1MA302 Automatateori DV1 4 A D, M 1TD442 Algoritmer och datastrukturer DV1 6 A D

Kapitel 2. Evolutionen av de viktigaste programmeringsspråken ISBN

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Grundläggande datavetenskap 4p

Introduktionsmöte Innehåll

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Programmering eller Datalogiskt tänkande

Om programmering i matematikundervisning

Testning av program. Verklig modell för programutveckling

Ökad valbarhet för Systemvetenskapliga programmet. Möjlighet till inriktning

Vad är. Domändriven design?

Föreläsning 5 5DV086 - Programspråk

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Sista delen av kursen

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

Om programmering i matematikundervisning

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Abstraktion. procedurabstraktion. DA2001 (Föreläsning 26) Datalogi 1 Hösten / 27

Sista delen av kursen

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

WEBBSERVERPROGRAMMERING

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Föreläsning 1: Intro till kursen och programmering

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Utbildningsplan för Datavetenskapligt program, 180 högskolepoäng

729G06 Föreläsning 1 Objektorienterad programmering

Föreläsning 1: Introduktion till kursen

TDP002 Imperativ programmering

Webbserverprogrammering

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto

Datavetenskapligt program, 180 högskolepoäng

Välkomna till DIT012 IPGO

Talföljer och cirklar: Algoritmer, geometri och mönster 2 av 4

Datavetenskapligt program, 180 högskolepoäng

Sanningar om programmering

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Erfarenheter från labben

Transkript:

PROGRAMMERINGSMETODIK 1 Metaforer för programmering Hierarki, modularitet, överblick Programbyggnadskunskap Utvecklingsprocessen Kategorier av programspråk Programmering som allmän konst Metaforer för programmering Instruktion programmering: att instruera datorn vad som ska göras lära sig programmera som att lära sig italienska? Konstruktion (av programmet) programmering: som att bygga ett hus botten-upp instrumentalism Problemlösning programmering: att lösa problem Strukturerad Programmering (föranledd av mjukvarukrisen) strukturella ideal: hierarki, modularitet, överblickbara kontrollstrukturer toppen-ned, stegvis detaljering, arbetsdelning software engineering konst/hantverk eller industri? jfr Taylorism, scientific management realism några komplikationer: ofullständig information svårspecificerbara villkor lösningen förändrar problemet Adaptation programmering: att gradvis anpassa ett beteende (program-met) till sin slutliga kontext ej väldefinierat slut Demonstration programmering genom att med exempel visa det avsedda beteendet ett stort problem: avgränsning, abstraktion, induktion gemensamt med ostensiva definitioner och radikal översättning (Quine) gavagai -exemplet 2 1

Hierarki, modularitet, överblick 3 ej modulärt modulärt Hierarki Modularitet olika delar av ett program bör vara så löst kopplade, så oberoende av varandra som möjligt Notera: viss modularitet följer naturligt ur toppen-ned-ansatsens stegvisa nedbrytning av problemet Överblickbara kontrollstrukturer Go To Statement Considered Harmful (Dijkstra 1968) Fördelarna med att följa dessa strukturella ideal är i huvudsak kognitiva: de underlättar att förstå hur programmet fungerar validera programmet lokalisera fel korrigera fel anpassa programmet till förändringar i uppgiften anpassa programmet till förändringar i driftsmiljön (både mjukvara och hårdvara) utnyttja programmet eller dess komponenter för nya ändamål Vad behöver man kunna för att bygga ett program? 4 Förståelse för hur den färdiga konstruktionen ska utnyttjas, vilken uppgift den fyller, driftsförhållanden, framtida behov, etc. speciellt för programmering är att uppgifterna kan gälla nästan vad som helst Materialkännedom, teknikkunskap, kunskap i bakomliggande teorier grundläggande datatyper och kontrollstrukturer grundläggande algoritmer (standardlösningar) designmönster programspråk Kunskap och färdighet i att använda olika hjälpmedel och verktyg editorer, språkprocessorer, felsöknings- och mätverktyg komponentbibliotek operativsystem Metodkunskap, förmåga att utvärdera konstruktionsförslag, kvalitetskriterier, kreativitet problemanalys, problemlösningsmetodologi effektiva arbetsmönster, arbetsorganisation valideringsmetoder utvärderingskriterier 2

Den klassiska utvecklingsprocessen 1. Uppgiftsformulering, problemspecifikation 2. Algoritmkonstruktion (problemlösning) 3. Verifikation (att algoritmen uppfyller specifikationen) 4. Kodning (programskrivning) 5. Testning och avlusning 6. Validering (att programmet löser uppgiften) 7. Dokumentering (löper parallellt med de andra momenten) 8. Underhåll, förvaltning (sträcker sig över programmets hela livslängd) Problemspecifikationen är viktig, så viktig att en del har menat att när man har den rätta specifikationen av problemet så har man också lösningen Notera att man vill skjuta på kodningen och arbeta mer abstrakt och programspråksoberoende så länge det går Verifikation: idealiskt ett strikt bevis, men mycket mödosamt för icketriviala program Varför behövs Dokumentering? programmet beskriver ju beteendet? Varför behövs Underhåll? program ruttnar väl inte? Verkligheten är inte fullt så rätlinjig 5 Kategorier av programspråk Manipulativa / imperativa språk Ex: Fortran, Cobol, Algol, Pascal, Basic, c hantverksmetafor: beskriv hur dataobjekten ska bearbetas och manipuleras steg för steg i kronologisk ordning Funktionella och relationella språk Ex: Lisp, APL, ML; Prolog (logikbaserat) matematiska funktioner resp. relationer som förebild Objektorienterade och agentorienterade Ex: Simula, Smalltalk, c++, Java objektmetafor; agentmetafor 6 3

Programspråk 7 Programmering som allmän konst Läsa, skriva, räkna borde programmera läggas till listan av grundläggande färdigheter som den ordinära medborgaren bör kunna förutsättas behärska i det 21:a århundradet? (Andrea disessa) Lämpliga programmeringsmetoder, lämpliga programspråk? Är existerande typer av programspråk bra nog, eller måste något bättre till? Behövs andra slags symbolsystem? t.ex. visuella språk? 8 4

Visuella programspråk Exemplet Janus 9 5