PROGRAMMERINGSMETODIK



Relevanta dokument
PROGRAMMERINGSMETODIK

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

Imperativ programmering

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

Objektorienterad programmering

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Program & programmering

SKOLFS. beslutade den XXX 2017.

Imperativ programmering. Föreläsning 4

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

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

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

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Exempel på typer av datorspråk EXCEL

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

SKOLFS. beslutade den -- maj 2015.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Om programmering i matematikundervisning

Programmering för alla!

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

Programmering som språk

Laboration i datateknik

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

Introduktion till programmering

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

Om programmering i matematikundervisning

Datastrukturer och algoritmer

Digitalt lärande och programmering i klassrummet

Programmering för alla!

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

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

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

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

Objektorienterad programmering

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

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

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

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

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

Grundkurs i programmering - intro

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

Introduktion till programmering. Programspråk och paradigmer

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

Föreläsning 2. Operativsystem och programmering

Objektorienterad programmering. Grundläggande begrepp

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

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

Exempel på typer av datorspråk EXCEL

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

Datavetenskapligt program, 180 högskolepoäng

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

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

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

Programmering från början

Programmering = modellering

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Presentation. Curriculum Vitae för Lars Kristiansson,

Programmering eller Datalogiskt tänkande

TDP002 Imperativ programmering

Grundläggande datavetenskap 4p

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

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

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

Introduktionsmöte Innehåll

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

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

Varför programmering i läroplanerna?

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

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

Deklarativt programmeringsparadigm

Datavetenskapligt program, 180 högskolepoäng

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

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

Om programmering i matematikundervisning

Sista delen av kursen

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

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

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

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

729G06 Föreläsning 1 Objektorienterad programmering

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Sista delen av kursen

Software Technology. Josef Svenningsson

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

Programmering i skolan varför då? Lisa Söderlund Pedagogik och kommunikation

Funktionell programmering

Vad är. Domändriven design?

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

Imperativ och Funktionell Programmering i Python #TDDD73

Programmering, grundkurs

Programmering i skolan varför då? Lisa Söderlund Pedagogik och kommunikation

Kapitel 2. Evolutionen av de viktigaste programmeringsspråken ISBN

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 2

Metaforer för programmering (2) Adaptation programmering: att gradvis anpassa ett beteende (programmet) till dess 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) 3

Hierarki, modularitet, överblick 4 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? 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 5

Den klassiska utvecklingsprocessen 6 1. Problemspecifikation, uppgiftsformulering, 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

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 7

Programspråk 8 105! Lars-Erik Janlert 2013!

Programspråk (~R R. R)/R 1 R life { 1. 3 4=+/, 1 0 1. 1 0 1. } 106! 9 2013!

Programspråk 10 107! Lars-Erik Janlert 2013!

Programmering som allmän konst Läsa, skriva, räkna kraftfulla kognitiva instrument som idag ses som självklara grundläggande färdigheter för envar (men de startade som kunskaper för en mycket liten elit av experter) Borde programmera läggas till listan av grundläggande färdigheter som samhällsmedborgaren i det 21:a århundradet bör behärska? Programmering är ju ett sätt att beskriva och kontrollera beteende att planera och kontrollera beteende och utveckling av artefakter, system, miljöer, sitt personliga vardagsliv (yrkesliv såväl som privatliv), etc. är av intresse för de flesta behovet av mer, bättre och smartare kontroll tycks öka med den allmänna ökningen av tempo, effektivitet, uthållighet och teknologisk nivå programmering kan också fungera som agerande genom ombud: automatisering av uppgifter man helst slipper att göra själv, eller för att utsträcka räckvidden eller omfattningen av sina handlingar genom att använda program som (personliga) ombud Notera att program även kan vara ett sätt att analysera och förklara beteenden enkelt exempel från Artificiellt Liv: boids (http://www.red3d.com/cwr/boids/) 11

Programmering som allmän konst (2) Computer literacy ( datakunskap ) har kommit att inte betyda mer än att kunna använda datorer vilket är att inte säga just någonting alls man har föreslagit att en allmän programmeringsfärdighet istället kunde kallas programming literacy eller computational literacy Två starka företrädare för computational literacy är Seymour Papert, bl.a. uppfinnare av språket Logo (och inspiration till Lego Mindstorms som används i datalabbarna), och Andrea disessa, bl.a. uppfinnare av Boxer båda intresserade av utbildning, kreativitet och personlig utveckling Vad behövs för att detta ska bli verklighet? tidiga övningar med grundläggande kontrollstrukturer och och datatyper?; övningar i problemlösning och kreativitet?; utveckling av programspråk som är lättare att förstå och använda?; integration av programmering i grundläggande undervisning i de flesta skolämnen (som redan sker med att läsa och skriva)?; eller ytterligare något, eller något helt annat?

Visuella programspråk Janus, Lego Mindstorms, Satin-appar 13

Handgripliga (tangible) programspråk Ex: Tern 14

Att diskutera Varför behövs programunderhåll? Vilka paradigm för programspråk har vi? Metaforer för programmering? Vad kännetecknar strukturerad programmering? Vilka kompetenser är viktiga för en programmerare? Vilka steg ingår i klassisk programutvecklingsprocess? 15