Programmeringsteknik I HT18 Lärare: Johan Öfverstedt (johan.ofverstedt@it.uu.se, rum 2144) och ett stort antal labbhandledare
Föreläsning 1: Intro till kursen Registrering och avregistrering Undervisningsformer: Lektioner/laborationer och föreläsningar Kursens hemsida: www.it.uu.se/edu/course/homepage/prog1/ht18/ Här finns allt material ni kommer behöva under kursens gång.
Kurshemsidan Schema, lektioner (med material och anvisningar), föreläsningsanteckningar, minilektioner. Allt återfinns här. Kursböcker: Se literaturlänk på kurssidan. Det går bra att klara sig utan bok.
Varför lära sig programmering? Programmering återfinns överallt i samhället idag. Fler och fler saker använder sig av mjukvara (datorprogram) av något slag som måste programmeras för att fungera som de ska: Bilar, tv, telefoner, kassasystem, banksystem, spel, musikinstrument, Segway, flygplan, bussar, smarta glödlampor, microvågsugnar, larmsystem, drönare, kameror, medicinsk utrustning, GPS, kartsystem, AirBNB, betalsystem, robotar, självkörande bilar, osv. Matematiska bevis baserade på t.ex. fallstudier med för många fall för en människa. Lösning av ekvationer (t.e.x. PDE utan analytisk lösning), lösning av optimeringsproblem.
Exempel: Självkörande bilar https://www.flickr.com/photos/jurvetson/8190954243/in/photostream
Varför lära sig programmering? Oavsett om man är praktiskt eller teoretiskt lagd så har man nytta och glädje av att behärska programmering. Det är mycket bra för en framtid på arbetsmarknaden och för förmåga att genomföra projekt med beräkningar/statistic, samt bedriva forskning. Det är roligt!
Vad ska man kunna vid kursens slut? Formell kursplan Mål: Efter godkänd kurs ska studenten kunna Redogöra för de grundläggande begreppen klass, objekt, inkapsling och därtill hörande underbegrepp. Analysera problem och designa lösningar genom att använda ovanstående begrepp.
Kursplan fortsättning Använda programmeringsspråket Java genom att Förklara vad ett givet program utför Skriva och använda klasser som innehåller instansvariabler, metoder och konstruktorer Skriva program med flera samverkande klasser Använda en programutvecklingsmiljö Testa och felsöka program
Hur lär man sig då programmering? De praktiska lektionerna är mycket viktiga. Det är när man skriver och läser kod som man lär sig bäst. Se till att öva på att läsa kod och förstå vad den gör. Föreläsningarna kompletterar det praktiska och utökar med teori. (Som är viktig bade för att klara de senare uppgifterna men speciellt för den skriftliga tentamen)
Lektionerna Man får samarbeta, hjälpas åt, diskutera kod och lösningar MEN alla måste skriva och förstå sin egen kod. Forskning visar att det är centralt för resultatet att man skriver sin egen kod, händer på tangentbordet. Ni är också välkomna att ställa frågor om lektionerna och teoretiska funderingar, men assistenterna kommer inte att lägga mycket tid på att upprepa materialet som har avhandlats på föreläsningarna.
Lektionerna på egen dator Lektionerna går att genomföra antingen på institutionens Linuxdatorer (I 2510, 2507, 2516) eller på egen dator. Om man vill jobba på sin egna dator (vilket vi uppmuntrar till) behöver man installera programmeringsmiljön DrJava. Länk återfinns på kurshemsidan. Man kan i prinicp jobba på distans med lektionerna på sin egen dator och bara komma och redovisa de obligatoriska lektionerna. (Obs, man får inte redovisa alla uppgifter på en gång. Vi kommer prioritera den aktuella lektionen enligt kursens gång.)
Examination 5 obligatoriska lektioner som ska redovisas. (3hp) U eller G. Skriftlig tentamen (2hp) U, 3, 4, 5. Den skriftliga tentamen avgör betyget (förutsatt att de obligatoriska uppgifterna är godkända) Tentamen är tvådelad: Del A för betyg 3, som är obligatorisk för alla och Del B för betyg 4 och 5. Del B rättas bara om del A är godkänd. Tentamen innebär att skriva kod med penna på papper. Det enda hjälpmedlet: http://www.it.uu.se/edu/course/homepage/prog1/documents/javareference.pdf
Lektionerna Redovisas muntiligt vid dator för lärare/assistant senast vid det labtillfälle som är angivet på kurssidan. Vid redovisningarna kan ges individuella frågor och extrauppgifter. Resultat bokförs i portalens framsteg, vanligtvis, nu vid övergång till Ladok är det osäkert hur det kommer fungera. Du måste legitimera dig vid redovisningen. Skriv gärna upp namnet på den du redovisat för det är lättare att reda ut om någon bokföring missas. Inga redovisningar efter kursens slut. (Möjligtvis ett uppsamlingstillfälle där man kan redovisa en eller max två uppgifter.)
Handledning Handledarnas uppgift är inte att hitta felen i era program utan att hjälpa er att lära er att hitta felen själva. Handledarna kommer för de mesta att ställa frågor om er kod, för att få er att reflektera över programmet. Om ni verkligen kör fast kan ni givetvis få mer hjälp.
Programmeringsspråket Java Vad är ett programmeringsspråk? Det är ett formellt språk (till skillnad mot naturligt språk e.g. svenska, englska) som beskriver någon form av beräkning eller beräkningsproblem. Vissa språk är deklarativa (beskriv vad du vill ha), funktionella (ställ upp en matematisk funktion för vad du vill beräkna), medan andra är imperativa (beskriv hur beräkningen ska gå till). Språket Java som behandlas I den här kursen är imperativt, och objekt-orienterat.
Programmeringsspråket Java Imperativa språk (som Java) utför satser (kommandon) som har effekter på datorns minne, skriver ur någonting på skärmen, eller ritar ut en bild, eller skickar e-post. Datorns huvudkomponenter (processor, primär/ram-minne, hårddisk/lagringsutrymme, nätverkskort) kan kontrolleras av den programkod man skriver.
Exempel Koden: System.out.println( 42 ); Skriver ut strängen 42 på skärmen. Deklarera en heltalsvariabel x och ge den initialvärdet int x = 21; x = x * 2; System.out.println( + x); Skriver också ut strängen 42 på skärmen.
Språkets beståndsdelar Ett program består av satser (som vanligtvis avslutas med semikolon): print( 42 ); Och uttryck: 4 + 32 * x Och deklarationer: int x = 42; Och mer som vi ska se framöver.