OOMPA 2000

2D1359 - 2D1360

Innehåll

Allmänn information

Schemaförslag

Laborationer

Övningar

Tentamen

Betyg

Kurslitteratur

Länkar

Java


Smalltalk

Allmänn information

Några förändringar till denna kursomgång

Till inledningen

Schema

Schemat är faställt vad det gäller salar och tider men detaljerna (se period 1 och period 2) om vad som kommer tas upp, vilken litteratur som berörs, vid respektive tillfälle kan möjligen ändras något. Detta kan bero på att vi kanske vill fördjupa något område, lämna vissa moment till självstudier, att (bra) kompletterande litteratur delas ut, eller helt enkelt att det finns önskemål om att något helt annat (fast relaterat till kursen, förstås) skall tas upp. Fast i huvudsak kommer det planerade schemat att följas.

KTH-Schema

Schema genererat med hjälp av schemageneratorn (http://web.kth.se/utbildning/schema/)
Jag har genererat en kombinerad schemaöversikt för OOMPAD och OOMPAE se totalschema. Här kan ni se var och när föreläsningar, labbar samt övningar (/seminarier) äger rum. Aktiviteter som är gemensamma för båda varianterna är ej speciellt markereade övriga med antingen OompaD eller OompaE. Jag har också lagt in kort-korta beskrivningar av vad som görs vid respektive tillfälle. För mer detaljer om innehållet se period 1 och period 2 nedan.
Samma schema finns också på tabellform, fast då en tabell per variant av kursen. För D, oompad,  2D1359
För E och övriga, oompae, 2D1360


Notera  att merparten av dom båda varianterna samläser där endast dom två första föreläsningarna  är för oompae samt att seminarie- (/övnings-) och labbtider skiljer.

2D1360 har två inledande extraföreläsningar om Java

2D1360 inleder med två extra föreläsningar som är avsedda att lära ut Javas uppbyggnad och arkitektur samt grundläggande programmering och handhavande då man skriver program i Java.
 
Innehåll Litteratur Tid Övning
V36
i. Intro till Java.

[2] kapitel 2-3.
Kompendium av Bälter och Redz.

må 8-10
 
ii. Mer om Java med exempel, övningar. [2] kapitel 2-3. ti 13-15
  • Övning-1 Enbart OOMPAE (vecka 36)! Java språkets grunder. Kompilering, exekvering.
  • Kunskaper innan resten av kursen

    Alla skall förutom det som anges som förkunskapskrav för kursen ha kunskaper motsvarande Jia kapitel 2-3, kunna skriva en enkel klass, hitta dokumentaion och tutorials för Java.

    2D1359 och 2D1360 period 1: mer teoretisk del

    Här följer en beskrivning av:

    Kommentar

    OOMPAE har en vanlig övning vecka 36. Både OOMPAE och OOMPAD har sex seminarier med obligatorisk närvaro på fem av dessa. Vid seminarierna sker  traditionell övning men också hemuppgifter presenteras av deltagarna. Med detta schema utgår ett övning/seminarietillfälle för OOMPAD som istället blir uppsamlingstillfälle för dem som missat minst två tidigare seminarietillfällen, frågestund och extra labbredovisningstillfälle för övriga.
     
    Innehåll Litteratur Tid Övning/seminarium/lab
    V36 
    1. Intro. Vad är OO?  Begrepp som polymorfi, inkapsling, attribut.

    [1] kapitel 1,
    [2] kapitel 1

    on 8-10
     
    2. Modellering med UML. [1] kapitel 2 to 11-13   
    Under veckan har OOMPAE (2D1360) en Java-övning, to 15-17

    V37
    3. Klasser och arv. Polymorfi, överlagring, överskrivning, abstrakt klass, gränssnitt.

    [2] 4.1-4.5
    [Budd]

    må 14-16 
  • Sem 1 Hierarkier mm
  • Lab 1 Klasser i hierarki, aggregat
  • 4. Utvecklingsprocessen, kravspecifikationer.
    CRC-kort.
    [1] 1.4, 4-4.4, 12 (kursivt)
    Artiklar om CRC-kort.
    [Beck & Cunningham]
    [Bellin]
    on 8-10 
  • Sem 2 CRC-kort
  • Seminarium-1

    V38
    5. Mer om att analysera krav och identifiera vad som skall göras.
    Analys.
    Javakodning: hierarkier, polymorfi och interface.

    [1] kapitel 4-5

    må 14-16
     
    6. Systemdesign.
    Java på nätet och hur hittar jag info om Javas API.
    [1] kapitel 6 on 8-10
  • Sem 3 UML och inledande analys
  • Seminarium-2

    V39
    7. Designmönster del 1
    Vad? Varför? Hur?
    Java: kodexempel med designmönster.

    [1] appendix A,
    [2] kapitel 5
    Föreläsningsanteckningar och artiklar
    [Gamma]

    må 14-16
     
    8. System- och objetdesign.
    Java kodexempel.

    [1] kapitel 6-7

    on 8-10
     
    Seminarium-3

    V40
    9. Objektdesign.
    Java kodexempel.

    [1] kapitel 6-7

    må 14-16
  • Sem 4 Designmönster.
  • 10. Designmönster del 2
    Fallstudier och exempel på bra designmönster.
    Något om refactoring.
    [1]  appendix A,
    [2] kapitel 5
    Föreläsningsanteckningar och artiklar
    [Fowler] [Refactoring-Wiki]
    on 8-10
  • Sem 5 OO: begrepp, teori, mekanismer, mm. Refactoring
  • Lab 2 Designmönster.
  • Seminarium-4

    V41
    11. Testning. Planering av projekt.Systemkonfigurering.
    Java kodexempel och testning.

    [1] kapitel 9, 8, 10

    må 14-16
     
    12. Mjukvaruprocessen med bla RUP. Introduktion till eXtreme Programming (XP).
    Lite XP-kodning i Java.
    [1] kapitel 12
    utdelat material
    [Beck]
    on 8-10  
    Seminarium-5

    V42
    13. eXtreme Programming.
    Mer XP-kodning i Java.

    [XP-sidor]

    må 9-11
  • Sem 6 XP
  • Seminarium-6

    2D1359 och 2D1360 period 2: mer problem och laborationsinriktad del

    Innehåll Litteratur Tid Lab
    V44
    14. Översikt av olika objektorienterade språk med bla intressanta aspekter, skillnader och särarter. Exempel på oo:s användning inom olika områden som databaser, distribuering, grafik, GUI.
    [Cox], [Budd]
    må 14-16
     
    15. Frameworks. Modeller för grafisk gränssnittsprogrammering i Java. Något om IDE:er bla JBuilder. [2] kapitel 6 on 9-11
  • Lab 3 Grafik och viss interaktion
  • V45
    16. Mer om Frameworks och Grafik.
    Mer om DP och refactoring. Något om trådar.

    [2] kapitel 6-8

    må 11-13
  • Lab 4 Fler mönster bla för mängdhantering och konstruktion av frameworks och något om utveckling med IDE
  • V46
    17. Smalltalk språket en översikt.
    DP och refactoring i Smalltalk. Något om VisualWorks.

    Artiklar och kompendier

    må 11-13
  • Lab 5 VisualWorks\Smalltalk: introduktion,  designmönster, dynamiska klasser, metaklasser
  • V47
    18. VisualWorks\Smalltalk.
    XP: influenser, metodik och praktik från Smalltalk.

    Artiklar och kompendier

    må 11-13
  • Lab 6 Programmera enligt XP med och i VisualWorks\Smalltalk
  • V48-50
    Sen följer labbveckor
       
  • Lab 3-6 görs klart.
  • Extralabbar för den som vill ha betyg 4 eller 5
  • Till inledningen

    Laborationer

    Sex obligatoriska labbar. Extralabbar för att höja betyget.

    Labbkvitto

    Finns med i kursbunten. För den som förlorat sitt labkvitto så finns det på pdf-format i följande fil: KKK.

    Laborationslydelser

    Labblydelser delas ut på föreläsning X och finns på NADAs elevexpedition samt som pdf-filer på följande adress: LLLL.

    Regler

    Läs gärna hela http://www.xprogramming.com/Practices/xpractices.htm först. Här motiveras några av reglerna på ett bra sätt. Läs också gärna http://www.extremeprogramming.org/ samt den mer omfattande diskussionen på http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap.
    Följande regler skall alltid följas vid genomförandet av laborationer

    Redovisning

    Vid redovisning av labbar skall det också finnas antingen hand- eller maskinritade UML-skisser som illustrerar viktiga delar av systemets arkitektur och väsentlig interaktion i detsamma.

    Till inledningen

    Övningar/seminarier

    Alla uppgifterna på fyra av seminarierna och ett hälften av uppgifterna på ett seminarium skall genomföras. Du väljer alltså själv vilka seminarieuppgifter du gör (eller snarare väljer bort).
    Till en seminarieuppgift som du vill räkna som avklarad skall du i förväg ha gjort lösninsskisser där det tydligt framgår vem som har gjort en viss uppgift. Dessa skisser lämnas i början av respektive seminarietillfälle till övningsledaren (fast dom kommer troligen inte rättas).
    Vid seminarietillfället skall du vara förberedd på att presentera lösningar till uppgifter som du säger dig ha utfört framme vid tavlan.
    Lydelserna finns på pdf-format i: XXX.
    Till inledningen

    Tentanmen

    Flyttad pga krock med nummen.
    Kommer bli en 3-timmars tentamen istället för som tidigare 5-timmars.
    Exakt tid för tentamen kommer bestämmas efter samråd med kursdeltagarna..
    Till inledningen

    Betyg

    Betyget baseras på tentamen, seminarieserie, obligatoriska laborationer samt (frivilliga betygshöjande) extralaborationer. För att få kursen slutrapporterad och få betyg på den skall: Slutbetyget beräknas som ett viktat meddelvärde där: Det hela summeras och delas med tre (3) och avrundas på konventionellt sätt till närmaste heltal. Man kan alltså uppnå 9 till 11 poäng som efter division med 3 ger 3 till 3 (2/3) poäng, dvs betyg 3 eller 4.
    För att höja betyget så genomförs extralaborationer där:


    Alltså kan totalsumman (9 till 17) / 3 uppnås, dvs 3 till 5 (2/3), som följriktigt efter avrundning ger betyget 3, 4 eller 5.
    Extralabbar får bara tillgodoräknas om obligatorisk labkurs är godkänd och extralabarna redovisas innan period 3 läsåret 2000/2001, dvs innan 15/1 2001.

    Exempel

    Säg att X genomfört seminarieserien, gjort alla labbar, fått 4:a på tentan.
    Detta ger (3 + 3 + 4) / 3 p = 10/3 = 3 (1/3) dvs betyget 3.
    För att få 4:a kan X göra antingen Extralab 1 eller Extralab 2. Det räcker tom med att för X att enbart göra en liten 1-poängs Extralab.
    För 5:a måste X minst göra Extralab 1 och en liten Extralab 2.
    Till inledningen

    Kurslitteratur

    Förslag. [1] kommer säkert ingå [2] kommer "bara" rekommenderas. Fast referenserna till [2] kommer fortfarande finnas kvar.

    Kursbok

    Rekommenderad bredvidläsning

    Utdragen ur litteratur i kursbunten är också rekommenderad bredvidläsning.

    Litteratur i kursbunten (rapporter och utdrag ur böcker)

    I dom fall det är utdrag ur böcker så kan jag rekommendera hela böckerna som intressant och nyttig bredvidläsning. Dom som jag anser mest givande av böckerna har jag markerat med fetstil.

    Referenslitteratur

    Annan intressant litteratur (ett litet urval)


    ....
    Javaböcker...
    ....

    Vad ingår i kursbunten?

    Finns i kursbunten och delas i vissa fall ut under kursens gång.
    Följande finns med från början:
    Föreläsningsanteckningar
    Kommer oftast delas ut vid föreläsningstillfället och finnas tillgängliga på elektroinisk form på kursens hemsida.

    Till inledningen

    Länkar

    Det kommer mera under kursens gång ...

    Java

    Java behöver inte någon längre introduktion då alla på kursen redan har stött på Java och använt det, åtminstone i liten skala.
    Vad som är speciellt med Java är att kompilering sker till en tänkt (maskinoberoende) bytekod som tolkas av en speciell virtuell maskin på varje plattform, att Java har ett stort standardiserat klassbibliotek och (jämfört med tex Smalltalk) att det bara finns en dialekt. En annan faktor är "hypen", dvs alla använder Java för att "alla andra använder Java". Det senare gör att Java används på många håll och att Java ofta är gångbart.

    JDK

    Suns JDK finns för flera plattformar.
    Kan hämtas gratis från http://www.javasoft.com/products/.

    På min egen maskin

    Installation se http://java.sun.com/products/jdk/1.2/install-windows.html

    JBuilder

    Finns till flera plattformar som Solaris och Windows-95/NT.
    JBuilder kan också hämtas gratis från http://www.borland.com/downloads/.

    VisualAge

    IBMs VisualAge anses av många vara den bästa Java IDE som finns idag.
    Finns för flera plattformar dock ej ännu till Solaris. Från att tidigare varit skrivna i Smalltalk så har en av IDE-varianterna nyligen utvecklats i Java istället och med eXtreme Programming metodik
    En gratis fullversion med en begränsning på hur många klasser som kan skapas går att hämta från http://www3.software.ibm.com/download/.

    Tutorials och annan dokumentation

    Se tex http://www.javasoft.com.

    På NADA

    För att köra senaste versionen av Java-JDK utför först kommandot:
    module add java

    Smalltalk

    Ett av dom första objektorienterade (OO) språken. Den första versionen kom 1972. Mycket av terminologin inom OO kommer från Smalltalk eller dess utvecklare. Smalltalk eller gruppen kring dess utveckling har också varit föregångare eller tongivande vid tillkommandet av fönstersystem, pop-up-menyer, användning av mus, Ethernet och grafiska interaktiva utvecklingsmiljöer. Smalltalk var också bland dom första att utnytta tekniker som bytekod (för tänkt maskin), virtuell maskin och Just-In-Time Compiling (JIT). Även klassbiblioteket, vars bas utvecklades på 70-talet, har varit förebild för många andra klassbibliotek. Slutligen har många av dagens tongivande metodiker inom dagens objektorienterade programmering och design kommit från eller utvecklats i Smalltalk-miljöer som MVC, CRC-kort, designmönster, refactoring och eXtreme Programming.
    Från att på 70-talet och fram till mitten av 80-talet främst ha utvecklats på Xerox Parc som ett forskningsprojekt och med endast en dialekt av språket så finns det idag flera olika Smalltalkdialekter och utvecklingsmiljöer. Även då det finns en ANSI-standard så kan detaljer i dom olika dialekterna skilja sig åt, framförallt så varierar klassbiblioteken för interaktion och grafik.
    Smalltalk skiljer sig från Java genom framförallt att det har en "något udda" syntax, allt är objekt (det finns inga primitiva typer och tillockmed styr- och kontrollstrukturer är implementerade av vanliga objekt), har en metaklasshierarki, dynamiskt typat och man skriver program i en "körande" miljö (där alla verktyg normalt sett är skrivna i miljön själv och därför förändringsbara av programmerarna).

    VisualWorks

    Av många ansedd som den bästa utvecklingsmiljön för Smalltalk.
    Många utvecklare anser också att VisualWorks är den klart bästa IDEn som överhuvudtaget finns på marknaden idag.
    Finns för flera plattformar som Solaris, Windows-95/NT, Linux, Mac och Silicon Graphics.

    Gratisversion

    En gratis fullversion finns att hämta från http://www.cincom.com/smalltalk/downloads.html.
    Finns också på NADA i katalogen /pkg/visual/5i.2nc/

    Frequently Asked Questions (FAQ)

    http://wiki.cs.uiuc.edu/VisualWorks/Questions+and+Answers

    Andra Smalltalk-miljöer

    Tutorials och annan dokumention

    På NADA

    För att köra senaste versionen av VisualWorks utför först kommandot: DATAN>module add visual/5i.2nc Kopiera image till egen katalog (eller starta helt enkelt imagen direkt från systemkatalogen):

    Dokumentation

    Dokumentation på pdf-format finns i en doc-katalog i VisualWorks.
    Se katalogen /pkg/visual/5i.2nc/doc

    Till inledningen

    Senast ändrad: 2000-10-03 av bjorne@nada.kth.se