Rubriker markerade med en asterisk ( * ) kommer från kursplan version HT 2020
Innehåll och lärandemål
Kursinnehåll
Grundläggande kunskaper om programutveckling och datorer Semantik, syntax, data, information och positionssystem Enkla och sammansatta datatyper, variabler, minnesadresser, referenser och värden Tilldelning, operatorer, logik Sekvens, selektion, iteration Algoritmer, problemlösning, flödesschema, top-down-programmering och pseudokod Modulär programmering, funktioner och uppdelning av program i flera filer Filhantering och filformat
Lärandemål
Efter kursen ska studenten kunna:
Utifrån en given avgränsad problemställning skapa ett fungerande program där koden är strukturerad, lätt att läsa och vid behov uppdelad i funktioner.
Analysera en större programmeringsuppgift och till denna skapa ett väl fungerande program där koden är bra strukturerad, lätt att läsa och uppdelad i funktioner på ett strukturerat sätt.
Använda externa filer för datalagring.
Läsa och förstå samt felsöka kod.
Känna till några grundläggande begrepp inom datakunskap relevant för programmering.
Förstå olika tekniker för problemlösning.
Läraktiviteter
Det absolut första du måste göra på kursen är att se till att du har en fungerande programmeringsmiljö på din dator. Förhoppningsvis har du gjort detta på introkursen (CM0002). För att denna kurs ska bli kul och gå bra är det oerhört viktigt att du programmerar mycket under hela kursen. Totalt behöver du antagligen lägga ca 50h/vecka på dina studier vid kth. Bäst är att göra detta mån-fre och sedan vara helt ledig fredag kväll och lördag för att sedan söndag eftermiddag se över om man behöver göra lite extra inför veckan som kommer.
Kursen består av 15 föreläsningar, till varje föreläsning finns läsanvisningar till boken och programmeringsuppgifter i planeringen. Det är viktigt att ni läser och programmerar så att ni ligger i fas. Ge inte upp om det går trögt i början. Det tar tid att lära sig programmera men det är oerhört kul när man kan. Innan varje föreläsning är det 2h övning med övningsassistenter och lärare. Utnyttja dessa till max. Sitt helst i skolan och programmera även övrig tid så att ni kan hjälpa och sporra varandra. På övningarna kan man också redovisa vissa uppgifter och om man blir godkänd på tillräckligt många får man en bonus på första ordinarie tentamen.
Kom ihåg att de tre föreläsningarna från intro-kursen ingår som självstudie i kursen. Om du inte deltog i intro-kursen behöver du läsa igenom dessa och ställa frågor om något är oklart.
Förberedelser inför kursstart
Kurslitteratur
K N King, C Programming A Modern Approach, 2 ed, WW Norton & Co, ISBN: 9780393979503
Frivillig extralitteratur främst som stöd om du har svårt med engelskan: Jan Skansholm, C från början, Studentlitteratur AB, ISBN: 9789144114583
Programvara
Du behöver en fungerande programmeringsmiljö för C på din dator. Som kompilator använder vi gcc (minGW på windows). Som editor använder vi Visual studio code och den behöver ni behärska inför den praktiska tentan.
Stöd för studenter med funktionsnedsättning
Om du har en funktionsnedsättning kan du få stöd via Funka:
TEN2 - Tentamen, 3,0 hp, Betygsskala: A, B, C, D, E, FX, F
TENA - Tentamen, 3,0 hp, Betygsskala: P, F
Examinator beslutar, baserat på rekommendation från KTH:s handläggare av stöd till studenter med funktionsnedsättning, om eventuell anpassad examination för studenter med dokumenterad, varaktig funktionsnedsättning.
Examinator får medge annan examinationsform vid omexamination av enstaka studenter.
Avsnittet nedan kommer inte från kursplanen:
Datorövningar ( LAB1 )
Momentet består av tre laborationer. För laboration 1 och laboration 2 finns två redovisningstillfälle till vardera. Blir man godkänd på dessa behöver man inte göra delar av laboration 3. För laboration tre finns två redovisningstillfällen under ordinarie kurs. Blir man inte godkänd vid något av dessa tillfällen måste man redovisa hela lab 3 vid omtentatillfället i p2 eller tentatillfället i p3 (man slipper alltså inga delar även om man gjort lab 1 och/eller lab 2). När laboration 3 är godkänd är man godkänd på momentet (betyget PASS). Blir man inte klar med momentet under läsåret måste hela momentet göras om nästa läsår. Tider för redovisningar meddelas och bokas via canvas (gäller även p2 och p3).
Plagiering
Ni får/bör hjälpa varandra när ni lär er programmera. Diskutera och fråga varandra hur man löser olika problem. Ni kan också hjälpa varandra att hitta buggar när ni arbetar med övningsuppgifter men inte när ni arbetar med laborationerna. Då ska ni arbeta helt självständigt. Diskutera endast problem mera generellt med varandra och undvik att ens titta på varandras kod. Behöver ni kod för diskussionen skriv separat exempelkod istället. Ni får aldrig föra över kod eller skriva in kod åt varandra när ni arbetar med examinationsmomenten (det är inte en bra ide annars heller). Du måste förstå vad du programmerar – vad varje rad gör! -det är fusk att ta över andras kod på examinationsmoment. Att förstå vad varje rad gör är avgörande för att du ska lära dig att programmera och därmed klara tentamen men framförallt för att du ska bli en bra ingenjör!
Det har förekommit att studenter har kopierat delar av kod men sedan bytt ut variabelnamn, kastat om vissa rader och lagt in nya kommentarer. När detta har upptäckts har studenterna blivit avstängda av disciplinnämnden. Även den vars kod blivit plagierad har blivit avstängd.
Redovisning
Senast 15.00 dagen innan redovisning av laboration skall man via Canvas boka en tid för redovisning. Senast 20 minuter innan sin redovisningstid skall man sitta i redovisningsrummet med datorn på och programmet körbart redo att redovisa. För laboration 3 gäller att man dessutom senast 15.00 dagen innan redovisning skall ha skickat in programmet via https://maceo.sth.kth.se för avancerad plagiatkontroll. Observera att man inte får boka tid för lab 3 innan man skickat in den kod man ska redovisa! Laboration 1 och 2 redovisas två och två. Vänligen respektera dessa något omständliga regler. De är till för att vi ska hinna med att ta emot så många redovisningar och ändå förhoppningsvis hinna ge feedback.
För att bli godkänd på en laboration krävs att programmet uppfyller specifikationen, att programmet är välskrivet och att du kan förklara hur programmet fungerar.
Tentamen
Det kommer att finnas två tillfällen att skriva tentor: tentaperioden i p1 och omtentaperioden i p2. Förutom dessa tillfällen finns ett sista tillfälle för att kvalificera sig till projektarbetet på en E-tentamen i tentamensperioden i p3. Den tentamen kan man som bäst få betyget E på och den kan krocka med annan ordinarie tentamen. Det går också en tentamen man kan skriva i augusti. Tentamen i p4 kan tidaa och tiela inte skriva då vi endast har plats för programmen timel och cmedt.
TEN2
TEN2 är en salsskrivning ni skriver på skolans datorer utan tillgång till internet. Man får ta med sig sitt exemplar av kursboken: K. N. King, "C Programming A Modern Approach" och även Jan Skansholm, ”C från början”. Dessa måste vara helt rena utan anteckningar eller understrykningar! Inget övrigt får medtagas (förutom penna). Absolut inga anteckningar. Skoldatorerna kommer att köra linux med Visual Studio Code, CodeLite och CodeBlocks installerade. På ett övningstillfälle kommer ni få möjlighet att testa systemet.
Bonus
Till de flesta övningstillfällen finns det uppgifter som man kan redovisa i klassrummet. Om du blir godkänd vid minst 8 tillfällen behöver du inte göra första uppgiften på TEN2 vid första ordinarie tentamen. Den räknas då som full poäng. Vid omtentamen och senare tillfällen kan du inte använda bonusen. Observera att varje uppgift måste redovisas vid rätt övningstillfälle. Det finns marginal för att missa några tillfällen om du skulle vara sjuk. För mer information om hur redovisningarna går till läs aktuell information på canvas.
TENA
TENA är en teoretisk tentamen som kommer att göras digitalt hemifrån. Inför TENA finns det ett antal instuderingsfrågor. Dessa är tänkta att besvaras med hjälp av boken och föreläsningar. Gör gärna dessa kontinuerligt under kursen efter det att du har gjort programmeringsuppgifterna. Själva tentamen kommer bestå av ett antal teorifrågor och några kodexempel. Teorifrågorna kommer att vara på boken (liknande instuderingsfrågorna), på föreläsningarna och på föreläsningarna från introkursen (CM0002). Kodexempeluppgifterna kan vara att man ska hitta fel i kod eller korrelera kod med flödesdiagram eller på annat sätt visa programmeringskunskaper.
Övriga krav för slutbetyg
För godkänd kurs krävs godkänt på samtliga moment. Slutbetyget grundas på momentet TEN2 med betygsskalan A-F.
Målrelaterade betygskriterier/bedömningskriterier
Lärandemål 2-5 examineras med betygsskalan P,F. Lärandemål 1 examineras med betygsskalan A, B, C, D, E, FX, F:
E - Utifrån en given avgränsad enklare problemställning på väl tilltagen tid skapa ett fungerande program där koden är strukturerad, lätt att läsa och vid behov uppdelad i funktioner.
C – Utifrån en given avgränsad problemställning på väl tilltagen tid skapa ett väl fungerande program där koden är väl strukturerad, lätt att läsa och vid behov uppdelad i funktioner på ett strukturerat sätt.
A – Utifrån en given avgränsad något svårare problemställning som kräver ett visst mått av kreativitet på en något begränsad tid skapa ett väl fungerande program där koden är väl strukturerad, lätt att läsa och vid behov uppdelad i funktioner på ett strukturerat sätt.
Betyget Fx ges om man är mycket nära att uppnå betyget E. Betyget D ges om man delvis uppnår kraven för betyget C. Betyget B ges om man delvis uppnår kraven för betyget A.
TENA examinerar främst mål 1 och 4-6 med betyget P/F. LAB1 examinerar främst mål 1, 2 och 4 med betyg P/F. TEN2 examinerar främst mål 1 med betyget A-F. TEN2 kommer att ha två delar: en C-del och en A-del. På C-delen kan man beroende på resultat få betyget C, D, E, Fx eller F. A-delen bedöms endast om man visat att man når upp till betyget C på C-delen och bedöms då med betyget A, B eller C.
För godkänd kurs krävs godkänt på samtliga moment. Slutbetyget grundas på momentet TEN2 med betygsskalan A-F.
På TEN2 kan endast 1 h extra skrivtid ges för funktionsvariation eftersom betygskriterierna innehåller tid som en kvalitet.
Möjlighet till plussning
Ja i mån av plats. Dock aldrig på ordinarie tentamen i p1 och p4 pga platsbrist. Inte heller på tentamen i p3 eftersom det är en E-tentamen.
Etiskt förhållningssätt
Vid grupparbete har alla i gruppen ansvar för gruppens arbete.
Vid examination ska varje student ärligt redovisa hjälp som erhållits och källor som använts.
Vid muntlig examination ska varje student kunna redogöra för hela uppgiften och hela lösningen.