Göm menyn

Vanliga frågor (FAQ)

Nedan följer svar på några vanliga frågor som brukar dyka upp under kursens gång men framförallt kursstart.

Vad missar man om man är borta?

Som i alla kurser är det så att vi har lagt upp innehållet för att man bör vara närvarande, men är man sjuk eller behöver vara borta (eller väljer att vara borta) så går det i denna kurs både att arbeta i förväg och arbeta ikapp. I denna kurs finns det stora möjligheter att arbeta med saker hemifrån och vi har inga obligatoriska närvarotillfällen. Däremot är det så att om man är borta får man själv stå för den ikapphämtning och det gör självklart att det blir tyngre.

Denna kurs bygger MYCKET på närvaro på programmeringsstugor/lektioner och att man tar åt sig den respons man får via de hjälpmedel vi tillhandahåller. Det är viktigt att du som student förstår ditt egenansvar här och att saker som du själv prioriterar över dessa tillfällen inte bör återspegla sig i kritik gentemot assistenter, oss eller kursen.

Det bör också påpekas att denna kurs skiljer sig ganska mycket från många kurser vad det gäller hur man bör arbeta. Om man kommer igång sent är det mycket svårare att komma ikapp i denna kurs än i en kurs som är mer teoretisk. Denna kurs handlar om ett nytt "tänk" och den stora saken är "problemlösning". Man förlorar i denna kurs mer om man är borta i början av kursen än i slutet.

Kan man gå på vilka programmeringstugor som helst (i schemat)?

Nej. Det är inte tanken att man går på vilka pass som helst. Schemat är gjort för att alla skall få chans att ha sin tid med assistenterna.

Ni kommer att vara uppdelade i två grupper som har olika tider i schemat. Detta för att vi skall kunna ge er den tid ni skall ha. Vi kommer inte att "agera poliser" och köra ut er om ni går på varandras tider, MEN att gå på den andra gruppens pass kommer resultera i en snedfördelning och ni kommer i slutändan få mindre hjälp. Det är bättre att ni istället byter pass med någon annan ifrån den andra gruppen för att motarbeta snedfördelningen.

Tider kan vara lite sena ibland och det kanske är jobbigt att gå upp på morgonen ibland, MEN om man bara tänker "jag tar det andra passet" så blir det överfullt och ingen kommer att kunna få vettig hjälp av assistenterna.

Alltså: Ni studenter får ansvaret att säga till era kamrater om det är så att de går på ert pass och ni inte får plats. Vi kommer som sagt inte att vilja/kunna vara poliser i detta.

Med det sagt: Finns det plats i salen så är det förstås ok att närvara även på tider som inte är "dina". Det gör ju att man kan få chans att ställa någon extra fråga eller vara med i diskussioner som är på dessa. Det som är viktigt är dock att ni respekterar att ni får "prioritet 2" så att de som har detta pass får sin tid med assistenten.

Jag får felet "Firefox is already running" när jag försöker öppna Firefox. Vad ska jag göra?

Öppna en terminal. Kör sedan kommandot:

rm -f ~/.mozilla/firefox/*/.parentlock

Vad är en bra arbetsgång vid lösning av en uppgift?

Testa din kod ofta när du sitter och skriver.

Spara koden. Kompilera. Testa. Rätta till. Spara. Kompilera. Testa.

Glöm inte att testa det du redan testat innan om du ändrar ditt program då det påverkar annat än man tror när man gör små ändringar.

Vilken kurslitteratur är det i år?

Vi har samma kursbok som tidigare år, se sidan "Kursbok Ada". Övrig litteratur är kurssajten.

Vem är det smart att arbeta med? En som är bättre än jag själv vore väl super?

Ett tips från gamla studenter som missat kursen när de gick den första gången är: Arbeta inte med någon som är bättre än du. Risken är stor att du missar tentan. Man bara tror att man förstår saker. Man kommer bara mer och mer efter.

Tips från oss som arbetar med er studenter och har gjort det under många år är att arbeta med en som ligger på samma nivå som du. Byt under kursen om det märks att ni "divergerar" i kunskap.

Jag har förlängd skrivtid, hur nyttjar jag den?

Se rubriken "Förlängd skrivtid" på sidan P-uppgifter och P-pass.

Jag har synpunkter på kursen, hur lämnar jag dem?

Vi är mottagliga för kritik och vill gärna ha en diskussion med er studenter om det är något ni uppfattar som under förväntan.

Det bästa sättet att ta upp detta är att designera en eller ett par personer per klass (för de klasserna med klassrepresentanter kan dessa vara lämpliga) som sköter denna typ av kommunikation med kursledningen. Att överösa oss med separata klagomål, oftast via mail, blir ohanterligt för oss och blir i slutändan icke-produktivt. Det är så det är tyvärr.

När en diskussion hafts, eller i de fall ett svar mer än något annat efterfrågas, kommer kontentan ofta att delges alla i kursen via mail.

Varför skall vi lära oss språket Ada istället för ett modernt programspråk?
Hur lång tid tar det i denna kurs?

En fråga som vi fått in från en student. En bra fråga som vi hoppas att ni alla vill ha svaret på.

	Likt många andra är jag fortfarande inte såld på Ada som första
	programmeringsspråk. Jag tror inte jag missat någon föreläsning
	när ni förklarat varför vi år 2023 håller på med det "döda"
	språket Ada. Att Ada är ett dött språk är inget jag personligen
	vetat om innan då programmering inte är något stort intresse för
	mig.  Men bekanta som antingen jobbar eller som kan programmera
	olika språk har sagt detta om och om igen.
      
	Vad jag ber om är en längre och utförligare förklaring många
	säkert vill/behöver höra för att inte lämna denna kurs och
	känna att lära sig Ada var ett slöseri med tid när man kan
	lära sig och bli bra på python eller annat modernt språk som
	man kanske senare har riktig använding för.
      
	Sen vill jag verkligen be om, innan kursutvärdering att i Ada men
	även python (innan det är slut) att visa och ta upp exempel på hur
	koden vi skriver kan användas i riktiga IRL scenarion. Det är
	något jag saknat under hela kursen. När den enda programmeringen
	jag personligen ser är mina egna uppgifter för att räkna simpla
	matteproblem i terminalen, får jag och garanterat många andra
	verkligen ingen bild av hur "riktiga" program ser ut. Så jag ber
	er att visa något riktigt program nedbrutet i delar. Jag tror
	verkligen det kan hjälpa oss att se hur ett "proffs" använt sig av
	liknande if-satser, loopar och diverse satser som vi skrivit fast
	i ett riktigt scenario.
      

Vi vill först svara på en del av frågan som egentligen inte är en fråga, men som tyvärr är en inställning som många har (som kan programmera) som inte förstår vad de egentligen gör för/mot andra. Kommentaren ovan som säger: "bekanta som antingen jobbar eller som kan programmera olika språk har sagt detta om och om igen".

Vi tror att de som säger detta inte riktigt kommer ihåg att de en gång i tiden inte kunde programmera eller vilka problem de hade när de lärde sig. Det är också lätt att glömma att det inte bara är de som sen fortsätter som programmerare som går denna kurs. Vissa av er har haft det jättesvårt med att få till koncepten (vilket är vanligt som nybörjare) och det blir absolut inte lättare om man väljer fel väg i början.

Ett gammalt ordspråk som säger detta bra är: "Man skall inte lära sig springa innan man lärt sig gå."

Andra har bara inte förstått att det inte finns något "det bästa språket" eller att "det sätt jag lärde mig på är det bästa" utan att det faktiskt finns tankar som är större än språket. T.ex. att läsa specifikationen och göra det som står eller att skriva "snygg" kod (eller följa den standard som företaget säger att man skall följa). Det blir mycket bättre när man själv kan läsa sin egen kod då man på det viset också minskar antalet fel man gör (och det är lättare att hitta de fel man råkar göra).

Vi håller med om att Ada inte är det första valet i industrin idag. Det beror förstås på vad man skall göra vilket språk man skall använda och detta leder till att man inte kan välja "rätt språk" som första språk om man skall tillgodose alla olika val som kommer senare.

Vår tanke är att ni skall kunna komma vidare lättare till olika språk på ett bra sätt. Därför har vi valt att börja med Ada. Många fler anledningar finns nedan.

En diskussion som finns är att man skall ha ett "fiktivt" språk för att lära sig programmering och inte något språk som är specifikt. Detta är super! Det som behövs är bara att skapa ett sådant och sen använda detta. Vi väljer att se Ada som detta fiktiva språk så slipper vi både skapa nya saker och har en redan fungerande kompilator etc. Se alltså inte Ada som något vi lär ut för att ni skall kunna söka ett jobb med just Ada som språk. Se det som en superväg för att lära sig att behärska de saker som de andra språken också har. Bara att man skriver det lite annorlunda (som att lära sig svenska först och sen tar man ett annat språk senare när man förstår upplägget av hur det fungerar).

Nu till en massa saker som gör att Ada är bra (kanske t.o.m. bäst just nu) som första språk

  1. Det handlar i första hand om att man skall få till sig de delar som t.ex. Python döljer. Många moderna språk har gjorts för programmerare som redan kan programmeringen och där det är bra att man slipper skriva mycket kod för att lösa problem. Detta leder dock till att man som nybörjare råkar ut för stora "hål" i sin kunskapsbas.
  2. Punkt 1 leder till att man inte kan tillräckligt med delar för att sen byta programspråk till t.ex. C++ eller andra lite "besvärligare" språk. Att gå från Python till C++ kräver ytterligare en stor kurs (man blir som nybörjare igen). Om man istället går från Ada kan man gå in på de koncept som finns i C++ snabbare och kommer därför längre på samma tid. Att gå från Ada till Python är "trivialt" vilket gör att vi i TDDE54 kan beta av Python-delen på 3-4 veckor. Det handlar mer om "hur man skriver" i Python (vi har en översättningstabell "från Ada till Python" på hemsidan) än "vad man gör för att lösa problemet". [Kommentar: En del tror att det hade varit bättre att börja med Python för att det är så lätt, men detta beror ju på att ni redan kan en massa saker från Ada:n och dessutom infaller punkt 1 igen.]
  3. Om man istället skulle börja med ett språk som t.ex. C++ (som är ett använt språk i industrin) är nog de flesta som kan programmering ganska överens om att detta tar längre tid för att komma in i de koncept som vi tar upp i Ada under den tid vi har till förfogande. Det finns också saker i Ada som vi tar upp som man inte ser i t.ex. Python, men som ställer till det om man inte förstår dem. T.ex. "in out" i parameterlistor, som är väldigt tydligt i Ada, som är lite kryptiskt (minst sagt) i C++ och knappt syns i Python. Det finns förstås en massa sådana exempel, men vi antar att ni är med på vad vi menar.
  4. Vi har alltid diskussioner om språk och vad man skall använda som första språk för studenter och det är många som (tyvärr tycker vi i vår grupp) vill börja med Python (som nog är det mest populära nu). Vi håller med om att detta kan vara bra i grundskolan och gymnasiet för att motivera eleverna till att komma igång då det är lätt att göra "roliga saker", men på universitetsnivå vill vi komma längre och få er att ha grunden till det ni senare kommer att kunna råka ut för. [Kommentar: Vi har i vår grupp utbildat ett stort antal lärare på grundskolan och gymnasiet i Python för att de skall kunna ha detta i matematiken (krav från Skolverket) under ett antal år. Vi ser detta som rätt väg/språk att börja med på den utbildningsnivån.]
  5. Lite om historia och kopplingar mellan olika delar för att visa varför vi absolut tycker att Ada är bra som förstaspråk. Även om vi förstås letar efter ersättare till Ada hela tiden.
    • Java som första språk.
      • Detta var något som slog igenom över hela världen under 1990-talet. Det var massor av programmerare och lärare som tyckte att detta var super då det ju höjde nivån och att det ju "inte spelade någon roll" vilket programspråk man började med. Det finns viss sanning i detta, men det finns också fallgropar.
      • Det var många programmerare/lärare som motiverade bytet till Java med att man skulle börja med det "konceptuella" som kallas "objektorientering" istället för det vi använder som kallas "imperativ programmering" (som vi gör i Ada-kursen, det kallas ibland också "proceduriell programmering").
      • Redan efter några år fanns det forskning som visade på att det nya med "objektorientering" som första tanke inte var bra (tyvärr är det många som återfaller i att tro att det fungerar om man ser det i många kurser numer). Det var faktiskt så illa att man sa "vi har tappat flera årskullar med programmerare".
      • Att göra om en kurs som bygger på ett språk som i grunden bygger på objektorientering (som Java) till något som är imperativt är inte lätt. Man faller snabbt in i att man behöver objektorienterade saker och därmed tappar man ofta de väsentliga delarna. De imperativa konstruktionerna (loopar, villkor, satser, etc.) och de underprogramsdelar samt datastrukturer som man behöver för att sen gå vidare till "nästa nivå" (objektorienteringen) blir tyvärr hål.
      • Vi är glada att vi inte hoppade på det spåret i den vevan. Vi valde att följa spåret
        "Imperativt" => "Objektorientering" => "Datastrukturer och algoritmer".
        Det traditionella var i detta fall lösningen som fungerade bättre fortfarande. :-)
      • Vi valde att säga "Java som första språk" i rubriken, men som du förstår skulle det kanske stått "Objektorientering i första kursen". Detta är något som man lätt som lärare faller in i för att man själv förstår det och det "trycks" på det från studenter och andra, men om man ser det i backspegeln så är det inte dumt att kunna programmera lite innan man går in på de mer avancerade sakerna.
    • DM-nämnden (för DI) och EF-nämnden (för EL) som har TDIU08 som kurs. Spåret för DI/EL är att de skall gå mot C++ senare.
      • För länge sedan hade vi Ada i första kursen i programmering. Det rullade på och studenterna kom igenom kursen bra. Fortsättningskurserna var i C++ och övergången till detta fungerade också bra.
      • För lite mindre länge sen fick nämnderna för sig att de skulle fokusera på C++ och plockade bort Ada i förstakursen. Resultatet blev tyvärr så att studenterna ägnade första halvåret för att lära sig "syntax". D.v.s. hur man skriver kod för att kompilatorn skall släppa igenom den. Det var många som inte klarade första kursen beroende på detta (Viktor som är kursledare hos oss gick den kursen och har mycket att säga om den). Det blev mindre fokus på hur man faktiskt löste problem och mer fokus på att bara få programmet att fungera (alltså mindre fokus på att det blev "bra kod").
      • Som ett sidospår men ändå relevant kan man säga att DI:s första år bestod av 3 st C++-kurser och sen i årskurs 2 fanns det på hösten ett projekt i C++ (fyra kurser totalt i C++ alltså). De borde kunna mycket C++ nu (och det kunde de även om det tog tid att komma dit).
      • För ganska länge sen, efter långa diskussioner med nämnden bytte vi "tillbaka" till Ada som först språk, men då i en ny tappning där vi gjorde en Ada-C++-kurs. Nämnden var inte säkra på att detta var en bra idé då det gick tillbaka till ett "döende språk", men med facit i hand ser vi att det var bra. Denna kurs har kurskod TDIU08 och är alltså en kombinationskurs med två programspråk.
      • Studenterna var förstås (precis som ni) inte glada över att ha ett "dött/döende" språk i kursen, men det som blev resultatet av detta var att fler studenter klarade första kursen, de klarade även de två andra kurserna på våren bättre och projektet på hösten rullade på som smort (bättre än tidigare).
      • Det som dessutom hände var att tredje kursen ändrades till att innehålla ett litet miniprojekt. Detta medförde att projektet på hösten i 2:an blev "onödigt" då studenterna kände att de fick göra "samma sak" igen som på våren.
      • Detta ledde i sin tur till att vi plockade bort "6hp" på hösten i tvåan (projektet) och flyttade upp dessa "hp" till 3:an och gjorde en "riktig" projektkurs där istället. Den kursen är vad vi vet väldigt omtyckt och kopplar ihop studenterna med riktiga projekt i industrin.
      • Summan av detta är alltså att vi tack vare att vi börjar med Ada sparade 6hp som kunde göra bättre nytta på annan plats i deras utbildning. Detta utan att minska kvalitet eller ta bort innehåll. Snarare kom det till innehåll som gör att studenterna kan mer efter dessa 3 kurser (på 18 hp) gentemot de 4 (på 24 hp) de hade tidigare.
    • MD-nämnden som har TDDE54 som kurs. Spåret för M/EMM/MI är inte så tydligt. Det går att gå vidare mot Java, C++, ...
      • Vi hade Ada i förstakurserna för "länge sen" och det var påtryckningar från nämnden och studenterna att det skulle bytas ut (observera att kursvärderingarna var höga, över 4, så det var inte detta som föranledde något byte). Nämnden "tvingade" över oss i en kurs med Ada-MatLab (som nu, men inte Python i slutet alltså). Detta fungerade ganska bra, men MatLab är inget programspråk, utan ett verktyg som det går att programmera i, vilket gjorde kursen lite haltande.
      • Efter detta tyckte nämnden att detta inte var bra (vi håller med då det var ett lite konstigt val de gjorde) och de hoppade på ett "gammalt" spår där man skulle ha MatLab som första programspråk. Vi avsa oss i vår grupp att ta detta spår. Ingen annan grupp på IDA hoppade på spåret heller och det hamnade på en annan institution.
      • Några år senare visade det sig att man istället ville ha Python (Blender) och en annan del av IDA fick ta denna kurs. Den Python-kursen har fortfarande DPU och den är byggd för att vara en del av deras program. M och EMM hoppade på den kursen när den var skapad, men den kanske inte var riktigt det som behövdes på M och EMM.
      • Nämnden kom senare till oss på IDA och undrade hur de skulle göra för att studenterna skulle vara bättre på programmering när de kom upp till senare årskurser.
      • Vi på IDA hade några olika förslag (från olika delar av IDA). Vårt förslag var att gå via Ada till Python (TDDE54) och de andra pratade om att ändra Python-upplägget.
      • Nämnden valde vårt förslag med Ada-Python som en tvådelad kurs likt TDIU08 ovan.
      • Vi väntar nu på resultatet gällande hur det går för studenterna i t.ex. Mekatronik-delen. Vi är inte speciellt oroliga över att det kommer att gå dåligt, även om vi skulle föredragit att det funnits en fortsättningskurs i programmering (med objektorientering) på M-, EMM- och MI-programmen så att inte TDDE54 blir den enda kursen för dem som vill gå vidare med programmering. Det är vanligt att man har en fortsättningskurs om man jämför med de andra programmen, men ... [Kommentar: Det är inte meningen att man skall bli programmerare efter första kursen, men det är bra att man har början till det som man behöver i efterföljande kurser och att det lätt går att "hoppa in" i nya språk senare.]
      • [Fortsättning från förra punkten.] ... det finns möjlighet att läsa fortsättningskurser för er också (valbara kurser). Det finns t.ex. TDDE10 (objektorientering i Java), TDDE18 (C++, inklusive objektorientering), ... Det är alltså inte omöjligt att få det man behöver för att gå vidare och bli riktig duktig i detta. Det finns också kurser som tar upp datastrukturer och algoritmer som bygger vidare på dessa kurser. Själklart finns det mer om man vill gå mer åt detta håll, men vi tar inte detta här.
    • Den avancerade kursen i C++ (TDDD38) som många program kan läsa.
      • Denna kurs bygger på att man behöver ha läst programmering innan. Man bör också ha gått en objektorienteringskurs (i t.ex. Java, C++, ...).
      • Denna kurs läses av t.ex. DI, I, D, U, Y, ... (många program). Det är olika förkunskaper och olika programspråk som uppstart och fortsättning innan de kommer till TDDD38.
      • Enligt den lärare som just nu håller TDDD38 verkar det som att de som kommer Ada-vägen (oavsett vilken väg de gått efter, som t.ex. Java, C++) har det mer förspänt än de andra (som grupp, inte som enskilda studenter, förstås) och klarar bra att förstå de koncept som är lite bökigare.

Hur tänker man när man kan programmera redan

Det som är vanligt bland dem som arbetar med programmering är att de glömmer bort att det finns underliggande saker när man lär sig programmeringen som de själva redan har eller tillskansat sig genom den tid de lärt sig. Det är lätt att glömma att man satt fast och att man inte förstod vad man höll på med. Vi vill inte klanka på hur man tänker eller så, men då vi sett hur det fungerat för studenter under så lång tid och vad det leder till när man missar grunderna så blir det tyvärr så att vi inte kan hålla med dem som säger att man t.ex. skall börja med Python, C++, Java eller annat.

Vi vill inte med ovanstående "slå" på någon annan lärare, programmerare, eller annat. Det är endast vår vy av vad som är bra för att kunna bli en bra programmerare. Det blir man inte efter bara en förstakurs är viktigt att veta också.

Vad brukar tankarna vara hos er studenter?

Vi brukar dra en jämförelse mellan t.ex. Ada och C++ där C++ är en motorsåg och Ada är en vanlig såg. Det är oftast bra att lära sig att såga med något som inte ställer till det för mycket (även om inte C++ kan göra att man sågar av sig armar och ben). Lite samma tema är att säga att man tar Python och liknar detta vid att man stoppar in något som skall sågas i en maskin och sen får man ut saker färdigsågade. Man ser inte vad som finns under huven.

Den erfarenhet vi har av detta med Ada som förstaspråk är att studenterna gärna letar efter anledningar till att tycka att det är illa att vi använder Ada då det är "dött" eller "inte används". Inget klagomål på er dock då vi har full förståelse för att man tänker så. Det är dock så att de fortsättningskurser vi har går mycket bättre än det gör annars som vi ser det.

Vi brukar också få responsen att man "lär sig massor" och att man tycker att det var super att man lärde sig det på vårt sätt när man sen kommit upp högre i utbildningen. Vår kurs är inte bara en kurs i att lära sig ett "språk" utan det handlar om så mycket mer som man inte ser förrän senare tyvärr.

Det är ofta kommentarer som säger "för lite 'hp' för den tid man lägger" eller liknande. Detta beror till största delen på att man lägger in andra saker som "frustration" och "stress" och att man kanske redan tidigare än vid tentan kommer på att man har en del att göra för att bli klar (eller att man kanske inte kommer att hinna klart).

Självklart kan detta bero på en massa saker, men det är viktigt att förstå att det tar tid att lära sig ett nytt tankesätt. Det är frustrerande att få kompileringsfel, kompletteringar och framförallt att "sitta fast" för att man inte kommer på en lösning (eller kanske inte har teorin för det som behövs i visa fall). Stressen infaller förstås när man börjar känna att man är efter eller inte hinner klart.

Det man kan säga som gör det lite bättre är att ni kan få delpoäng i LADOK för olika delar och att det går att fortsätta där man var nästa gång kursen går, men det gör förstås inte känslan mindre. Vi tänker dock på allt detta för att det skall bli så bra det går både för er som går första gången i kursen och även de som kommer tillbaka för att göra klart.

Viktigt att veta är att vi har massor med statistik både från tidigare år och även i år som ger oss en väldigt bra bild av hur mycket tid ni lägger ner. Detta har vi samlat in både via inlämningar i våra system och via frågor till studenter om hur mycket tid de lagt ner (vi har också lagt på extra tid för det som inte direkt syns förstås).

Statistiken visar att den tid som ni lägger ner på denna kurs (borträknat frustration och stress som ju är upplevelser) är i storleksordningen 100-160 timmar. Detta skall då jämföras med det som står i Evaliuate (1.5 hp motsvarar 40 timmar). De timmar som läggs ner ligger alltså i storleksordningen att kursen skall ge 6hp. Vi hoppas att ni ser att detta är rimligt. [Kommentar: Räkna på detta på alla era kurser framöver så kommer ni att bli förvånade tror vi.]

Avslutning på detta: Det tar tid att lära sig något nytt. Speciellt är det tungt att lära sig ett "nytt tänk". Det som är viktigt är att man lär sig saker som gör att man senare kommer vidare på ett bra sätt.

En jämförelse mellan kursvärderingar när man precis går kursen och när man tittar tillbaka

Som avslutning kan vi säga att vi har en intressant "kursvärdering" som gjordes i våras av ett program (eller deras "nämnd"). Den gjordes i årskurs 3 på våren och gällde att studenterna skulle värdera alla kurser de gått en gång till (lite mer summariskt förstås än den som är i Evaliuate). Detta var ett program där det inte var huvudfokus på programmering kan också sägas, men detta är vanligt att vi hör från studenter som gått våra kurser på i princip alla program.

I den utvärderingen var det så att 3 av 4 kurser som hamnade över 4 som betyg var våra tre programmeringskurser (inklusive Ada-kursen). Dessa studenter hade givit oss ca 2.5 i kursvärdering när de gick Ada-kursen. Med största motiveringarna att det var "tungt" och att "Ada var dött".

Vi hoppas att ni hjälper oss att sprida att vi nog faktiskt har koll på vad vi gör och att vi kan få upp en förståelse för att vägen till målet är viktigare än att hasta in i saker som man inte har nytta av senare.

Vi hoppas också att ni ser att vi inte gör detta för att vi "tycker att Ada är bästa språket" (det finns inget bästa språk utan det är olika vad man skall ha det till). Dock ser vi att Ada som första programspråk är super. Det ger de koncept som man behöver.

Varför får ni inte kod som visar hur det går till IRL ("in real life")?

Detta är en fråga som har flera svar också. Ett av dem är att detta inte är en kurs där vi skall nå fram till att ni skall bli programmerare, men det är förstås inte anledningen. En annan sak är att denna kurs fokuserar på saker som att man skall följa specifikationer, lösa det problem som efterfrågas, skriva tydlig och "bra" programkod, att problemlösa (i liten skala) och att samarbeta/diskutera mycket för att få olika vyer på hur man tänker och löser olika saker. Förstås ingår också verktyget "programspråket" för att kunna utföra detta.

I vissa av våra kurser har vi "miniprojekt" (t.ex. TDDD67 som går för I-programmet) eller så har vi fortsättningskurser som tar upp de delar som har med mer "professionell" programmering att göra. Detta gör att vi inte skall ta upp dessa delar.

Den allra största anledningen är dock att det ni får i denna kurs är en bra start för att gå vidare till andra programspråk och att kunna lösa saker där utan att fastna på saker som "vad är en loop?" eller "hur delar man upp program i mindre delar?" eller "hur lagrar jag data?". Allt detta kan ni efter denna kurs, men det ni har kvar är att byta "orden" som gör detta. Kanske det heter "print" i ett språk eller "cout" eller "Put". Det är ändå samma sak vi pratar om.

Det handlar alltså om att vi vill ge er grunden till något som gör att ni senare kan klara av era kurser i statistik, programmering, hållfasthetslära eller CAD. Det finns många ställen där ni kommer att stöta på programmering även om det är i liten skala. Hoppas att ni känner att detta kommer att gå bra senare.

Självklart skulle man kunna "visa" stora exempel för att ge en bild av hur det går till på riktigt. Det vi dock inte vill visa hur det går till "på riktigt" då detta antagligen inte är så snygg kod som det borde. :-) Ofta beroende på att man i "industrin" har deadlines och inte hinner göra det perfekt i alla lägen. Vi vill ge er en bild av saker så att ni kan värdera kod som ni kanske "hittar" på nätet eller för att kunna slippa göra galna saker eller kanske för att kunna förstå andras programkod.

Att visa en stor mängd kod ger dessutom en ny dimension som inte alla är redo för att se när man är nybörjare. Det kan bli för mycket. Det vi istället gjort är att ha små exempel som visar på "bra och dålig kod" på hemsidan. Det finns sen många olika tankar på vad som är bra och dåligt så det kräver mycket erfarenhet för att kunna bedöma detta. Hoppas ni fått en liten "tjuvkik" på detta i vår kurs.

Tänk bara på att det är bättre för att lära sig saker att ha diskussioner och att man provar sig fram. Det är absolut inte så att man lär sig att skapa lösningar genom att få facit även om det är bra att få vägledning och se bra varianter också.

En sista kommentar: Om vi skulle ge den "bästa lösningen", d.v.s. det som kanske i vissa fall är målet, skulle ni inte få chansen att tänka själva. Detta leder till att ni inte kan diskutera alla olika lösningar som ni studenter (som grupp) kommit på. Detta gör att ni missar den stora delen med programmeringen. Det handlar inte om att återskapa hjulet (de problem som är så fixar man via standardlösningar) utan att vara beredd på att bygga den där nya bron som inte finns ännu. Det är det som kallas "ingenjörskonst". Det är detta man behöver IRL.

Vad frågades om i mailet i början av detta svar då?

  1. Varför Ada? Vi hoppas att detta är besvarat ovan. När ni kommer till andra språk för att lösa problem kommer ni med största sannolikhet tycka att det är förhållandevis lätt att gå över till dessa språk och kunna applicera de kunskaper ni har på ett bra sätt.
  2. Är det slöseri med tid att gå via Ada? Även detta visar vi på att det till och med är tidsbesparande i det långa loppet. OBS! Det är inte språket vi är ute efter i denna kurs. Det är tankar, problemlösning, och en massa annat som vi på ett lätt sätt kan visa på med hjälp av verktyget/språket Ada.
  3. Varför visar vi inte kodexempel på hur man kan skriva kod IRL? Detta är något som vi hoppas att ni fått svar på ovan också. Förhoppningsvis kommer ni att kunna "värdera" programkod utifrån aspekter som läsbarhet och mycket annat när ni senare behöver det.

Hoppas att du fått en del förståelse över de val vi gjort och att detta är något som du senare kommer att känna att du kan hålla med om. Vi har alltid er studenter i fokus och det hoppas vi att ni känner.


Sidansvarig: Torbjörn Jonsson
Senast uppdaterad: 2023-08-23