Obligatoriska kurser
I tabellen nedan visas en översikt över obligatoriska kurser för Datavetenskapligt kandidatprogram.
Du får 15 hp per studieperiod och 15 hp för ditt kandidatarbete. Kurser i fetstil ges två gånger per år, och du kan välja vid vilket tillfälle du vill läsa respektive kurs.
Det språk kursnamnet är angivet på indikerar vilket språk kursen ges på.
Du hittar mer information om respektive kurs under tabellen.
År 1 |
|||
---|---|---|---|
Studieperiod |
Studieperiod |
Studieperiod |
Studieperiod |
Diskret matematik för datavetare |
Grundläggande datorteknik |
Linjär algebra |
Matematisk analys |
Introduktion till |
Imperativ programmering med |
Objektorienterad programmering |
Datastrukturer |
År 2 |
|||
---|---|---|---|
Studieperiod |
Studieperiod |
Studieperiod |
Studieperiod |
Principer för parallell |
Testning, |
Principer för parallell |
Communicating |
Matematisk modellering |
Valfri |
Finite automata |
Valfri |
År 3 |
|||
---|---|---|---|
Studieperiod |
Studieperiod |
Studieperiod |
Studieperiod |
Valfri |
Valfri |
Kandidatarbete |
Kandidatarbete |
Valfri |
Valfri |
Valfri |
Valfri |
Diskret matematik för datavetare (DIT984)
Kursen ger grundläggande kunskaper om diskreta matematiska strukturer som behövs som förkunskapskrav för fortsatta högskolestudieri datavetenskap och datorteknik. I kursen understryks matematikens viktiga roll inom studentens framtida studier och inom data-området som helhet.
Kursen ger också en konkret bild och framåtblick av såväl de stora klassiska grundläggande frågor inom datavetenskapen (t.ex. Halting problemet, P vs. NP), som de stora aktuella utmaningarna inom dataområdet (t.ex. "big data", multi-core revolutionen), och vilken roll matematiken spelar i dessa frågor.
Grundläggande datorteknik (DIT792)
Dagens tekniska system innehåller ofta någon form av digitalt elektroniskt system. Vanligen är det ett datorsystem med en eller flera mikroprocessorer kombinerade med minnen och andra digitala delsystem för exempelvis övervakning, styrning och annan kommunikation. Förståelse för digitala systems roll och arbetssätt är viktig för studenter inom flera områden.
Kursen är inledande och behandlar primärt underliggande fundamenta för digitala system i allmänhet och processorn/datorn i synnerhet.
Den ger en grund för fortsatta studier inom det datatekniska området eller närliggande områden där digitala system används i tillämpningar.
Till detta skall kursen också ge en helhetsbild av hur datavetare har nytta av kunskaper i området digital- och datorteknik.
Linjär algebra (MMGD20)
Kursen behandlar grundläggande begrepp inom linjär algebra. Linjära ekvationer och system förekommer i alla linjära modeller inom naturvetenskap, teknik och ekonomi (numeriska ekvationer, differentialekvationer, etc). Linjär algebra ger en samlad kraftfull formalism för alla sådana ekvationer.
Matematisk analys (MMGD30)
Tillsammans med övriga matematikkurser i programmet ger kursen en generell matematisk grund som är användbar både i dina fortsatta studier och i yrkeslivet. Kursen behandlar envariabelanalys, komplexa tal och differentialekvationer.
Introduktion till funktionell programmering (DIT441)
Kursen är en introduktionskurs i funktionell programmering, med Haskell som undervisningsspråk. Det primära målet är att studenterna ska lära sig att skriva realistiska (små) program för verkliga applikationer, och att samtidigt introducera några av de grundläggande begreppen i datavetenskap. Sekundära mål är att ge vägledning om kommande kurser (särskilt datastrukturer, algoritmer, digitala kretsar, formella metoder och programmeringskurser) och att, med hjälp av inbjudna talare, ge en inblick i karriärmöjligheterna inom data.
Imperativ programmering med grundläggande objektorientering (DIT013)
Kursens behandlar imperativ programmering och algoritmer i ett objektorienterat programmeringsspråk. I den första delen av kursen presenteras imperativa tekniker och koncept: programmering med tillstånd. I kursens andra del ges en kort introduktion till den objektorienterade omgivningen. Kursen tar dessutom upp arbetssätt, idiom, grundläggande kvalitetsaspekter samt testning och felsökning.
Objektorienterad programmering och design (DIT954)
Kursen presenterar det objektorinterade programmeringsparadigmet och lägger stor vikt vid programkonstruktion (design) och testning. För att beskriva designen används elementära delar av the Unified Modelling Language (UML).
Data Structures (DIT962)
The course studies common abstract data types; data structures such as arrays, lists, trees, hash tables and how these can be used to implement abstract data types such as stacks, queues, priority queues, dictionaries and graphs; standard algorithms for these data structures and their resource demands,focusing both on object-oriented and functional languages; sorting algorithms; and standard libraries for data structures and algorithms.
Principles of Concurrent Programming (DIT392)
(Kursen kan läsas antingen under studieperiod 1 eller 3.)
Concurrent and parallel programming has become ubiquitous in modern software and systems, where concurrency is leveraged to exploit physical parallelism and speed up computations, to provide interactive multi-tasking, and to handle interaction with asynchronous external events. This course aims to provide an introduction to the principles underlying concurrent systems, as well as to practical programming solutions for modeling and exploiting concurrency in programs. Domains where such principles and practices are relevant include operating systems, distributed systems, real-time systems, and multicore architectures.
Mathematical modelling and problem solving (DIT993)
Matematiska modeller används inom vetenskap och ingenjörskonst för att beskriva och representera olika objekt och system, för att analysera, förstå och förutsäga, och för att hitta den bästa designen eller strategin. Matematisk modellering är därför en grundläggande teknisk kunskap. Med noggrant utvalda övningar lär denna kurs ut matematisk modellering som ett verktyg för att lösa verkliga problem. Problemen tas från databehandling och traditionella tekniska discipliner, liksom från andra områden, t.ex. ekonomi, medicin och spel. Kursen är främst avsedd som en introduktion till matematisk modellering för studenter med begränsad erfarenhet av användning av matematik i teknik, men som kan komma att arbeta inom olika områden där kunskaper i matematik är användbara. Med tillämpningsorienterade övningar och genom att undervisa i modellering och problemlösning, överbryggar kursen klyftan mellan de teoretiska kurserna i matematik och relevanta tillämpningar.
Testing, debugging and verificaton (DIT084)
The main aim of the course is to provide a basic understanding of techniques that cope with errors in programs. Recurring themes are a) the identification of errors, b) their analysis, and c) their removal. The course also provides an understanding of systematic ways of convincing oneself that a program unit really does what it should. After the course, students should have understood –and be able to employ– the methods testing (trying to reveal the presence of errors in a systematic way), debugging (the act of isolating and fixing errors), and verification (reasoning about programs in order to guarantee correctness). All these methods only make sence in the the presence of a specification of what the program is supposed to do. In the course students will also learn how to use precise methods for writing requirements.
Finite automata and formal languages (DIT323)
The course presents both the theory of finite automata, pushdown automata and a short introduction to Turing machines. Finite automata (and regular expressions) are one of simplest model of computations, and they are widely used in applications such as traffic light, lexical analysis, pattern search algorithm, etc. Pushdown automata are finite automata with stacks. The theory is more complex, but has important applications in parsing and analysis of context-free languages. Turing machines were described in 1937 and they are a powerful model of computation since they help computer scientists understand the limits of mechanical computation by providing a precise definition of an ’algorithm’ or ’mechanical procedure’.
Communicating Computer Science (DIT195)
The algorithms course revolves around three central questions that appears naturally when one wants to use a computer to solve a problem: Is the problem computationally solvable at all? How can we do it? How fast can the solution be? The course provides basic knowledge and methods to answer these types of question as precisely as possible, and improve the ability to write fast and well-founded programs. Other important aspects are: to improve the intuitive sense of time complexity of problems and algorithms in general, to show how the choice of data structures can influence speed of a program, and how data structures must be adapted to algorithms. The most important goal of the course is though to give general principles of creating good algorithms for new problems for which you cannot find any published algorithm.
Kandidatarbete (DIT561)
Under kursen skall studenten undersöka ett akademiskt intressant problem inom ämnesområdet datavetenskap. I kandidatarbetet ska studenten integrera, fördjupa och utveckla sina kunskaper och färdigheter inom ett begränsat område av det som behandlats inom tidigare genomförda kurser inom programmet. Studenten kommer att utföra en större datavetenskaplig projekt, tillämpad eller teoretisk, i en grupp om normalt 4-6 studenter, under överseende av en handledare. Studenten dokumenterar denna utredning i en uppsats som beskriver problemet, antaganden, metoder, val, resultat, utvärdering av arbetet, inklusive jämförelse med aktuella arbetet utanför projekten.