Till KTH:s startsida Till KTH:s startsida

Kurspm

Kurspm

Kursen ges läsåret 2014/2015 i period 1 och 2 med Alexander Baltatzis som kursansvarig.För frågor använd i första KTH social. Du kan ställa om så att enbart kursens lärare ser frågan.

Förkunskaper

Kursen förutsätter kunskaper i objektorientering i ett eller flera objektorienterade språk samt grundläggande kunskaper om algoritmer. 

Kursregistrering och anmälan till kurs

Kursanmälan sker via din studievägledare. Vi har ingen platsbegränsning på kursen. Kursregistrering sker via "mina sidor". Inte mina "mina sidor" utan dina "mina sidor". Om du inte är med i denna kursomgång, tala med ditt kansli. När du kan se kursvalet på "mina sidor" dröjer det inte länge innan du finns i rapp (överföring från kursval i ladok till rapp görs automatiskt med regelbundna intervall). 

Det är viktigt att ni registrerar er på kursen innan första redovisningstillfället (månadsskiftet september/oktober). 

Det händer att man inte kan registrera sig på kursen trots att man är antagen. Då bör man kontakta sin studievägledare och/eller studentdata@kth.se. Varför det blir så kan bero på att man är antagen till kursen på civilingenjörsprogrammet innan man blev uppflyttad till master-programmet men "mina sidor" kan bara registrera kursen på ett master-program. 

Konton, passerkort m.m.

Om ni inte har konto på nada/csc sedan tidigare kontakta servicecenter. De kan även hjälpa till med passerkort. Efter 1:a oktober flyttas systemgruppen till KTH centralt, gissningsvis Drottning Kristinas väg 48 och då måste ni vända er dit. Troligen it-support@kth.se

On ni inte läser er kth-post bör ni forwadera den till annan adress ni läser. 

Ni kan koppla upp er hemifrån med ssh mot u-shell.nada.kth.se för att jobba hemifrån på skolans datorer. På u-shell finns även den alternativa kompilatorn clang (module add gcc/4.8.1 krävs)

Programmeringsmiljö

Vi använder ubuntu miljö med, i skrivande stund, gcc version 4.8.1 som stöder stora delar C++11.Det går utmärkt att jobba i Visual Studio och att labba i windows-salarna (i mån av plats) men räkna inte med windows-specifik (eller för den delen Apple-specifik) handledning och tänk på att de två första labbarna måste gå att kompilera och köra på ubuntu prova därför att kompilera om dem under unix. Det finns en alternativ kompilator på ubuntu - clang som i skrivande stund enbart finns installerad på u-shell. Felmeddelanden från clang kan vara bättre än de från gcc.

En del av koden ska testköras på testsystemet kattis. Kattis kör antagligen inte exakt samma gcc-version som vi gör.

Kursens innehåll, krav och målsättning

Du som går kursen ska efter genomgången kurs känna att du behärskar alla delar av C++ och att du fått ett självförtroende så att du kan gå in i befintliga C++ projekt i näringslivet och vidareutveckla eller underhålla koden.

Nya begrepp

C++ är ett innehållsrikt och komplext språk jämfört med t.ex. java. En del nya programmeringsbegrepp som dynamisk minneshantering och typparatmetriserad programmering får du tillfälle att öva på under de två första labbarna.

Läsa litteratur

Det finns en hel del bra litteratur om C++. För den oinitierade kan den vara svår att läsa. Tyvärr finns också litteratur med felaktigheter. Den rekommenderade kurslitteraturn innehåller inga felaktigheter. Det går att klara kursen med enklare och mindre omfattande kurslitteratur. För den som ska jobba professionellt med C++ är den rekommenderade kurslitteraturen användbar efter kursen.

Som programmerare på ett företag kan du hamna i en situation där du är alldeles ensam om att fatta dina beslut. Då är det viktigt att du behärskar de mest centrala begreppen. Mitt i kursen ges en tenta som testar de centrala begreppen och även din förmåga att kunna slå upp och förklara svårare begrepp.

Den rekommenderade kursboken är Josee Lajoie, Stanley LippmanC++ Primer femte utgåvan. Fler rekommenderade böcker och länkar kommer att finnas på kurshemsidan.

Objektorienterad modellering

Den sista uppgiften består i att konstruera ett textäventyrsspel. Speluppgiften är skriven för att lösas med klassisk objektorientering. Objektorienterad programmering förutsätts du kunna sedan tidigare och dina kunskaper kommer att kompletteras med det som gäller specifikt för objektorientering i C++.

Spelet är ditt sätt att visa att du behärskar centrala delar av språket C++. Att du vet hur polymorfism och dynamisk bindning fungerar, att du kan sätta restriktioner på data med public/private/friends/const, att du kan hantera minnesallokering rätt och att du kan använda standardbiblioteket.

Examination

Kursen har två obligatoriska moment i Ladok:

  • TEN1 -- Tenta
  • LAB1 -- Datorlaborationer

För att klara kursen krävs att du får godkänt på båda momenten. En tentamen och tre obligatoriska labbuppgifter.

Tenta

Tentamen är inte betygsatt, utan du blir antingen godkänd eller inte. Om du inte skriver några allvarliga fel på tentan blir du godkänd. Hjälpmedel på tentan är din kursbok. Det är tillåtet och uppmuntras att göra understrykningar och anteckningar i kursboken. Det hjälper att läsa i boken innan tentan. Det är inte tillåtet att skriva in gamla tentor i kursboken.

Ordinarie tenta är schemalagd i oktober, se schema. Omtentan ligger i januari. 

Gamla tentor och lösningar går att nå via hemsidan. Läs på gamla tentor!

Tentaresultatet anslås inte längre på institutionens anslagstavla utan kan ses på mina sidor. Klagomål på rättning av tentan lämnas in skriftligen till kursledaren via expeditionen.

Komplettering av tenta

Det kommer inte att finnas möjlighet att komplettera ordinarie tenta. Vid omtentatillfället kommer eventuella kompletteringsmöjligheter att anslås på hemsidan.

Datorlaborationer

Två obligatoriska datorlabbar och en projektuppgift ingår i kursen. Dessa utgör momentet LAB1. Hederskodex ska tillämpas. Labbarna och projektuppgiften ska helst göras i tvåpersonsgrupper. Man får inte vara fler än två i en grupp. Enpersonsgrupper rekommenderas inte eftersom felsökning kan ta ohemult mycket tid i anspråk. Varje labb och projektuppgift som redovisas senast det labbtillfälle (dvs före den angivna tidpunkten) som finns angivet på kvittenspapperet ger bonuspoäng, de första två ger vardera två bonusopäng och den tredje fyra. Sammanlagt kan alltså labbarna och projektuppgiften ge 2 + 2 + 4 = 8 bonuspoäng för redovisning i tid. Bonuspoängsuppgifter för labb1 och labb2 kan bara redovisas under period ett och två. Bonuspoängen gäller ett kalenderår räknat från kursstart, dvs de måste redovisas innan nästa kurstart. Det finns en allmän labbvecka på CSC i början på juni där man kan redovisa restlabbar.

Labbarna och projektuppgiften har dessutom ett antal frivilliga extrauppgifter. Redovisning av extrauppgifter kan leda till högre betyg, se avsnittet om betyg nedan. Extrauppgifter för lab ett och två måste redovisas senast sista schemalagda labbtillfället i period två. Om det finns handledare att tillgå så kan ett extra labbtillfälle schemaläggas i januari vilket då räknas som sista tillfället, se betyg nedan.

Labbtiderna är i första hand hjälptider i andra hand redovisning. Separata (förhoppningsvis bokningsbara) extra redovisningstider kommer att läggas upp under kursens gång om det finns behov (och i viss mån beroende på tillgång på handledare).

Det händer att handledaren glömmer rapportera in ert resultat. Det är ert ansvar att ni kan visa att redovisning skett, se till att få underskrift på kvittenspapperet alternativt att de rapporterar in i rapp direkt.

Betyg

För godkänt gäller att man ska ha redovisat tre laborationer och klarat tentamen.

Man kan få högre betyg genom bonuspoäng. Bonuspoäng kan man få när man redovisar sina labbar i tid (8p) eller gör extrauppgifter på labbarna (80+). Betyg sätts enligt följande:

5  A  60+
4  B  45-59
4  C  30-44
3  D  15-29
3  E  0-14

En del extrauppgifter är obligatoriska för att få högre betyg. Dessa står markerade i labbhäftet. Extrauppgifter för lab1 och lab2 måste redovisas senast sista redovisningstillfället i period två. Beroende på tillgång till handledare kan det komma ett extra tillfälle i vecka två 2012 (jullovet) som då räknas som sista redovisningstillfället d.v.s. man kan redovisa extrauppgifter för labb1 och lab2.

Det finns en labbvecka som brukar vara andra veckan i juni där man kan redovisa restlabbar. Det är i skrivande stund mycket osäkert om det överhuvudtaget kan ske restredovisning vid något annat tillfälle under våren, räkna inte med det. 

Man kan omregistrera sig på nästa kursomgång. Det är den nya kursomgångens labbar som gäller. Om en labb- eller extrauppgift inte har ändrat sig väsentligen så brukar man få tillgodoräkna sig den utan att redovisa om uppgiften. Bonus för labbar i tid överförs inte i rapp vilket gör att man mister den poängen. 

Avslutningsvis

Ett vanligt förstajobb för nyexaminerade C++programmerare är att underhålla eller vidareutveckla befintlig kod. Förutom de kunskaper som nämnts ovan krävs övning och färdighet i programmering, avlusning, testning, byggning, länkning och kreativt tänkande. Detta får du tillfälle att träna på under kursens gång.

Alexander Baltatzis skapade sidan 2 september 2014

Lärare Alexander Baltatzis ändrade rättigheterna 2 september 2014

Kan därmed läsas av lärare och ändras av lärare.

Lärare Alexander Baltatzis ändrade rättigheterna 3 september 2014

Kan därmed läsas av alla och ändras av lärare.
kommenterade 4 januari 2015

(under betyg)

"Beroende på tillgång till handledare kan det komma ett extra tillfälle i vecka två 2012 (jullovet) som då räknas som sista redovisningstillfället d.v.s. man kan redovisa extrauppgifter för labb1 och lab2."

Kanske borde ha variabler för årtal så att du bara behöver ändra på ett ställe :P