DV1305 Programmering i UNIX-miljö
Programkurs, 7,5 högskolepoäng, Grundnivå, höstterminen 2014
Kursen är valbar inom programmet "Webbprogrammering", med start höstterminen 2012.
Information om anmälningsprocessen ges till studenter på programmet.
Information om anmälningsprocessen ges till studenter på programmet.
Översikt
Nuförtiden är det knappast någon programmerare som jobbar direkt mot datorns hårdvara (och så har faktiskt varit fallet de senaste 30 åren!). Istället jobbar programmeraren (och användaren) via någon form av programmeringsgränssnitt på hög nivå som, tillsammans med resursallokering och annan “administration” (book-keeping), utgör ett operativsystem.
Andra kurser lär ut operativsystemens “hur” och “varför”, och de lägger därmed grunden för denna kurs som i sin tur lär ut detaljerna i hur man designar mjukvara som interagerar med datorn via operativsystemet UNIX (och i förlängningen därmed även UNIX-baserade/liknande operativsystem såsom Linux och MacOS). Anledningen till att UNIX föredras är dess långa och framgångsrika historia. Många kommersiellt viktiga system byggs på UNIX, men det fungerar lika bra i egna fri- eller öppen-källkodsprojekt, operativsystemets källkod går att studera, programmeringsgränssnittet är storleksmässigt hanterbart och väl dokumenterat. Det passar lika bra i de största datorerna som i små inbyggda system. Dessutom är det populärt, och har ett stort antal anhängare.
Syftet med kursen blir således att studenten tillägnar sig en fördjupad förståelse för UNIX-baserade system och för operativsystemnära programmering. Detta innebär bland annat att utveckla förtrogenhet med att programmera operativsystemet på dess mest abstrakta nivå, närmast användaren och vidare nedåt genom abstraktionsnivåerna till den lägsta nivån, systemuppringing. Det här lägger grunden för vidare studier inom andra områden (till exempel datasäkerhet) som kräver konkret, inte abstrakt, förståelse för den underliggande teknologin. Syftet uppnås genom att studenten via en serie laborationer erhåller en försvarlig dos av programmeringserfarenhet.
Andra kurser lär ut operativsystemens “hur” och “varför”, och de lägger därmed grunden för denna kurs som i sin tur lär ut detaljerna i hur man designar mjukvara som interagerar med datorn via operativsystemet UNIX (och i förlängningen därmed även UNIX-baserade/liknande operativsystem såsom Linux och MacOS). Anledningen till att UNIX föredras är dess långa och framgångsrika historia. Många kommersiellt viktiga system byggs på UNIX, men det fungerar lika bra i egna fri- eller öppen-källkodsprojekt, operativsystemets källkod går att studera, programmeringsgränssnittet är storleksmässigt hanterbart och väl dokumenterat. Det passar lika bra i de största datorerna som i små inbyggda system. Dessutom är det populärt, och har ett stort antal anhängare.
Syftet med kursen blir således att studenten tillägnar sig en fördjupad förståelse för UNIX-baserade system och för operativsystemnära programmering. Detta innebär bland annat att utveckla förtrogenhet med att programmera operativsystemet på dess mest abstrakta nivå, närmast användaren och vidare nedåt genom abstraktionsnivåerna till den lägsta nivån, systemuppringing. Det här lägger grunden för vidare studier inom andra områden (till exempel datasäkerhet) som kräver konkret, inte abstrakt, förståelse för den underliggande teknologin. Syftet uppnås genom att studenten via en serie laborationer erhåller en försvarlig dos av programmeringserfarenhet.
Kurstid
2014 vecka 36 till
2014 vecka 44
2014 vecka 44
Undervisningsform
Campus, Dagtid, deltid 50 %
Ort
Karlskrona
Undervisningsspråk
Engelska
Kursplan
Huvudområde
Datavetenskap
Fördjupningsnivå
G2F
Antagning
Förkunskapskrav
Kursen har följande högskolekurser som förkunskapskrav: Godkända kurser: DV1204-Operativsystem och DV1124-Datastrukturer och algoritmer och DVC016-Lokala nätverk.Lärandemål
Innehåll
Kursen behandlar följande specifika abstraktionsnivåer av UNIX-programmeringen i mer detalj:- Kommandon och script-språk. Script-språk är ett sätt att automatisera det som normalt anses vara användarinteraktion, det vill säga att interaktivt ge datorn kommandon att till exempel ladda ner filer, sortera innehållet och skriva ut dem. På så vis är script-språk (exemplifierat med Bourne shell) mycket kraftfulla men också mindre användbara generellt, eftersom det kan vara svårt att uppnå precis det eftersträvade resultatet.
- Programutveckling i C. C är grundpelaren i programmering av UNIX-applikationer, där programmeraren använder vad som allmänt betraktas som ett programmeringsspråk och som, genom att utföra system- och biblioteksanrop till operativsystemet, implementerar nätverkstjänster och andra applikationer (till exempel en webbserver) som utforskar hela registret av de inneboende styrkorna och svagheterna i avancerad programmering.
- Programutveckling i assemblerspråk. Ibland är högnivåspråk såsom C inte tillräckligt uttrycksfulla eller bär på oönskad eller onödig funktionalitet, som kan påverka prestanda. Då kan det bli nödvändigt/viktig att kunna tala ”direkt” till datorn på dess egna språk, även om den främsta fördelen med att programmera ”maskinnära” i ärlighetens namn ligger i den erhållna fördjupade förståelse för vad som verkligen pågår.
Lärandemål
Alla kursens laborationer utförs i grupper om två personer. Efter avslutad kurs kommer studenten att:- kunna använda UNIX-kommandoradgränssnitt effektivt på egen hand
- individuellt kunna skriva program med hjälp av ett betydande antal av byggstenarna i UNIX totala programmeringsgränssnitt
- individuellt kunna avgöra vilken abstraktionsnivå på programmeringen som är mest lämplig för att lösa en viss uppgift.
- tillägna sig en förståelse för UNIX-systemets huvudsakliga delar och hur dessa delar hör ihop och jobbar för att köra ett program och utföra en uppgift.
- individuellt kunna utveckla program i C och assemblerspråk som kan köras i en UNIX-miljö.
Generella förmågor
I kursen tränas följande generella förmågor:- Förmåga att applicera kunskap i praktiken
- Praktisk grundkunskap om yrkesrollen
- Programmering inom det imperativa programmeringsparadigmet
- Problemlösning
- Förmåga att arbeta i team
- Kvalitetstänkande
Kurslitteratur och övriga läromedel
Advanced Programming in the UNIX Environment, 2nd ed.
Författare: Rago, Stephen & Stevens, Richard
Förlag: Addison-Wesley Professional, Utgiven: 2005, Antal sidor: 927
ISBN: 0201433079
Författare: Rago, Stephen & Stevens, Richard
Förlag: Addison-Wesley Professional, Utgiven: 2005, Antal sidor: 927
ISBN: 0201433079
Upplägg - Litteratur
Kurslitteratur och övriga läromedel
Advanced Programming in the UNIX Environment, 2nd ed.
Författare: Rago, Stephen & Stevens, Richard
Förlag: Addison-Wesley Professional, Utgiven: 2005, Antal sidor: 927
ISBN: 0201433079
Författare: Rago, Stephen & Stevens, Richard
Förlag: Addison-Wesley Professional, Utgiven: 2005, Antal sidor: 927
ISBN: 0201433079
Lärande och undervisning
Kursen är förlagd till campus. Utbildningen bygger på föreläsningar och laborationer, och innehåller en serie av föreläsningar och laborationer som tillsammans tjänar till att ge studenten en grundlig teoretisk förståelse och praktiskt erfarenhet i ämnet.Den tillägnade kunskapen sätts på prov och fördjupas ytterligare genom inlämning av laborationsövningar där ämnesrelaterade problem ska lösas via implementation i aktuellt system. Laborationerna måste utföras i grupper om två. Varje laboration presenteras skriftligen och examineras muntligt av varje medlem i grupperna. Kursen använder BTH:s lärplattform där kursmaterial och information publiceras. Här bedrivs även studentdiskussioner, inlämning av uppgifter och återkoppling.
Arbetslivsanknytning
Större laborationsuppgifter.Lärare
ExaminatorCharlie Svahnberg
Kursansvarig
Charlie Svahnberg
Lärare
Charlie Svahnberg
Planerade lärtillfällen
Föreläsningar, laborationer och examination.Tidsåtgång
I genomsnitt bör en student räkna med att studera 200 timmar för att nå lärandemålen. I denna tid ingår alla olika förekommande lärandeaktiviteter (föreläsningar, självstudier, examination m. m.). Tidsuppskattningen baseras på att ett akademiskt år omfattar 60 högskolepoäng (motsvarar 60 ECTS credits), som svarar mot en total studietid på ca 1 600 timmar. Den faktiska studietiden varierar individuellt.Examination
Bedömning
Examinationsmoment för kursen
| Kod | Benämning | Högskolepoäng | Betyg |
|---|---|---|---|
| 0710 | Shellscript-programmering | 2,5 | U/G/VG |
| 0720 | UNIX-programmering i C | 2,5 | U/G/VG |
| 0730 | Assemblerprogrammering | 2,5 | U/G/VG |
Betyg
Kursen bedöms med betygen Underkänd, Godkänd eller Väl godkänd.Vid begäran ges även betyg enligt ECTS.
Kommande tentamenstillfällen
Inga kommande centralt samordnade tentamenstillfällen hittades för denna kurs.
För att få delta vid ett centralt samordnat tentamenstillfälle måste du ha anmält dig i Studentportalen senast 15 dagar innan tentamensdagen.
Lokal och tidpunkt publiceras ca 5 dagar innan tentamensdagen.
Det kan finnas andra planerade examinationstillfällen. Information om de finns i It's Learning eller på annan plats som kursansvarig hänvisar till.
Kursutvärdering
Kursansvarig ansvarar för att studenternas synpunkter på kursen systematiskt och regelbundet inhämtas och att resultaten av utvärderingar i olika former påverkar kursens utformning och utveckling.







