Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

Relevanta dokument
TDDC74: Projekttitel

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

TDDC74 Laboration 05 - Ett objektorienterat spel

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

Labb 1: Vad, hur, och varför?

TDDC74 - Projektspecifikation

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

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.

TDDC74 Laboration 05 - Ett objektorienterat spel

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Inlämningsuppgifter, EDAF30, 2015

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

SKOLFS. beslutade den XXX 2017.

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Classes och Interfaces, Objects och References, Initialization

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Introduktionsmöte Innehåll

Projektspecifikation

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

TDDC74 Programmering, abstraktion och modellering. Tentamen

OOP Objekt-orienterad programmering

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

TDDC74 Programmering: Abstraktion och modellering Datortenta

Imperativ programmering. Föreläsning 4

TDDC74 Programmering, abstraktion och modellering. Tentamen

Programmeringsteknik I

TDDD78 Att välja och planera ett projekt

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

EdBuild - EdRoboClaw

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Datum:

TDDD78 Att välja och planera ett projekt

Arv och polymorfism i Java

729G06 Föreläsning 1 Objektorienterad programmering

Kursutvärdering/1MD222 Konstruktion av användargränssnitt II Datum för sammanställning:

SKOLFS. beslutade den -- maj 2015.

TUTORIAL: SAMLING & KONSOLL

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

EdBuild. Bygga stridsvagnen EdTank

Grafiska användargränssnitt i Java

Programmering eller Datalogiskt tänkande

Design och konstruktion av grafiska gränssnitt

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Grafiska användargränssnitt i Java

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

Universe Engine Rapport

TDDD78 Att välja och genomföra ett projekt

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Våra enkla funktioner eller procedurer

Hur mycket lutar vägen?

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.

Dagens föreläsning (F15)

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

EdBuild. Bygga kranen EdCrane

Introduktion till programmering med hjälp av Lego Mindstorm

Föreläsning 4: Poster

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

Mer om språk och Ruby

Parameteröverföring. Exempel. Exempel. Metodkropp

Lektion G43 Artificiell intelligens. Robin Keskisärkkä Ellinor Ihs Håkansson Cornelia Böhm

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

Programdesign. Dokumentera. Dokumentera

TDDC74 Programmering, abstraktion och modellering. Tentamen

Industriella styrsystem, TSIU06. Föreläsning 2

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

Planering Programmering grundkurs HI1024 HT data

TDP003. Föreläsning 2. Filip Strömbäck

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

This work by. Fredrik Wendt. is licensed under a. Creative Commons

Mer om språk och Ruby

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

Transkript:

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS 180325

Idag Idag: Övrig information Vad är projektet? Hur går det till? Strukturerande (I-III) Allmänna tips LaTeX-föreläsning 2

Ortogonalt mot projektet ÖVRIG INFORMATION 3

Övrig info Direkt kursrelaterat Labb 5. Dugga 2 anmäl er! Inga oanmälda får komma in! Dagens föreläsning. Mycket material (att återvända till). Principer och riktlinjer, ej givet hugget i sten. 4

Översikt VAD ÄR PROJEKTET? 5

Vad är projektet? Ungefärlig arbetsgång: 3hp ~ 2 veckor, räkna ~80h/pers. Görs i par. Liknande nivå (jämnt arbete, diskussion). Liknande ambitioner. Betygssättning U/3/4/5 (K) 6

Betyg Huvuddrag Ren kodmängd premieras inte! Dö inte. Kodkvalitet. Stil, abstraktioner med mera. Koncept, utbyggbarhet. Ex: Utbyggbart litet RPG med grafiskt gränssnitt slår stor spelvärld med rätt hårdkodad värld. Gör något roligt*. 7

HUR GÅR DET TILL? 8

Hur går det till? Resursgenomgång Översikt. Plan. Resurser, specificerande. Grafik. Tommy Karlssons miniföreläsningar. 9

Marginellt större projekt STRUKTURERANDE I 10

Strukturerande Tentativa frågor Vad behöver vi beskriva? Data, datatyper. Vad för delar på hög nivå har programmet? Hur talar de med varandra? ~Hur hänger allt ihop? 11

Mellanspel Labb 5 och look. Ett kommandos väg. 12

OOP STRUKTURERANDE II 13

Berör många, men inte alla projekt Helt eller delvis. 14

OOP-repetition Objekt...har tillstånd Ex: Spelkaraktär vet sin plats, uppdateras....är isolerade. Begränsat vad de vet och påvekar. Ex: en character% vet bara vilken plats den är på. En place% vet bara vilka som är där...har gränssnitt. Hur man interagerar med dem, och vad de gör då. Ex: move-to (med flera) hos character%....bär sitt beteende. Ex: character% har sin egen move-to (inte något externt, som (settriple-left! ) 15

OOP Modellering bygga projekt Vad finns det för saker i världen eller i programmet? Ex: spelkaraktärer, platser, Kanske en spelomgång Ex: ett användargränssnitt (tänk adventure-ui%). Ex: Super Mario-spel: kanske poängräknaren? En?-låda? (OBS, exempel!) Vad har de för ansvar? Ex: Har character% ansvar för att informera tidigare plats om var den är? Har platsen det? 16

Vilka uppgifter ska lösas av olika delar? Ansvar. Se OOP-föreläsning, kompendium 17

Programstruktur övergripande STRUKTURERANDE III 18

Vilka delar har programmet? Bygga projekt på strukturnivå Vad är data och vad är logik? När och hur möts de? Ex: nuvarande schackbräde respektive regelmotor. Ex: Pacman är på (r,c) respektive det som flyttar Pacman framåt. Hur kommer presentation/visning in i det hela? Ex: Har en character% ansvar för att skriva ut saker? Något annat? Försök att inte blanda ihop detta! 19

(Till kodande) Filstruktur säger något om programstruktur Ha inte allt i en fil. 20

Filstruktur Ha en logisk filstruktur för olika delar av projektet. Ex: item.rkt för klassdefinition item%. Inget mer. character.rkt för character%. Inget mer. Ex: datatyper i graph_representation.rkt, logik i andra require/provide-paret. Säger något om beroenden. 21

Filstruktur Filstruktur Tumregel: det ska gå att rita ett logiskt schema över require-beroenden, utan cykler. Ex: item inte beroende av något. world_init behöver item-definitioner (med mera). Rita pil world_init till item. Fortsätt. Ser ut som ren filstruktur, men säger också något (litet) om separation! Gör detta kontinuerligt inte vi fixar det på slutet (kanske upptäcker man konstiga beroenden) 22

Specifikation SPECIFIKATION (INLÄMNING!) 23

Projektspecifikation Projektspec Vad gör vi? Ambitioner? Krav Nedbrytning av arbetet i mindre delar. Ungefär när (ordning)? Ex: Labb 5. Först grundläggande objekt i världen, sedan koppla ihop världen, lägga till kommandon, UI (Se exempelspec!) Översiktlig bild av struktur, datatyper 24

Projektspec Huvudsakliga mål Specifikation - kravlista. Hör ihop med projektval och betygsambitioner. Ändras inte när den är godkänd (utan handledare) Handledaren ser struktur på projekt, eller brist på struktur (och kan kommentera!) 25

Tumregler ALLMÄNNA RÅD 26

Versionshantera https://commons.wikimedia.org/wiki/file:in_case_of_fire_git_push_first.jpg (även av tekniska skäl dålig rutin, men talande bild) 27

Versionshantera Rekommendation: git + Gitlab Helt frivilligt! Dela kod. Håll koll på framsteg. Kunna rulla tillbaka. Föreläsning 17/4. https://gitlab.ida.liu.se 28

Läsbarhet Din kod ska inte bara vara läsbar för kompilatorn*. Du skriver för andra programmerare. 29

Läsbarhet Ett par tumregler Namngivning. Är det meningsfullt i applikationen? Ex: set-neighbour-visited! vs change-flag1-cadrtrue! Hur ser det ut i funktioner som anropar? Ex: (let ([next (nearest-neighbour cur-node graph)])..) OBS! Gör lätt att felsöka logiken (troligen trasig här ovan!). Gör funktionerna vad de ska, och inget mer? 30

Läsbarhet+ansvar Ett par tumregler Struktur och läsbarhet: gör funktionerna vad de ska, och inget mer? Ex: nearest-neighbour ska inte ändra i grafen. Ex: update-gui ska inte flytta på Pacman, den ska uppdatera GUI. Viktig följd: funktioner som anropar ska inte räkna med sådant! nearest-neighbour tar fram närmsta, men vi vet ju att den också ändrar i variabel X, så vi använder det... Viktig följd: ni ska inte behöva ta hänsyn till det! Ändring i nearest-neighbour ska inte göra att annat plötsligt slutar fungera. Finstilt: Funktioner kan göra flera saker*, men det ska vara tydligt. Det blir det sällan här. 31

men vi vet ju att -test Antyder att man vill tänka efter noga innan man går vidare. 32

Rubber duck debugging http://blog.helloruby.com/post/70582154912/day-20-talk-to-the-duck-whenever-ruby-runs-into 33

Testning och struktur Testa era procedurer! Tänk på ordning! Vad bygger på vad? Ordning, testbarhet. Gå att lita hyfsat på saker längre ned. Klick på ruta (r,c) gör inte vad det ska. Är det GUI:t som skickar fel data? Spelmotorn som gör fel beräkning? Brädet som inte utför uppdatering? Refaktorering (code refactoring). En funktion (eller dylikt) gör samma sak, men på annat vis. Ex: Optimera flights-from-to utan att ändra inargument eller utdata. (Eller ev sidoeffekter.)...men bli inte för låsta! Våga experimentera. 34

Till projektlektionen 1. Välj projekt (nu!) 2. Läs igenom exempel-specifikationen. 3. Fundera på struktur bitar av programmet på översiktlig nivå. Inget inlämningskrav där (förbered för lektionen!) 35

DON'T PANIC 36

Frågor? Attribution: - Hello Ruby by Hello Ruby is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. - git fire-bild, angiven upphovsman Ladsgroup ( https://commons.wikimedia.org/wiki/user:ladsgroup ) 37

www.liu.se