DD1331 Grundläggande programmering
Söta katter funderar på hur de ska programmera. Bilden är generad av DALL·E 3.
Välkommen till grundläggande programmering!
Programkatalogen är det juridiska dokument som innehåller information om vad kursen innehåller, vad syftet är och vad som examineras.
KursPM innehåller information om kursens upplägg i år. Här förklaras vad varje delmoment i kursen innebär och vad man ska fokusera på i de examinerande momenten och är mer pedagogiskt upplagt än programkatalogen tillåts vara.
Kursöversikt innehåller en detaljplan över vad som gås igenom vecka efter vecka och vad du bör göra för att hänga med. Här finns alla datum och deadlines. Observera att datum inte finns någon annanstans utan detta ska vara single source of truth för alla deadlines.
Labbarna kommer att publiceras i takt med att kursen går framåt här:
Labb 1
Download Labb 1.
Labb 2
Download Labb 2.
Labb 3
Download Labb 3.
Labb 4
Download Labb 4.
För hjälp med att förstå labblydelserna och komma igång med verktygen i kursen (Terminaler, Git och en Editor) kom till ett labbpass i schemat och köa här https://queue.csc.kth.se/Queue/Gruprog. Det finns begränsad möjlighet att ta drop-in-redovisningar på labbpass men bästa sättet är att skapa ett issue på Github i githubrepot för aktuellt labb (se labblydelsen för vad det betyder) med rubriken "Redovisning" när du är klar. Någon ur lärarlaget kan då boka en tid med dig alternativt ge dig feedback på vad som behöver fixas innan du kan redovisa.
Information om den individuella projektuppgiften (P-uppgiften):
P-uppgiftens instruktioner
Download P-uppgiftens instruktioner
P-uppgiftslydelser
Download P-uppgiftslydelser
Extra filer för P-uppgifter
Övningarna kommer att publiceras här:
Övning 1
Download Övning 1
Övning 2
Download Övning 2
Övning 3
Download Övning 3
Övning 4
Download Övning 4
Övning 5
Download Övning 5
Övning 6
Download Övning 6
I vänstermarginalen kan du se en länk till OLI Torus SE. Här finns en uppsättning texter och interaktiva övningar med feedback som gör att det går snabbare att ta till sig av materialet i kursen.
9 råd för att lyckas i kursen:
1. Lägg mycket tid på kursen, utspritt över lång tid. 1h per dag bör räcka för betyg E. 2h per dag bör räcka för betyg A. En stark daglig rutin för hur man kommer igång och får saker gjorda är viktigt i kursen.
2. Studera aktivt. Fokusera på uppgifter som får dig att tänka och fall inte in i att passivt länksurfa alltför mycket på Wikipedia eller titta på för mycket youtubevideos. Även när du läser så kan du göra det på ett aktivt sätt och stänga boken för att se om du har kommit ihåg vad du just läste, eller att pausa videon och försöka räkna ut vart den är på väg.
3. Fastna inte i att bara försöka bli bättre på det du redan kan utan angrip även dina svagaste punkter. Kontrollskrivningen i kursen bedöms efter dina 2 sämsta delar (av 5). Labbarna och P-uppgiften försöker att täcka in många olika delar av Python.
4. Vad du gör utanför kursen spelar roll. Att studera när man äter rätt, sover rätt, har harmoniska relationer och tränar regelbundet går enklare.
5. Ha ett loggsystem. Det kan vara så enkelt som att du skriver ner några rader med frågor eller stödord utifrån vad du gjort under dagen. Gå sedan igenom loggen för igår, för en vecka sedan, för en månad sedan och för ett år sedan. Systematisk repetition är ett utmärkt sätt att behålla sina kunskaper.
6. Tänk på ställtid - den tid det tar att byta mellan två olika arbetsuppgifter. Om du lämnar din kod i ett oläsligt skick så kommer det att ta tid att hitta tillbaks till den nästa gång du kommer tillbaka. Den lilla tiden det tar att ha bra namn på sina variabler och funktioner är mycket värd. Tänk också på ställtid när du frågar en kompis. Det kanske bara tar 1 minut för dig att få svaret, men kompisen kan råka lämna sin problemlösning och behöver hitta tillbaka vilket kan ta längre tid. Fråga hellre "När du har tid..." så att kompisen kan skriva en kort "hitta tillbaka till uppgiften"-guide till sig själv och hjälpa dig.
7. Fokusera lagom mycket på betyg och högskolepoäng. Om du ligger under kursens godkäntkrav så kan betygen guida dig till att lära dig fler aspekter av ämnet och att fördjupa dig inom flera områden. Fortsättningskurserna kommer att bygga vidare på materialet i grundkursen så om den här biten sitter ordentligt så får du det enklare att klara senare årskurser.
8. Satsa på livslångt lärande. Efter kursen kan du bygga upp en uppsättning program som du gjort utöver kurserna på Teknis. Det kan handla om programmeringsprojekt på Github, en personlig webbplats, en Youtubekanal med videos om programmering eller att lösa mångra problem på webbplatser som Project Euler, Kattis, Codeforces eller liknande. Dels är det roligt, dels så ökar ständigt kraven på de mest attraktiva arbetstillfällena.
9. Effektiv utbildning kräver viss friktion. Att läsa långa och svåra texter och ta sig an utmanande uppgifter är centralt för att göra framsteg som programmerare. Många försöker komma undan med korta uppgooglade texter, Wikipedia, fråga en kompis eller en AI alldeles för tidigt. En bättre teknik är att tänka själv först och sedan gå till en ordentlig källa, till exempel någon av de rekommenderade böckerna eller Pythons referensdokumentation på hemsidan.
Kursboken är "Python Crash Course" av Eric Matthes, no Starch press.
Rekommenderade överkursböcker för er som redan kan programmera är:
- Introduction To Algorithms (I.T.A.) av Cormen, Leierson, Rivest, Stein
- Fluent Python av Luciano Ramalho
Om ni inte redan har gjort det, se till att skaffa ett konto på Kth:s GitHub: https://gits-15.sys.kth.se/
Det mesta av föreläsningsmaterialet finns här: https://gits-15.sys.kth.se/dicander/gruprog_lecture_notes, resten pekas ut från sidan kursöversikt för den specifika föreläsningen.
Tidigare års föreläsningar och vissa övningar finns på Youtube: https://www.youtube.com/@programmering Links to an external site.
Kontakt: Använd inte Canvas mailfunktion för den har vissa brister som vi slipper med mail. Kontakta kursledaren med dicander@kth.se
För åsikter om kursen, kontakta kursnämnden som består av:
Hannes Abdullah habd@kth.se
Areeb Ahmad: areeb@kth.se
Maja Björnström: maja.bjornstrom@gmail.com
Gabriel Lekander: glek@kth.se
Lycka till!