Översikt
Första kursveckan och för dig som ny webbprogrammerarstudent är säkert mycket nytt. Denna vecka ligger fokus på att sätta ramarna för kursen samt introducera de första begreppen. Du kommer inte att skriva jättemycket kod denna veckan utan snarare möta begrepp och några av de verktyg du kommer att arbeta med under kursen; applikationsmiljön Node.js och utvecklingsmiljön Visual Studio Code.
Viktigt är att du redan nu har läst igenom kursens studieguide och tittat på inspelningen här.
Kursintroduktion
Section titled “Kursintroduktion”Kursintroduktionen syftar till att presentera kursen och sätta in den i ett större sammanhang. Kursintroduktionen genomförs på distans via Zoom. Om du missar introduktionen kan du se förra årets inspelning nedan.
Vad är kursintroduktionen?
Section titled “Vad är kursintroduktionen?”Kursintroduktionen är en mer samtalsartad, muntlig genomgång av samma information som finns i studieguiden — men här hinner kursledningen resonera friare kring varför saker är upplagda som de är. Introduktionen hålls live via Zoom vid kursstart (campusstudenter sitter i sal, distansstudenter följer sändningen). Har du missat den kan du se en tidigare årgångs inspelning istället.
Varför JavaScript?
Section titled “Varför JavaScript?”Oavsett vilket programspråk man börjar med (Pascal, Basic, Python, C#, Java …) återfinns samma grundläggande byggstenar: sekvenser, selektioner och iterationer. JavaScript väljs i den här kursen för att det är webbens eget språk, och för att hela den påföljande kurskedjan (1DV026, 1DV027, 1DV502, 1DV613 m.fl.) förutsätter godkänt resultat i 1DV025 — kursen lägger alltså en grund som efterföljande kurser bygger vidare på.
Generativ AI i kursen
Section titled “Generativ AI i kursen”I 1DV025 är det fritt fram att använda generativ AI, till skillnad från vissa andra kurser där regler kan se annorlunda ut — ta reda på vad som gäller i respektive kurs. Det som avgör om det går bra eller illa är hur verktyget används: som en pedagogisk assistent man bollar frågor med för att faktiskt förstå stoffet fungerar utmärkt, medan att låta AI:n generera kompletta lösningar utan egen förståelse har historiskt lett till att studenter inte klarat kursen. Ju bättre man redan kan ett område, desto mer tid sparar AI:n — är man osäker på grunderna riskerar man istället att bli förd bakom ljuset av plausibla men felaktiga svar.
JavaScripts ursprung
Section titled “JavaScripts ursprung”Språket skapades i maj 1995, under arbetsnamnet Mocha och sedan LiveScript, innan det av marknadsföringsskäl döptes om till JavaScript (Java var det stora buzzwordet just då — språken har i övrigt inget särskilt släktskap). JavaScript implementerar standarden ECMAScript, som sedan 2015 (ES6) uppdateras med nya tillägg varje juni.
Kursens webbplats
Section titled “Kursens webbplats”Webbplatsen är helt statisk (ingen dynamik, alltså en mindre attackyta) och navet för all kursinformation: studieguide, veckoanvisningar, examinationsuppgifter och samlingar. Varje kursveckas översikt fälls ut när veckan är aktuell och komprimeras igen efteråt, så att den webbplatsen alltid visar vad som gäller just nu.
Kursvecka 1 i praktiken
Section titled “Kursvecka 1 i praktiken”Den här veckan installerar du Node.js — helst den version som benämns current snarare än LTS, eftersom du då får med de senaste tilläggen till språket. Räkna med att lägga tid på läsanvisningarna (ungefär 67 sidor denna vecka) och på de stödjande inspelningarna.
Aktivitetskontroll och examination
Section titled “Aktivitetskontroll och examination”Vecka 3 sker en aktivitetskontroll: har du gjort den första övningsuppgiften eller checkat in kod via Git räknas du som aktiv. Varje delkurs har tre provmoment (test, inlämning, samt inlämning med efterföljande muntlig examination) som rapporteras in löpande — du behöver alltså inte vänta till kursens slut för att få poäng.
Utrustning
Section titled “Utrustning”Operativsystem spelar ingen roll — kursens verktyg är valda för att fungera på Windows, macOS och Linux. Är du osäker på vilken hårdvara som räcker till är äldre kursdeltagare ofta en bättre källa än kursledningen, som inte har någon fullständig bild av vad framtida kursmoment (bland annat Docker/containers senare i utbildningen) kräver.
Stödjande inspelningar
Section titled “Stödjande inspelningar”Kurslitteraturen är en av de delar som driver kursen framåt, men det kan vara svårt att själv strukturera upp innehållet. Vad är relevant? Vad bör du fokusera på i kursen? De stödjande inspelningarna tas fram av kursledningen för att just ge detta sammanhang. Det är av yttersta vikt att du tar del av dessa!
Typer, värden, uttryck och operatorer
Section titled “Typer, värden, uttryck och operatorer”Nu är det dags att titta på vad som döljer sig bakom uttryck så som typer, värden, uttryck och operatorer.
Allt är ettor och nollor
Section titled “Allt är ettor och nollor”All data i en dator lagras binärt – som en lång ström av ettor och nollor. För att ge den strömmen mening delas den in i värden av olika typer. Textsträngen 'Hej hopp!' lagras exempelvis som ASCII-värden (72, 101, 106 …) vilka i sin tur är binära tal.
Datatyper i JavaScript
Section titled “Datatyper i JavaScript”JavaScript är ett löst typat språk, men det saknar inte typer. Det finns åtta typer totalt: sju primitiva och en objekttyp.
Primitiva typer: Number, String, Boolean, Undefined, Null, BigInt och Symbol.
Objekttypen: Object – en osorterad samling av namn/värde-par. Arrayer och Date är exempel på inbyggda objekttyper baserade på Object.
De typer man möter mest i början är Number, String och Boolean. Operatorn typeof avslöjar vilken typ ett värde har – men den har ett känt undantag: typeof null returnerar 'object' trots att null är ett primitivt värde. Det är en bugg som funnits sedan språkets tillkomst och som aldrig rättats av hänsyn till bakåtkompatibilitet.
Number
Section titled “Number”Alla tal lagras som 64-bitars flyttal enligt IEEE 754-standarden, vilket ger drygt 18 triljoner möjliga värden. Tal kan uttryckas som heltal, decimaltal eller på exponentiell form. Från och med ES2021 kan understreck användas som tusentalsavgränsare: 1_000_000.
Aritmetiska operatorer fungerar som i vanlig matematik, inklusive prioritetsordning – multiplikation går före addition, och parenteser har högst prioritet. Modulusoperatorn (%) ger resten vid division och är användbar för att avgöra om ett tal är jämnt eller udda.
Decimaltal kan inte alltid representeras exakt i binärt format, vilket kan ge oväntade resultat – exempelvis är 0.1 + 0.2 !== 0.3 i JavaScript. Värt att hålla i minnet vid beräkningar.
Tre specialvärden finns: Infinity, -Infinity och NaN (Not-A-Number). Det sistnämnda är “giftigt”: ingår NaN i en beräkning blir hela resultatet NaN. Kontrollera alltid indata noga för att undvika att NaN sprider sig i uträkningar.
String
Section titled “String”Strängar används för att representera text och kan skrivas inom apostrofer, citattecken eller grav accent (backticks). I den här kursen gäller apostrofer – kursens kodstandard förbjuder citattecken.
Strängar kan läggas ihop med + (konkatenering). Escape-sekvensen \n infogar en radbrytning i strängen.
Boolean
Section titled “Boolean”Booleska värden har bara två möjliga värden: true eller false. De uppstår ofta som resultat av jämförelser. Använd alltid strikt jämförelse med tre likhetstecken (===) – aldrig ==, som tillåter automatisk typkonvertering och kan ge oväntade resultat.
Logiska operatorer kombinerar booleska värden: && (och), || (eller) och ! (icke).
Objekt
Section titled “Objekt”Allt som inte är ett primitivt värde är ett objekt. Ett objekt är en samling egenskaper där varje egenskap har ett namn och ett värde. Arrayer är en typ av objekt för ordnade samlingar – lämpligast när alla värden är av samma typ.
Uttryck och satser
Section titled “Uttryck och satser”Ett uttryck är kod som producerar ett värde. En sats är en komplett instruktion, uppbyggd av ett eller flera uttryck – ungefär som en mening består av ord. Satser tillsammans bildar ett program.
I kursen används inte semikolon efter satser – kodstandarden kräver att de utelämnas.
Läsanvisningar
Section titled “Läsanvisningar”Under läsanvisningar hittar du veckans kapitel som ska läsas i kurslitteraturen. Planera upp och dela upp läsningen under veckan. Dra nytta av inspelningarna ovan som ett komplement till litteraturen.
Guider
Section titled “Guider”Under veckan behöver du installera applikationsmiljön Node.js. Läs även studieguidens avsnitt om AI-assistenter för att komma igång med de verktyg du kommer att använda under kursen.
Seminarier + individuell handledning
Section titled “Seminarier + individuell handledning”Seminarier sker i Zoom och spelas in. Efterföljande individuell handledning i kursens Zulip-kanal.
Redan första veckan är det seminarier och handledningspass. Kanske har du inte något specifikt att fråga om, men det kan ändå vara bra att ta tillfället i akt så att du och kursledningen lär känna varandra lite bättre.
Seminarier inleder där kursledningen kan svara på frågor för hela gruppen och efter detta följer den individuella handledningen då det är möjligt att ställa frågor enskilt till en handledare. Kommer du på en fråga inför handledningen så posta den i formuläret nedan så tar kursledningen upp den på den gemensamma handledningen!
Studiefrågor
Section titled “Studiefrågor”Här är ett antal frågor som du kan försöka besvara och diskutera tillsammans med en AI-assistent. Tveka inte att lyfta någon av frågorna till handledningen för att fortsätta diskussionen med lärare och studiekamrater.
- Jag ska bli webbprogrammerare, vill du kort förklara innebörden av att vara programmerare inom frontend, backend och fullstack.
- Jag skall installera node, vad är det för typ av verktyg?
- Vill du kort förklara historik och bakgrund kring node?
- Vilken ställning har node idag?
- Vill du visa mig några enkla statements i JavaScript som jag kan köra i Node-terminalen?
- Är JavaScript ett viktigt språk när det kommer till webbteknologier?
Här är en utskrift från hur det kan se ut när frågorna ovan diskuterats med en AI-assistent.
Här följer tips till hur du kan prioritera bland kursmaterialet.
- Installera Node.js tidigt i veckan så du kan testa uttrycken i utmaningarna direkt i Node-terminalen medan du läser.
- Titta på de stödjande inspelningarna parallellt med läsningen — de sätter kurslitteraturen i sammanhang och hjälper dig prioritera vad som är viktigt.
- Titta gärna fram mot vecka 2 och installera VSCode och Git/GitLab redan nu så du ligger lite före i det praktiska arbetet.