TDA 545: Objektorienterad programmering

På denna sida hittar du information om kursens:
bok, lärare, syfte, mål, innehåll, organisation, schema, labbarna,
föreläsningar, bedömning, övningar, gamla tentor och övningstentor, övrigt, länkar.

Nytt på denna sida

Obs. Nytt material kommer att läggas på den här sidan när kursen körs på hösten 2015. Här kommer det att finnas en lista på vad som har uppdaterats på den här sidan och när uppdateringenarna har skett.

    2016-08-29:  nu är alla omtentor rättade; resultaten har skickats ut
    2016-08-29:  statistik: fyra fick betyg 3, tre fick betyg U, en plussade från 4 till 5
    2015-08-29:  tentagranskningen är i EDIT 5128 kl 12:00-12:30, 2016-09-07
    2016-08-29:  modellsvar finns här för tentan som skrevs 2016-08-24

    2016-01-30:  nu är alla omtentor rättade; resultat skickas ut senast 2016-02-05
    2016-01-30:  statistik: 33 % fick 3, 4 eller 5, resten fick U på omtentan
    2015-01-30:  tentagranskningen är i EDIT 4128 kl 11:30-12:15, 2016-02-11
    2016-01-04:  modellsvar finns här för tentan som skrevs idag

    2015-12-28:  nu finns det modellsvar för en halv övningstenta 2

    2015-11-03:  nu är alla tentor rättade; resultat skickas så fort systemet tillåter
    2015-11-03:  statistik: 32 % fick 5, 25 % fick 4, 15 % fick 3, 28 % fick U
    2015-10-29:  tentagranskningen är i EDIT 4128 kl 11:45-12:45, 2015-11-13
    2015-10-29:  modellsvar finns här för tentan som ni skrev idag

    2015-10-22:  Unos lösningsförslag till en av övningstentorna har uppdaterats
    2015-10-22:  la upp presentationen för dagens föreläsningRita.java
    2015-10-21:  Uno har skrivit lösningsförslag till en av övningarna / övningstentorna
    2015-10-19:  la upp presentationen för dagens föreläsning
    2015-10-13:  kurshemisdan finns också här
    2015-10-13:  nu finns det modellsvar för gamla tentor
    2015-10-13:  la upp presentationen för dagens föreläsning
    2015-10-12:  la till koden som skrevs på dagens föreläsning
    2015-10-12:  OBS föreläsning 16 är på tisdag 2015-10-13 kl 13:15 i HA4
    2015-10-12:  la upp presentationen för dagens föreläsning
    2015-10-08:  Andreas har lagt till en ny programeringsövning
    2015-10-08:  nu finns koden för Snake och RandDots med kod-zipen
    2015-10-08:  en klocka (ovan) som räknar ner till tentan
    2015-10-08:  la upp presentationen för dagens föreläsningmed kod i zip
    2015-10-06:  Erik vill att ni röstar om nästa konsultationstid, 2015-10-12
    2015-10-05:  Andreas har uppdaterat och skrivit lösningar till prog.övningarna
    2015-10-04:  lab 4 är en uppgift om ett memory spel
    2015-10-01:  Erik Jungmark vill att ni röstar om konsultationstiden
    2015-10-01:  Andreas Wieden har satt ihop ett par extra programmeringsövningar
    2015-10-01:  la upp presentationen för dagens föreläsningmed kod i zip
    2015-10-01:  stavfel korrigerat i Lab 3, Del 2
    2015-09-30:  la upp presentationen för dagens föreläsningnu med kod!
    2015-09-28:  la upp presentationen för dagens föreläsningnu med kod!
    2015-09-28:  la till material on enum i föreläsning 10
    2015-09-24:  la upp presentationen för dagens föreläsning
    2015-09-21:  koden för omvändning av en sträng finns nu med i föreläsning 6.
    2015-09-21:  la upp presentationen för dagens föreläsning
    2015-09-18:  nu finns det information om lab 3 – nu funkar länkarna
    2015-09-17:  la upp presentationen för dagens föreläsning med kod+förklaring
    2015-09-14:  la upp presentationen för dagens föreläsning
    2015-09-10:  la upp presentationen för dagens föreläsning
    2015-09-08:  la upp presentationen för dagens föreläsning
    2015-09-07:  nu finns alla presentationer också i PowerPoint format
    2015-09-07:  koden som skrevs under föreläsningen finns nu med i PDFen
    2015-09-07:  nu finns det information om lab 2
    2015-09-07:  la upp presentationen för dagens föreläsning
    2015-09-03:  nu borde det gå att skicka in lösningar via Fire Systemet
    2015-09-03:  la upp presentationen för dagens föreläsning
    2015-09-02:  vi har flyttat torsdagens föreläsning till HA3
    2015-09-01:  satt en länk till kodvisualisteringsverktyget under föreläsningar
    2015-09-01:  la upp presentationen för dagens föreläsning
    2015-08-31:  nu finns det information om lab 1 och Fire systemet
    2015-08-31:  la upp gamla tentor och övningstentor
    2015-08-31:  la upp presentationen för dagens föreläsning
    2015-08-28:  Maxim Goretskyy föreslog alternativ kursliteratur
    2015-08-26:  omtentan: modelsvar, granskning 2015-09-08 kl 12:15 i EDIT 5452
    2015-08-26:  websidan tömd på material inför hösten 2015

Kursens bok

Den officiella kursboken:

Andra böcker om Java (förslag av Maxim Goretskyy):

Maxim Goretskyy säger att ni kan kontakta honom (maxim@chalmers.it) ifall ni vill titta på böckerna innan ni skaffar dem.

Föreläsare och lärare

Kursen föreläses av Magnus Myreen (myreen@chalmers.se), men Uno Holmer, Ivar Josefsson, Erik Jungmark och Andreas Wieden hjälper också till.

Syfte

Det objektorienterade synsättet har idag en mycket stark ställning när det gäller programutveckling. Program som är uppbyggda enligt detta synsätt, s.k. objektorienterade program, består av ett antal samverkande delar som kallas objekt. Objekten kapslar in data och erbjuder metoder för att avläsa och uppdatera dem. Objekten beskrivs av s.k. klasser. Kursens syfte är att lära ut principerna för det objektorienterade synsättet och hur man konstruerar objektorienterade program.

Mål

Efter fullgjord kurs ska studenten kunna:

En mera detaljerad beskrivning av kursens mål hittas här.

Innehåll

I kursen används programspråket Java. Följande moment behandlas:

Organisation

Undervisningen ges i form av föreläsningar, gruppövningar och handledning i samband med obligatoriska programmeringsuppgifter (laborationer).

Schema

Gruppindelningen är samma som i kursen grundläggande datorteknik EDA433 som går parallelt med den här kursen. Gruppindelningen är viktig för att få schemat av grundläggande datorteknik att passa ihop med den här kursens övningstillfällen.

Läsvecka 1:
   måndag 10:00 – 11:45: föreläsning, rum HA4
   tisdag 10:00 – 11:45: föreläsning, rum HC4
   tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   torsdag 10:00 – 11:45: föreläsning, rum HA3
   torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
   fredag 10:00 – 11:45: övning, rum EL41, grupp C, D

Läsvecka 2:
   måndag 10:00 – 11:45: föreläsning, rum HA4
   måndag 13:15 – 17:00: laboration, rum 2505/7, ED-3507
   tisdag 10:00 – 11:45: föreläsning, rum HC4
   tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   onsdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   torsdag 10:00 – 11:45: föreläsning, rum HC4
   torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
   fredag 10:00 – 11:45: övning, rum EL41, grupp C, D
   fredag 15:15 – 16:15: konsultationstid, rum EL41, för alla som vill!

Läsvecka 3:
   måndag 10:00 – 11:45: föreläsning, rum HA4
   måndag 13:15 – 17:00: laboration, rum 2505/7, ED-3507
   tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   onsdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   torsdag 10:00 – 11:45: föreläsning, rum HC4
   torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
   fredag 10:00 – 11:45: övning, rum EL41, grupp C, D

Läsveckor 4–8:
   måndag 08:00 – 09:45: konsultationstid, rum EL42, för alla som vill!
   måndag 10:00 – 11:45: föreläsning, rum HA4
   måndag 13:15 – 17:00: laboration, rum 2505/7, ED-3507
   tisdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   onsdag 15:15 – 17:00: laboration, rum 5355, ED-3507
   torsdag 10:00 – 11:45: föreläsning, rum HC4
   torsdag 13:15 – 15:00: övning, rum EL43, grupp A, B
   fredag 10:00 – 11:45: övning, rum EL41, grupp C, D

Laborationerna

Information om hur man skickar in svar genom Fire Systemet.

Alla svar/lösningar på labbarna ska skickas in genom Fire Systemet innan respektive deadline. Fire Systemet tillåter inte er att skicka in svar efter deadlinen. Labbarna är en obligatorisk del av kursen. Lämn inte inlämning av labbarna försent, dvs skicka in dina svar/lösningar i god tid innan de respektive deadlinerna.

Alla studenter på kursen ska registrera sig i Fire Systemet. Alla labuppgifter ska göras i par. När du är inloggad ska du skapa en grupp (med en annan studerande, dvs skapa ett par) och skicka in ett svar / en lösning per grupp. Fire Systemet innehåller förklaringar på hur man ska skapa grupper och hur man lämnar in svar/lösningar. Om ni har frågor om detta, så ska ni fråga i första hand labhandledaren eller i andra hand föreläsaren.

Föreläsningar

Jag lägger upp en PDF och PPTX-fil (PowerPoint) av varje presentation. PowerPoint filerna är skapade genom att exportera från Keynote. Detta betyder att de kan se konstiga ut ibland.

Föreläsningar:

   Föreläsning 1: Introduktion (pptx)
   Föreläsning 2: Typer, klasser, tilldelning (pptx) – kodvisualistering
   Föreläsning 3: Booleans, if, switch (pptx)
   Föreläsning 4: For, while, do-while (pptx)
   Föreläsning 5: Att använda klasser & objekt (pptx)
   Föreläsning 6: Metoder och fält (arrays) (pptx)
   Föreläsning 7: Att skriva egna klasser (pptx)
   Föreläsning 8: Exempel och problemlösning (pptx) – nu med kod!
   Föreläsning 9: Arv och UML (pptx)
   Föreläsning 10: Abstrakta klasser, gränssnitt (pptx)
   Föreläsning 11: Rekursion (pptx) – nu med kod!
   Föreläsning 12: Exempel och problemlösning (pptx)
   Föreläsning 13: Swing (GUI), händelser, timer (pptx) – med kod i zip
   Föreläsning 14: Grafik och mera händelsehantering (pptx) – med kod i zip
   Föreläsning 15: Excepions & lite swing, gränssnitt (pptx)
   Föreläsning 16: Tentan, att förbereda sig... (pptx)

   Repetitionsföreläsning 1: Lite rekursion & problemlösning (pptx)
   Repetitionsföreläsning 2: Quiz & problemlösning (pptx) – Rita.java

Bedömning, tenta, m.m.

Skriftlig tentamina samt obligatoriska inlämningsuppgiftet (laborationer).

Bedömning av tentamina: U, 3, 4, 5.

Hjälpmedel på tentan: på sista sidan av tentan kommer det att finnas ett kort uttdrag från Javas API.

Kursen innehåller flera obligatoriska laborationer (Programming Assignments eller PAs). Kursen är problemorienterad så studenterna kommer att behöva öva mycket, speciellt viktigt är det att förstå labbarna, uppgifterna på examen kommer att påminna om labarna. Ni arbetar i grupper om 2 elever och redovisar era labbar i ett elektroniskt labsystem, Fire. Det är inte tillåtet att labba ensam utan tillstånd av examinatorn. (Fire tillåter inte att man lämnar in ensam). När ni lämnar in en labb så får labrättaren mail om det, han rättar och godkänner eller ger retur och ni får ett mail från Fire om hur det gått. Om ni fått en retur så har ni 7 dagar (exakt) efter att ni fick returen på er att åtgärda och lämna in på nytt. Labbarna är ett undervisningsmoment (snarare än en test på om du redan kan) så det är vanligt att man får retur, se labrättarnas kommentarer som förbättringstips snarare än sur kritik.

Om alla labbarna är godkända så rapporteras de till ladok oberoende av hur det går på tentan. Om labbarna inte är godkända så måste du göra om dem.

För att få godkänt i labbarna måste du (i) ha minst ett poäng per (del)uppgift, och (ii) ha minst 9 poäng totalt. Labuppgift 2 och 3 är båda uppdelade i två delar var.

Övningarna

På torsdagar (grupp: A, B) och fredagar (grupp: C, D) håls övningstillfällen. Vi använder följande övningsuppgifter:

övning 1
övning 2
övning 3GeometricObject.java
övning 3½
övning 4
övning 5
övning 6Unos lösningsförslag (zip)

Andreas Wieden (wian42@student.chalmers.se) har satt ihop ett par extra övningsuppgifter som man kan öva med på egenhand. Dessa övningsuppgifter är skrivna som java filer. Det är alltså meningen att man fyller i koden och provar att köra koden som man skrivit. Titta inte på Andreas lösningar innan ni har provat själv.

Uppgift: Ex1.java – Andreas lösning: Ex1.java
Uppgift: Ex2.java – Andreas lösning: Ex2.java
Uppgift: Ex3.java – Andreas lösning: Ex3.java
Uppgift: MyAdder.java – Andreas lösning: MyAdder.java

Gamla tentor och övningstentor

Gamla tentor och övningstentor:

Övrigt

Det här året dras kursen av Magnus Myreen, som också drog kursen förra året. Erland Holmström drog kursen året 2014. I stort sätt kommer kursen att vara samma som föregående år.

Länkar

Erland Holmström har en samling länkar som kan vara bra att se på.