TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Relevanta dokument
TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

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

TDDD78 / 729A85 Objektorienterad programmering och Java. Kursinformation Java: Varifrån och varför? Java för Pythonprogrammerare

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

Objektorienterad programmering

Att välja och planera ett projekt

729G06 Föreläsning 1 Objektorienterad programmering

TDDD78 Att välja och genomföra ett projekt

Introduktionsmöte Innehåll

Före projektet TDDD78, TDDE30, 729A

Föreläsning 1: Introduktion till kursen

TDDD78 Att välja och planera ett projekt

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

TDDD92 Artificiell intelligens -- projekt

TDDD78 Att välja och planera ett projekt

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

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

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

Poäng. Start v. Applikationsprogramm ering i Python 7.5. Antal registrerade (män/kvinnor) 50 (34/16)

Objektorientering: Lagring och livstid

Objektorienterad programmering

Objektorientering: Lagring, räckvidd och livstid

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

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

Objektorienterad programmering och Java

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

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

EDAA01 Programmeringsteknik - fördjupningskurs

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

GRUNDKURS I C-PROGRAMMERING

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

Allmänna frågor om kursen: Kursutvärderare: IT-kansliet/Christina Waller. 1. Vad är ditt allmänna omdöme om kursen? Antal svar: 30 Medelvärde: 3.

Hur tycker du kursen har varit? Tycker du att kursens upplägg har underlättat för dig att uppnå lärandemålen?

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

SKOLFS. beslutade den -- maj 2015.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Kursplanering Objektorienterad programmering

SKOLFS. beslutade den XXX 2017.

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

TDDD78 Objektorientering: Lagring och livstid

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

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

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Programmering, grundkurs

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

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

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Kursanalys DD1312 hösten 2008

TDDD92 Artificiell intelligens -- projekt

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

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

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

SAMMANSTÄLLNING 1 (13) Datum för sammanställningen Period 3, 2007

Programmeringsteknik II

Välkomna till DIT012 IPGO

Objektorienterad programmering. Grundläggande begrepp

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

Beslut om fastställande: - - Behörighetskrav: -

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

Variabler, värden och typer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Imperativ programmering

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

Design och konstruktion av grafiska gränssnitt

TDDD78 Objektorientering i Java, del 2

TDDD78 / 729A85 Objektorienterad programmering och Java

Imperativ programmering. Föreläsning 4

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

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

Svar på tekfak-remissen inför 2018

Projektuppgift - Gymmet

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

Programmeringsteknik I

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

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

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?

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

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

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

TDDD78 / 729A85 Objektorienterad programmering och Java

Kursanalys DA2003 sommar 2017

Introduktion till kursen och MATLAB

TDIU01 (725G67) - Programmering i C++, grundkurs

TSEA29-Konstruktion med Mikrodatorer

Programming in C# and.net Framework

Kursvärdering 1DV433 Strukturerad programmering med C++ LP Lärare: Tommy Löfqvist 17 svar

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Evaluation Summary - CT3380 Grundäggande webbdesign HT06 Dan Levin

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

TEII42 - Teknisk kommunikation på japanska II - del 2

TDDD38-Avancerad programmering i C++

Grafiska användargränssnitt i Java

Transkript:

jonas.kvarnstrom@liu.se 2019 TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java Kursinformation

Examinator, kursledare: Jonas Kvarnström

Fråga kommentera avbryt!

Utan OO har vi datastrukturer för lagring, som manipuleras utifrån av funktioner -struktur Med OO har objekt både datalagring och egen funktionalitet, egna metoder Fundamental princip: Objektet bestämmer över sig själv (ingen manipulerar utifrån) Varför? Grunden för begrepp som ärvning, overriding, polymorfism, inkapsling, -objekt En klass är en datatyp, t.ex. Date, som anger: Vilken information lagras i objekt av typ Date? Vad kan objekt av den typen göra?

Objektorienterad programmering Konkret OO-språk: Java Generella begrepp: Stark typning, pekare, kontrakt, ERT MÅL (?) Kunskap och färdigheter inom programutveckling Generella färdigheter: Verktyg för utveckling Programmeringsvana! Viktigt i sig själv och som en bas att bygga på

Vad kommer först? Ibland föreläsning först läs + experimentera Ibland labba först sätt i ett sammanhang på föreläsningar Lyssna Föreläsningar: Hur OO fungerar, intressanta begrepp Ramar för förståelsen, övergripande tankar och idéer Inga seminarier? Kurser har olika upplägg! Använda resurserna bäst givet kursens mål, studenters erfarenhet, Läsa Kursbok, instruktioner, material på nätet, Mer detaljer viktiga, och läses bäst i egen takt MEDEL: Hur ska ni uppnå era mål? Utföra Labbar och projekt, med integrerat studiematerial Erfarenhet, förståelse för vad man kan och vad man behöver öva på

jonkv@ida Innehåll i första föreläsningarna 11 Introduktion Kursintro, Java för Python-programmerare, typning, Utan objektorientering: Ändå mycket nytt Objektorienteringens grunder Principer och begrepp: Klasser, metoder, fält, konstruktorer, Konkret användning av OO i Java Viktiga begrepp, med och utan OO Kontrakt, åtkomst och inkapsling, lagring och livstid, pekare och komposition, identitet och likhet, Hierarkier och arv Typhierarkier med gränssnitt (interface), polymorfism, statisk/dynamisk bindning, abstrakta klasser, overriding, Grafiska gränssnitt med komponenter och händelsehantering Projektinfo Att välja projekt,

jonkv@ida Förutsättningar för föreläsningar 12 Föreläsningar ska alltid utgå från förkunskapskraven Vad kan ni redan? Grundläggande begrepp inom programmering Konkreta programmeringskunskaper i Python, motsvarande t.ex. kurserna Funktionell och imperativ programmering del 1 och del 2. Har du mycket erfarenhet av Java? Skumma gärna genom bilderna på förhand avgör vad som är mest intressant Men missa inte det viktiga!

jonkv@ida Förutsättningar för föreläsningar (2) 13 Vad bygger (närmast) på Java/OO? OOP Begrepp Java Mer programmeringsvana! U: TDDD80 (11 hp) Mobila och sociala applikationer / Java D, U: TDDD86 (11 hp) Datastrukturer, algoritmer och programmeringsparadigm / C++

jonkv@ida Föreläsningsstil 14 Två alternativ: Få föreläsningsbilder, prata fritt från kortfattade punkter (+) Känns spontant (+) Ingen går i förväg ( ) Lätt att missa vad som sägs ( ) Lätt att glömma, måste anteckna ( ) Föreläsaren kan missa detaljer Många föreläsningsbilder, skriv ner alla relevanta fakta (+) Bra att både höra och läsa (+) Bra referensmaterial senare ( ) Kan kännas som att läsa innantill

jonkv@ida Webben 15 Intressant för en minoritet men inte centralt? Rena fakta tillgängliga metoder,?

Instruktioner och detaljstyrning minskar Steg 1: Era första(?) Java-program Fokus: Lär in rätt sätt, inte fel (svårt att bli av med) Både mindre uppgifter och ett större program Labb 1 Labb 2 Labb 3 nu kan ni mer! Steg 2: Eget projekt! Helt fria händer Använd er kunskapstörst, lär er så mycket ni kan!

"Varsågod, lär dig simma!" eller ska man öva handgreppen först?

Fokus: Lär in rätt sätt, inte fel (svårt att bli av med) Medel: Led till bra lösningar Tutorial-form: Steg-för-steg-instruktioner Bara ett förberedelsesteg! Mindre erfarenhet effektiv metod för rätt programmeringsvanor Mer erfarenhet snabbt avklarat + kan få nya insikter / idéer Resultatet är inte kod, utan kunskap! Tänk, reflektera, förstå varför vi programmerar på ett visst sätt

Feedback! Utvecklingsmiljön (IntelliJ IDEA)!

Varningar för möjliga problem (600+ inspektioner ) Har kraftigt minskat antal rutinproblem som ger komplettering Fixa buggar, undvik kompletteringar, lär er direkt från varningarna!

Om du inte (är säker på att du) förstår varningen 1. Förklaringar från IDEA 2. Förklaringar på kurswebsidorna 3. Fråga handledaren eller examinatorn

Handledare på labbar Fråga! Be om feedback även när allt verkar fungera: Största problemen är de man inte vet om Utvecklingsmiljön: Analyserar koden, visar problem / möjliga förbättringar, ger inlärningsmöjligheter Inlämningar: Kompletteringar ger också en chans att lära sig Feedback! Kursdeltagare: Fritt fram att diskutera, så länge som lösningen är er egen Men ni ska bli självständiga ingenjörer! Tveka inte att fråga, men handledarna ska ge ledtrådar och tips, inte färdiga svar.

jonkv@ida Några ord om handledning 25 Ska handledarna hinna svara på alla frågor? Oförutsägbara behov Ska vi klara topparna måste vi ha färre labbtider! Många som frågar 10 minuter innan labben slutar Jobba mellan labbar Kom dit med frågor 25 20 15 10 5 TYPISK ARBETSBELASTNING Typisk arbetsbelastning 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

jonkv@ida Blockschema 26 Begränsad möjlighet för oss att välja tider

jonkv@ida Plats i labbsalar 27 Under flera tidigare år: Ofta schemalagt på kvällar för att salarna ska räcka till Många outnyttjade platser i labbsalar hemarbete, Från 2018: Boka något färre platser (t.ex. 30 för 36 personer) Bättre schema trots fler studenter Kan bli överfullt någon enstaka gång Säg till handledaren kanske finns någon som inte hör hemma i salen Oftast finns alternativa platser Flera olika salstyper SU-PUL PC-PUL Före detta ISY-salar

D, kogvet: period VT1 3 labbar, enskilt Inkluderar Tetris 3 hp Godkänt / komplettera Skriv egen projektbeskrivning (grupper om 2 rekommenderas)

D, kogvet: period VT2 Projektarbete, rapportskrivande 3 hp Godkänt / 3 / 4 / 5 D1: Rapport Inlämning, feedback språkgranskning hp Godkänt / komplettera

3 labbar, enskilt Inkluderar Tetris 3 hp Godkänt / komplettera U : Kurs över period (men mindre att göra parallellt) Friare projekt, men generella förslag finns Grupper om 2 rekommenderas 3 hp 3 / 4 / 5 / komplettera Ingen språkgranskning i denna kurs

När är ett program (en inlämning) bra? När körningen ger rätt resultat"? Nej! När programkoden är tydlig, välstrukturerad och visar att ni vet vad ni gör!

jonkv@ida Kvalitet (1) 34 Ser det ut så här, blir vi misstänksamma

jonkv@ida Kvalitet (2) 35 Har ni kopplat så här, är det farligt

jonkv@ida Kvalitet (3) 36 Ser det ut så här, undrar vi vad ni egentligen har gjort Även om ni faktiskt fick lampan att lysa

jonkv@ida Exempel 37 Ett extremt exempel: Skriver ut "TIGERteam" 384 gånger

jonkv@ida Orsak och verkan 38 Programmet fungerar (ger rätt utmatning, ) Jag kan programmera! Jag kan programmera! Programmet fungerar (ger rätt utmatning, ) Programmet är välskrivet, lätt att förstå, välstrukturerat, Jag förstår varför jag gör på ett visst sätt

jonkv@ida Kvalitet: Fokus 39 Skriv bra kod! Lättläst Bra namngivning Strukturerad, modulär Väldokumenterad och kommenterad där det behövs mest! Extremt viktigt för: Hur programmet kan utökas i framtiden Hur andra kan förstå programmet Hur robust det är när fel uppstår Utveckling är ofta 20% av arbetet Underhåll är 80%!

jonkv@ida Hur ska man skriva kod? 40 Tips: Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live. "I usually maintain my own code, so the as-if is true." http://c2.com/cgi/wiki?codeforthemaintainer

jonkv@ida Kursutveckling 42 Större nyheter detta år: Omorganiserade labbar Integrerat Tetris med övriga labbar Jämnare belastning, mer i vecka 1-2, mindre i vecka 3-4 Labbar närmare föreläsningar Förbättrad och förenklad projektbedömning / betygsgradering Mer om detta på projektintroduktionen Många uppdateringar i kursmaterial Omstrukturering i vissa föreläsningar Allmänna förbättringar i labbar och webmaterial Fler assistenter i TDDD78 Lika mycket handledning, men lättare att hitta bra schematider

jonkv@ida Början och slutet 43

Java för Python-programmerare Varifrån kommer Java? Varför använda det? Jämförelser: Att starta ett program, syntax, uttryck, operatorer, villkorssatser, loopar (iteration), Föreläsning Läs / skumma själv Hoppa över... Önskemål från tidigare studenter! Om det passar dig bättre! Om du vet att du kan allt!