5LN429 07701 20101
Uppsala universitet

Programmering för Språkteknologer I, VT 2010

Schema

dagtidplatsinnehåll
tis6/4 10–1216-0041Introduktion, grunder (kap. 1 och 2). [pdf]
13–15ChomskyÖvningar till kap. 2
TextIO [java] [html]
tor8/4 10–1216-0041Typer och kontrollstrukturer (kap. 2 och 3). [pdf]
13–15ChomskyÖvningar till kap. 2 och 3
tis13/410–1216-0041Kontrollstrukturer och programmeringsmetodik (kap. 3). [pdf]
13–15ChomskyÖvningar till kap. 2 och 3
tor15/410–1216-0041Subrutiner [pdf]
13–15ChomskyÖvningar till kap. 3 och 4
tis20/409.00SVNInlämning 1 [html]
10–1216-0041 Subrutiner, programmeringsmetodik och Javadoc [pdf]
ThreeNPlusOne [java] [html]
13–15Chomskylab
tor22/410–1216-0041 SkrivRad [java] [html]
SkrivRad2 [java] [html]
GUITest [java] [html]
13–15Chomskylab
tor29/423.59SVNInlämning 2 [html]
tis4/5 10–1216-0041Pappersprogrammering
tor6/5 10–1216-0041 Objekt [pdf]
Test [java]
SkrivRad [java]
Args [java]
13–15ChomskyÖvningar till kap. 4, 5 och 7
Mittkursutvärdering [html]
tis11/510–1216-0041Objektorienterad programmeringsmetodik [pdf]
tis18/510–1216-0041 Arrayer och Gränssnitt [pdf]
Tärning [java]
SexSidigTärning [java]
TolvSidigTärning [java]
Yatzy [java]
Test [java]
tor20/510–1216-0041lektion
13–15ChomskyÖvningar till kap. 5 och 7
mån24/523.59SVNInlämning 3 [html]
tis25/510–1216-0041lektion
13–15ChomskyÖvningar till kap. 5 och 7
tor27/513–15ChomskyÖvningar till kap. 5 och 7
Kursutvärdering [html]
ons2/68–12Gimo1Tenta
ons9/623.59SVNInlämning 4 [html]
fre27/88–12Ekum/A153Omtenta

Jag använder Google Calendar, och har skapat en med alla lektionstider. Ni får gärna använda den, men kom ihåg att ovanstående gäller om det skulle vara någon konflikt mellan dem. För att importera den i er egen kalender, följ länken, och tryck på knappen längst ner till höger: ”+ Google Calendar”.

Inlämningsuppgifter

Kursen omfattar totalt fyra inlämningsuppgifter.

Att skriva i latex

I shared/latex (se ”Kursmaterial” för information om hur man checkar ut shared-katalogen ur repositoriet) finns en dokumentklass för LaTeX som gör det lättare att skriva snygga rapporter med programlistningar. Filen shared/latex/inlupp_mall.tex innehåller exempel på hur man kan göra. Om du behöver friska upp minnet om hur man skriver i LaTeX så finns en del om det i IDS-kompendiet. [pdf]

Sektion 5.15 innehåller information om hur man gör tabeller i LaTeX.

Att lämna in via SVN

Börja med att checka ut er kurskatalog (se ”Kursmaterial”). Kopiera de filer ni vill lämna in till er kurskatalog. Om filen är ny behöver den läggas till repositoriet, det gör ni genom att ge kommandot

$ svn add <användarnamn>/<filnamn>

När repositoriet vet att filen existerar kan ni ”committa” ändringarna i den med kommandot

$ svn commit -m "<meddelande>" <användarnamn>/<filnamn>

Har du lagt till fler filer behöver du inte göra commit för varje enskild fil, utan kan göra det på hela katalogen:

$ svn commit -m "<meddelande>" <användarnamn>

Ofta kräver SVN att man ger ett meddelande med flaggan -m, men det går bra att lämna en tom sträng som meddelande.

Efter att ni checkat in de filer ni vill lämna in kan ni lista de filer som finns i repositoriet för att kontrollera att allt blivit som ni tänkte er. Det kommandot list eller ls (nedan utfört i shared-mappen):

$ svn list ImagePanel.java MosaicPanel.java TextIO.java latex/ slides/

Utvärderingar

Mittkursutvärdering [html]
Kursutvärdering [html]

Examination

Kursen examineras genom att ett antal obligatoriska uppgifter ska lösas och rapporteras skriftligen, samt genom en avslutande tentamen.

För betyget godkänd (G) krävs G på samtliga moment (alla fyra inlämningsuppgifter samt tentan). För betyget väl godkänd (VG) krävs (utöver kraven för G även) VG på tentan samt en inlämningsuppgift eller VG på tre inlämningsuppgifter.

Övningstenta

För att ge en bild av hur en typisk tenta på kursen kan se ut har jag skapat en övningstenta åt er. [pdf]

Lärandemål

Enligt läroplanen har följande lärandemål fastställts.

Kursen ger grundläggande kunskaper och färdigheter i objektorienterad programmering.

Efter avslutad kurs ska studenten minst kunna:

  1. på ett elementärt plan redogöra för och tillämpa en god programmeringsmetodik;
  2. förklara innebörden av följande begrepp och kunna skriva fungerande Javaprogram som exemplifierar och drar nytta av dem:
    1. datatyper, objekt, klasser, variabler (instans- och klass-) och metoder (instans- och klass-);
    2. logiska och aritmetiska operatorer, jämförelseoperatorer;
    3. villkorssatser (if-satser) och satser för iterativ kontroll (for- och while-satser);
    4. standardklasser, särskilt viktiga exempel på sådana t.ex. String;
  3. skriva program som utför elementära beräkningar utifrån förekomsten av tecken och ord-n-gram i texter;
  4. använda dokumentationen av Java med viss självständighet;
  5. förklara, dokumentera och kommentera kod på ett användbart sätt.

Kursmaterial

Jag kommer att använda Subversion för att distribuera material som ni kan komma att behöva: hjälpklasser, föreläsningsanteckningar etc. Ni förväntas också lämna in uppgifter via SVN.

Kursens repositorium heter pst1vt10, och ska finnas tillgängligt genom följande kommandon:

$ svn co svn://stp/pst1vt10/shared $ svn co svn://stp/pst1vt10/<användarnamn>

Katalogen shared kommer jag att använda för att sprida filer till er, medan ni ska använda katalogen med ert användarnamn för att lämna in filer. När ni väl checkat ut shared räcker det med att uppdatera er lokala kopia genom att ställa er i samma katalog som ni checkade ut shared i, och ge följande kommando:

$ svn up

För er som glömt bort, inte gått, eller behöver friska upp minnet, finns kurskompendiet till Introduktion till Datateknik för Språkvetare fortfarande tillgängligt på nätet. Det innehåller en del om SVN. [pdf]

Att installera Java Development Kit

För att kunna kompilera Javaprogram krävs att Java Development Kit (JDK) är installerat på datorn. På våra datorer finns det redan, men om ni vill jobba från någon annan dator, till exempel hemma, kan ni bli tvugna att instalelra det själva. Sun, som utvecklar Javaspråket, tillhandahåller allt som behövs gratis. Det ni behöver är Java Standard Edition (Java SE) JDK, följ länken och välj den senaste versionen (för närvarande JDK 6 update 19). [html]

Klasser i shared-mappen

Det finns en samlad dokumentation av de klasser som ligger i shared-mappen, som kan vara bra att ha nära till hands som referens [html]. Jag har använt javadoc för att generera den, och länkat in Javas on-line API, så att länkar till t.ex. String fungerar. Det exakta kommando jag använde var:

javadoc -d doc -charset utf8 -link http://java.sun.com/javase/6/docs/api/ shared/*.java

Flaggan -d doc används för att ange målkatalogen för dokumentationen. Jag har en katalog som heter just doc där jag vill att alla genererade html-sidor hamnar. Flaggan -charset utf8 gör att webbläsaren tolkar det som utf8, vilket är nödvändigt om källkoden är skriven i utf8 (villket den i regel är, eftersom det är standardteckentabellen på vårt system). Flaggan -link http://java.sun.com/javase/6/docs/api/ gör de genererade dokumentationssidorna medvetna om vart de kan hitta dokumentationen för alla standradklasserna. Slutligen anger jag vilka filer dokumentation ska genereras för, vilket är alla Java-filer i shared-mappen (shared/*.java).

Litteratur

Kursbok

Eck, David J. Introduction to Programming Using Java. 5e utgåvan. [html]

Boken finns tillgänglig som web-version, samt som pdf. Även om man teoretiskt sett kan skriva ut alla 700 sidorna och få en kursbok gratis, avråder jag starkt från att göra det. Detta av flera skäl: boken finns att köpa till självkostnadspris via print-on-demand, vi undersöker ifall universitetstryckeriet kan göra det ännu billigare för er, samt att fenomenet fria utskrifter fungerar på grund av att folk i regel inte skriver ut böcker (skulle det ske i stor skala kan vi bli tvugna att ompröva policyn).

För er som inte vill läsa från skärmen så finns boken tillgänglig via print-on-demand från lulu.com [html]. Utöver detta har universitetstryckeriet erbjudit sig att trycka upp spiralbundna kopior av boken i A4 format. Kontakta mig om ni är intresserade av det alternativet.

Referenslitteratur

Skansholm, Jan. Java direkt med Swing. Studentlitteratur.
Liknande upplägg som kursboken, fast på svenska.

Java Platform SE 6 API (Documentation av standardklasserna). [html]

På Suns sidor finns en hel drös med ”tutorials” (nybörjarhandledningar) i Java. [html]