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

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

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Programmering grundkurs

729G06 Föreläsning 1 Objektorienterad programmering

Objektorienterad programmering

Programmering, grundkurs

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

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Objektorienterad programmering. Grundläggande begrepp

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 3 Jody Foo,

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

SKOLFS. beslutade den -- maj 2015.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Programmering grundkurs

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Objektorienterad programmering, allmänt

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

Imperativ programmering. Föreläsning 4

Sätt att skriva ut binärträd

Programmeringsteknik II

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 1 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Introduktionsmöte Innehåll

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

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

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

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

Föreläsning 1: Introduktion till kursen

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

Kursplanering Objektorienterad programmering

SKOLFS. beslutade den XXX 2017.

TDDE44 Programmering, grundkurs

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

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

Programmering för språkteknologer II, HT2011. Rum

Datastrukturer och algoritmer

Programmering grundkurs

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

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Kursinformation Grundkurs i programmering med Python

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

Föreläsning 1: Introduktion till kursen

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

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

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

Programmering A. Johan Eliasson

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

Föreläsning 1: Introduktion till kursen

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

Objektorienterad programmering

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

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

Föreläsning 15: Repetition DVGA02

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 1 Jody Foo,

Datateknik GR (A), Introduktion till programmering i C++, 7,5 hp

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

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

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

1 Klasser och objektorientering Vad är objektorientering?

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

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Tentamen ID1004 Objektorienterad programmering October 29, 2013

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

EDAA01 Programmeringsteknik - fördjupningskurs

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

Objektorienterad programmering Föreläsning 4

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

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 1 Jody Foo,

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

PROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.

Programmeringsteknik I

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

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

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

Programmering B med Visual C

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Objektorientering. Grunderna i OO

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

OOMPA 2D1359 Föreläsning 2

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Classes och Interfaces, Objects och References, Initialization

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

Transkript:

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

Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt Programmeringsmetod

Kursinfo/Om kursen

Programmering och algoritmiskt tänkande: Kursmål konstruera abstraktioner med varierande grad med stöd från det underliggande programmeringsspråket identifiera och förklara abstraktioner i programkod utarbeta och tillämpa algoritmer för att lösa problem producera program med enkla grafiska användargränssnitt tillämpa ett metodiskt och interaktivt tillvägagångssätt att lösa programmeringsrelaterade problem genom implementering, testning och felsökning relatera programmering och algoritmiskt tänkande till kognitionsvetenskap och kognitionsvetenskapliga tillämpningar

Temaupplägg Varje tema består av följande: Föreläsningar Lektion Introuppgift Temauppgift Algoritmseminarium

Examination: provkoder Tre provkoder, motsvarar kursens tre teman PRA1, 2hp (Tema 1) PRA2, 2hp (Tema 2) PRA3, 2hp (Tema 3)

Examination: moment Uppgifterna i varje tema bygger på varandra Introduktionsuppgift: introduktion till ny syntax och pythonbegrepp Temauppgift: algoritmisk tillämpning av ny syntax och begrepp Algoritmseminarium: Genomgång och diskussion av temauppgiften i grupp Temarapport: Skriftlig behandling av aspekter av temauppgiften.

Examination: resultat på delmoment Introduktionsuppgift: komplettering/ok Temauppgift: komplettering, brons-, silver- eller guldnivå Algoritmseminarium: komplettering/ok Temarapport: komplettering, brons-, silver-, eller guldnivå För betyget Godkänd på ett tema krävs 2st OK och minst 2st brons. För betyget Väl godkänd på ett tema, krävs 2st OK och minst ett silver och ett guld. För betyget Godkänd på hela kursen krävs betyget Godkänd eller högre på alla tre teman. För betyget Väl godkänd på hela kursen krävs betyget Väl godkänd på alla tre teman.

Övergripande läromål för varje tema Algoritmiskt tänkande: prova på och förstå, några algoritmer inom en viss domän. Programmering: Objektorienterad modellering och design syntax i Python programmeringsmetod (implementation, testning, felsökning)

Teman Tema 1: Sorteringalgoritmer och objekt Introduktion till algoritmiskt tänkande och objektorientering Sorteringsalgoritmer Tema 2: Grafiska gränssnitt och layout Introduktion till GUI-programmering Algoritmer för layout Tema 3: Genetiska algoritmer Objektorienterad design Liten simulering med genetiska algoritmer

Grupper Jobbar i par. Nytt par bildas inför varje tema.

Deadlines

Algoritmer

Vad är en algorithm? Informellt: en väldefinierad beräkningsbar (computational) procedur som givet ett värde, eller en mängd värden som input producerar ett värde, eller en mängd värden som output. (Cormen et. al. 2009. Introduction to algorithms) En algoritm är en metod som, givet ett väldefinierat utgångsläge, löser ett problem genom att ett ändligt antal elementära och väldefinierade operationer tillämpas i en förskriven ordning. (Lunell. 2011. Datorn i världen, världen i datorn) En algoritm sägs vara korrekt om det för varje indata, avslutar med korrekt utdata.

Vad är algoritmiskt tänkande? Ett sätt att analysera och angripa problem. Att gå från ett icke väldefinierat problem till ett väldefinierat problem. Bryta ner problemet. Se mönster.

Vad har detta för relevans för en kognitionsvetare? Att bryta ner ett problem är en viktig komponent i att förstå en domän. Detta är en färdighet som vi tillämpar när vi gör kvalitativ analys skapar modeller programmerar skriver rapporter Inom programmering har vi möjlighet att implementera vår lösning och testa den på med korta iterationer.

När blir det en algoritm? Input: Vad är indata? Vad vet vi? Vad behöver vi veta? Hur representerar vi data? Formulera problemet: Gör problemet väldefinierat: För vilka input vill vi kunna komma fram till en lösning? Vilka är normalfallen? Output: Hur ser en lösning ut? Vad är en korrekt lösning? Finns flera korrekta lösningar? Finns det en bästa lösning? Formulera lösningen: Gör lösningen väldefinierad. Hur vet vi att något är en lösning?

Levande algoritmer? Organisera er i 4 lika stora grupper

Sortering

Objektorienterad programmering

Ni har redan använt objekt... # en lista är ett objekt lista1 = [] # Ett objekt har metoder som man meddelar att man vill köra genom # att använda punktnotation. Vad händer egentligen nedan? lista1.append("en sträng")

Ni har redan använt objekt... # en lista är ett objekt a_string = "visst är python roligt!" # Ett objekt har metoder som man meddelar att man vill köra genom # att använda punktnotation. Vad händer egentligen nedan? print(a_string.upper())

Sprites

En klass är en mall som används för att skapa ett objekt objekt kallas också för instanser

Objekt är instanser av klasser

Programmeringsparadigm Funktionell programmering Procedurell programmering Logikprogrammering Objektorienterad programmering

Objektorienterad programmering Ett alternativ till att använda funktioner för att strukturera kod: Objekt istället för abstrakt datatyp Bättre sätt att organisera större projekt - återanvändning C++, Objective-C, C# och Java är exempel på andra OO programmeringsspråk

Objektorienterad programmering (OOP) Objekt är i fokus jämfört med funktioner i fokus som vid funktionell programmering. Man försöker relatera data och metoder till objekt. Både data och metoder kan "ägas"/tillhöra objekt (inkapsling) Objekt, dess egenskaper och beteenden (vad objektet kan göra och vad man kan göra med objektet).

Semiotiska triangeln, Triangle of reference (Ogden & Richards 1923)

I objektorienterad programmering Klass Variabel/Referens Objekt

Klasser jmf med objekt En klass är en mall, en beskrivning av något som kan finnas i världen. En klass beskriver vilka egenskaper (variabler) klassen har och vilka beteenden (metoder) den har. Det som finns i världen är instanser av klasser, även kallade för objekt.

Sprites

Hur skapar vi klasser och objekt?

Definition av en klass class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name)

Objekt, dess egenskaper och beteenden klassens namn variabler metoder

Skapa ett objekt: instantiera en klass Inbyggda klasser, t.ex. listor och dictionaries har syntaktiskt socker. För "vanliga" klasser använder vi dess namn följt av parenteser. T.ex. dog = Dog()

Punktnotation (modul.)objekt.variabel (modul.)objekt.metod() a = [1, 2, 3] a.append(4) s = "hejsan" s.upper()

Vi skapar några hundar class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 Hund name: "Pluto" age: 0 talk hund1 = Dog("Pluto") hund2 = Dog("Lassie") hund2 Hund name: "Lassie" age: 0 talk

Testar hundarna class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 = Dog("Pluto") hund2 = Dog("Lassie") print(hund1.age) print(hund1.name) hund1.talk() print(hund2.age) print(hund2.name) hund2.talk()

Ändra värden hund1 Hund name: "Pluto" age: 4 hund1.age = 4 hund2.age = 8 talk hund2 Hund name: "Lassie" age: 8 talk

Testar hundarna class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 = Dog("Pluto") hund2 = Dog("Lassie") print(hund1.age) print(hund1.name) hund1.talk() print(hund2.age) print(hund2.name) hund2.talk()

Terminologi Klass Objekt / Instans Egenskapsvariabel / Instansvariabel Metod

Programmeringsmetod Implementation, testning, felsökning

Konsten att skriva bättre kod kommentera skriv kod testa rätta buggar

Kommentera Funktionskommentarer Löpande kommentarer Standarder för att skriva kommentarer

Skriva kod Kodstandarder: PEP8, PEP257

Att testa sin kod Testdriven programmering - utanför omfånget för denna kurs Vi använder spårutskrifter och pythons interaktiva läge. Vad borde funktionen/metoden returnera? Gör den det?

Rätta buggar syntaxfel logiska fel runtime-fel (inträffar under körning) behövs omfaktorering?