Kurspm

under bearbetning

Kurspm

Kursen ges läsåret 2015/2016 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 din fråga på KTH social.

Förkunskaper

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

Ni kan koppla upp er hemifrån med ssh mot u-shell.csc.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.4 som stöder stora delar C++11.Det går utmärkt att jobba i Visual Studio men windows-salarna har en för gammal installation av visual studio. Räkna inte med windows-specifik (eller för den delen Apple-specifik) handledning och tänk på att 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. 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 typparametriserad 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 kurslitteraturen 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. Det brukar finnas en eller två kursböcker som tentander utan medhavd kursbok kan dela på.

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

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 26 augusti 2015

kommenterade 2 september 2015

Hejhej!

Det står ovan "Ni kan koppla upp er hemifrån med ssh mot u-shell.nada.kth.se för...". Adressen är u-shell.CSC.kth.se :) Följer man länken står det rätt.

Assistent kommenterade 2 september 2015

@Hobrik Värnegård, jag har nu fixat den missvisande texten - tack för din kommentar!

kommenterade 7 oktober 2015

"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." Stämmer den här informationen fortfarande även om det står 2012?

kommenterade 14 december 2015

Jag vill också ha svar på det Jens skrev dvs

"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." Stämmer den här informationen fortfarande även om det står 2012?

Lärare kommenterade 15 december 2015

Jag har inte mer besked att ge, det är bara en handledare som kan i januari. Jag har vidtalat doktorander och väntar på att de får klart med flygbiljetter. Så fort jag får besked meddelar jag. Jag hoppas det kan bli ett redovisningstillfälle i januari. Bonus för labb3 i tid räknas i januari.

kommenterade 15 december 2015

För hur blir det annars med bonusuppgfiterna till lab1 och lab2 för de ska man kunna redovisa i januari också?

Lärare kommenterade 15 december 2015

Det går att redovisa extrauppgifter i labb1 och labb2 i december. Det går att redovisa alla labbar i december. 

kommenterade 15 december 2015

Jo fast det var inte min fråga. Period 2 sträcker sig till slutet på januari och alla labbar har varit försenad för oss. Större delen av kursen ska ligga i period 1 och när allt är försenat är det svårt att hinna med det mesta i period 1.

Feedback Nyheter