- Are you interested in solving complex problems using computer technology?
- Do you want to understand how machine learning and language technology work?
- Would you like to work with people in a variety of professions?
- Do you want to tackle diverse projects under the guidance of Iceland's leading computer scientists?
- Do you enjoy programming and designing?
- Do you want a diverse selection of courses that suit your interests?
- Do you want to open up future opportunities in challenging careers?
The programme aims to provide you with a solid foundation in the fundamentals of computer science. You will learn to understand data structures, algorithms, programming languages, networks and databases. You will learn to develop and manage efficient and reliable software.
After completing the programme, you will be well prepared for various careers. You will have a solid foundation from which to build your knowledge and react to rapid developments in your field.
Computer science is one of the most practical subjects available.
Two thirds of the programme are made up of mandatory courses. The rest of the programme is made up of elective courses in computer science or other subjects.
Students can choose between the following specialisations::
All students take the same core courses, but different electives are available depending on specialisation.
Course topics include:
- Design, analysis and use of programming languages
- Algorithms
- Software development
- Creation of computer interfaces
- Computer graphics and video game design
- Web programming
- Analysis, design and applications of data structures and database management systems
- Operating systems
- Computer networks and distributed systems
- Computer security
- Cloud computing and high performance computing
- Artificial intelligence
- Scientific computing and optimisation
- Theoretical computer science
- Mathematics
- Language technology
- Bioinformatics
Other
Computer science is also offered as:
More about majors and minors under 'helpful content' below.
Icelandic matriculation examination or a comparable qualification. The faculty strongly recommends that students complete at least 40 credits in mathematics and 35 credits in science.
Further information can be found in article 23, regulation on admission requirements for undergraduate study no. 331/2022.
Applicants with qualifications from a school abroad who plan to enrol in an undergraduate programme taught in Icelandic at the faculty must also pass a special entrance exam in Icelandic, in accordance with Article 1.
180 ECTS credits have to be completed for the qualification. Organised as a three year programme.
Programme structure
Check below to see how the programme is structured.
- First year
- Fall
- Mathematical Analysis I
- Linear Algebra
- Computer Science 1
- Discrete mathematics
- Digital literacy 1
- Digital literacy 2
- Spring 1
- Graphical User Interface Programming
- Digital Circuit Design and Analysis
- Introduction to data science
- Probability and Statistics
- Mathematical Analysis II
- Computer Science 2
Mathematical Analysis I (STÆ104G)
This is a foundational course in single variable calculus. The prerequisites are high school courses on algebra, trigonometry. derivatives, and integrals. The course aims to create a foundation for understanding of subjects such as natural and physical sciences, engineering, economics, and computer science. Topics of the course include the following:
- Real numbers.
- Limits and continuous functions.
- Differentiable functions, rules for derivatives, derivatives of higher order, applications of differential calculus (extremal value problems, linear approximation).
- Transcendental functions.
- Mean value theorem, theorems of l'Hôpital and Taylor.
- Integration, the definite integral and rules/techniques of integration, primitives, improper integrals.
- Fundamental theorem of calculus.
- Applications of integral calculus: Arc length, area, volume, centroids.
- Ordinary differential equations: First-order separable and homogeneous differential equations, first-order linear equations, second-order linear equations with constant coefficients.
- Sequences and series, convergence tests.
- Power series, Taylor series.
Linear Algebra (STÆ107G)
Basics of linear algebra over the reals.
Subject matter: Systems of linear equations, matrices, Gauss-Jordan reduction. Vector spaces and their subspaces. Linearly independent sets, bases and dimension. Linear maps, range space and nullk space. The dot product, length and angle measures. Volumes in higher dimension and the cross product in threedimensional space. Flats, parametric descriptions and descriptions by equations. Orthogonal projections and orthonormal bases. Gram-Schmidt orthogonalization. Determinants and inverses of matrices. Eigenvalues, eigenvectors and diagonalization.
Computer Science 1 (TÖL101G)
Note: Only one course of either TÖL101G Tölvunarfræði 1 or TÖL105G Tölvunarfræði 1a can count towards the BS degree.
The Java programming language is used to introduce basic concepts in computer programming: Expressions and statements, textual and numeric data types, conditions and loops, arrays, methods, classes and objects, input and output. Programming and debugging skills are practiced in quizzes and projects throughout the semester.
Discrete mathematics (TÖL104G)
Propositions, predicates, inference rules. Set operations and Boolean algebra. Induction and recursion. Basic methods of analysis of algorithms and counting. Simple algorithms in number theory. Relations, their properties and representations. Trees and graphs and related algorithms. Strings, examples of languages, finite automata and grammars.
Digital literacy 1 (TÖL109G, TÖL110G)
This is a sister course of Computer literacy 2. The Unix operating system is introduced. The file system organization, often used command-line programs, the window system, command-line environment, and shell scripting. We cover editors and data wrangling in the shell as well as the typesetting system Latex.
Digital literacy 2 (TÖL109G, TÖL110G)
This is a sister course of Computer literacy 1. We present version control systems (git), debugging methods, and methods to build software. Common concepts in the field of cryptography are introduced as well as concepts related to virtualization and containers.
Graphical User Interface Programming (HBV201G)
In this course, students will get training in programming graphical user interfaces in Java and learn about the main steps in software development projects, from ideation to testing. Emphasis is placed on students acquiring more excellent proficiency in programming larger projects than in introductory programming courses (such as TÖL101G), being able to design interactive user interfaces, program them, and test them. This includes students becoming familiar with large software libraries (here, JavaFX) and using them. Additionally, students should be able to read, understand, and implement instructions on functionality, including interactivity. Students will be introduced to the design process, which consists of five stages: understanding the task, brainstorming ideas and interactivity, selecting and defining, programming a prototype, and testing and iterating. Insight is provided into user-centered development, interactive design, prototypes, and user testing.
The course will prepare students for courses such as Software Development and Software Projects 1 and other classes where students need to program. It is also a good foundation for courses like TÖL502M Human-Computer Interaction.
Digital Circuit Design and Analysis (TÖV201G)
Students will learn digital design principles and practice. Design is based on standard MSI and LSI devices or equivalent building blocks such as counters, shift registers, adders, and ROM. The design and analysis of combinatorial circuits for basic arithmetic is emphasized as well as the design an analysis of synchronous and asynchronous sequential circuits. Students will design circuits using basic building blocks such as flip flops and latches. Design and analysis of clocked sequential circuits based on Moore and Mealy FSM is emphasized. Introduction to Verilog HDL and FPGA in the design of as it applies to the previously described basic digital circuits. Students are required to complete 7 lab projects using FPGA. Students will also finish selected set of lab exercises using breadboards to contrast the state of the art design principles with classical principles. Students will work in teams to design and simulate digital circuits using a state-of-the-art CAD package. Both schematic and VHDL-based designs are emphasized.
Course Objective: Students will understand classical digital design principles and gain experience in using state of the art design tools.
Classes: Lectures 2 x 75 minutes, lab 1 x 120 minutes per week.
Co-requisites: Digital Circuits and Analysis lab
Introduction to data science (REI202G)
The course provides an introduction to the methods at the heart of data science and introduces widely used software tools such as numpy, pandas, matplotlib and scikit-learn.
The course consists of 6 modules:
- Introduction to the Python programming language.
- Data wrangling and data preprocessing.
- Exploratory data analysis and visualization.
- Optimization.
- Clustering and dimensionality reduction.
- Regression and classification.
Each module concludes with a student project.
Note that there is an academic overlap with REI201G Mathematics and Scientific Computing and both courses cannot be valid for the same degree.
Probability and Statistics (STÆ203G)
Basic concepts in probability and statistics based on univariate calculus.
Topics:
Sample space, events, probability, equal probability, independent events, conditional probability, Bayes rule, random variables, distribution, density, joint distribution, independent random variables, condistional distribution, mean, variance, covariance, correlation, law of large numbers, Bernoulli, binomial, Poisson, uniform, exponential and normal random variables. Central limit theorem. Poisson process. Random sample, statistics, the distribution of the sample mean and the sample variance. Point estimate, maximum likelihood estimator, mean square error, bias. Interval estimates and hypotheses testing form normal, binomial and exponential samples. Simple linear regression. Goodness of fit tests, test of independence.
Mathematical Analysis II (STÆ205G)
Open and closed sets. Mappings, limits and continuity. Differentiable mappings, partial derivatives and the chain rule. Jacobi matrices. Gradients and directional derivatives. Mixed partial derivatives. Curves. Vector fields and flow. Cylindrical and spherical coordinates. Taylor polynomials. Extreme values and the classification of stationary points. Extreme value problems with constraints. Implicit functions and local inverses. Line integrals, primitive functions and exact differential equations. Double integrals. Improper integrals. Green's theorem. Simply connected domains. Change of variables in double integrals. Multiple integrals. Change of variables in multiple integrals. Surface integrals. Integration of vector fields. The theorems of Stokes and Gauss.
Computer Science 2 (TÖL203G)
The programming language Java will be used in the course. Various data structures, algorithms and abstract data types will be covered. Among the data types and structures covered are lists, stacks, queues, priority queues, trees, binary trees, binary search trees and heaps along with related algorithms. Various search and sort algorithms will be covered. Algorithms will be analysed for their space and time complexity. There will be programming assignments in Java using the given data structures and algorithms. There will be many small assignments.
- Second year
- Fall
- Mathematical Analysis III
- Formal Languages and Computability
- Data Base Theory and Practice
- Programming Languages
- Computer organization and programming
- Spring 1
- Software Development
- Numerical Analysis
- Analysis of Algorithms
Mathematical Analysis III (STÆ302G)
Functions of a complex variable. Analytic functions. The exponential function, logarithms and roots. Cauchy's Integral Theorem and Cauchy's Integral Formula. Uniform convergence. Power series. Laurent series. Residue integration method. Application of complex function theory to fluid flows. Ordinary differential equations and systems of ordinary differential equations. Linear differential equations with constant coefficients. Systems of linear differential equations. The matrix exponential function. Various methods for obtaining a particular solution. Green's functions for initial value problems. Flows and the phase plane. Nonlinear systems of ordinary differential equations in the plane, equilibrium points, stability and linear approximations. Series solutions and the method of Frobenius. Use of Laplace transforms in solving differential equations.
Formal Languages and Computability (TÖL301G)
Finite state machines, regular languages and grammars, push-down automata, context-free languages and grammars, Turing machines, general languages and grammars, and their basic properties. Recursive and recursively enumerable languages, reduction between languages, connection to decision problems and proving unsolvability of such problems. The complexity classes P and NP, and NP-completeness. Examples of various models of computation.
Data Base Theory and Practice (TÖL303G)
Databases and database management systems. Physical data organization. Data modelling using the Entity-Relationship model and the Relational model. Relational algebra and calculus. The SQL query language. Design theory for relational data bases, functional dependencies, decomposition of relational schemes, normal forms. Query optimization. Concurrency control techniques and crash recovery. Database security and authorization. Data warehousing.
Programming Languages (TÖL304G)
An introduction to the most common types of programming languages. Block structured languages, list processing languages, object oriented programming. Describing programming languages, compilers and interpreters. The internal structure of block structured programming languages.Modular programming . Functions and subroutines, parameter passing. Memory management, garbage collection. The programming languages Scheme, CAML, Java, Morpho, C++ and Haskell will be considered. Object oriented programming languages. Objects and inheritance. Grammars, the structure of compilers. Modular programming will be emphasised (especially generic modules), as well as list processing, functional programming and block structure.
Computer organization and programming (TÖL309G)
The course covers the internal structure of computers and how programmers should construct their programs to take advantage of that. The programming language C will be introduced, especially its use of pointers and memory usage. Data representation for integers and floating point numbers. Programming in x86-64 assembly language. In particular how constructs in C are implemented in x86-64 assembly language. Memory hierarchy and its effects on program performance. Exceptional control flow in programs. Virtual memory. Concurrent programming.
Software Development (HBV401G)
In this course, software engineers and computer scientists take the step from programming-in-the-small (i.e. individual developers creating compact modules that solve clearly defined problems) to programming-in-the-large (i.e. teams of developers building complex systems that satisfy vague customer requirements). To deal with the complexities of such projects, this course introduces key software engineering concepts such as agile and plan-driven software process models, requirements engineering, effort estimation, object-oriented analysis and design, software architecture and test-driven development. These concepts are immediately applied in practice as students team up to develop and integrate component-based systems using the Java programming language.
Numerical Analysis (STÆ405G)
Fundamental concepts on approximation and error estimates. Solutions of systems of linear and non-linear equations. PLU decomposition. Interpolating polynomials, spline interpolation and regression. Numerical differentiation and integration. Extrapolation. Numerical solutions of initial value problems of systems of ordinary differential equations. Multistep methods. Numerical solutions to boundary value problems for ordinary differential equations.
Grades are given for programning projects and in total they amount to 30% of the final grade. The student has to receive the minimum grade of 5 for both the projects and the final exam.
Analysis of Algorithms (TÖL403G)
Methodology for the design of algorithms and the analysis of their time conplexity. Analysis of algorithms for sorting, searching, graph theory and matrix computations. Intractable problems, heuristics, and randomized algorithms.
- Third year
- Fall
- Software Project 1
- Spring 1
- Operations Research
Software Project 1 (HBV501G)
The aim of this course is for students to be able to develop software systems, to participate in software development projects, and to reflect upon software development. Thus, the course contains a development project that is performed in groups as its main component. Teaching is project-driven, and focuses on topics relevant in earlier phases of software development: development processes, estimation, design and programming, and configuration management. The project is started in this course and continued in HBV601G Software Project 2.
Operations Research (IÐN401G)
This course will introduce the student to decision and optimization models in operations research. On completing the course the student will be able to formulate, analyze, and solve mathematical models, which represent real-world problems, and critically interpret their results. The course will cover linear programming and the simplex algorithm, as well as related analytical topics. It will also introduce special types of mathematical models, including transportation, assignment, network, and integer programming models. The student will become familiar with a modeling language for linear programming.
- Year unspecified
- Whole year courses
- Mentor in Sprettur
- Fall
- Fundamentals of Ethical Hacking
- Physics 1 V
- Not taught this semesterSoftware Maintenance
- Not taught this semesterFinal project
- Requirements Engineering
- Computational Intelligence
- Engineering Management
- Analysis of Processes and Systems
- Engineering Economics
- Project Management
- Logistics & Environmental Engineering
- Not taught this semesterPerformance analysis of computer systems
- Cloud Computing and Big Data
- Algebra
- Theory of linear models
- Applied Linear Statistical Models
- Numerical Linear Algebra
- Graph Theory
- Programming Projects on Internet of Things
- Not taught this semesterComputer Graphics
- Web Programming 1
- Computer Networks and Security
- Not taught this semesterComputer Game Programming
- Computer organization and programming
- Not taught this semesterFrom an Idea to Reality
- Human Computer Interaction
- Distributed Systems
- Introduction to deep neural networks
- Theory of Creative AI: Analysing the Impact of AI on Creative Work
- Not taught this semesterMachine Learning for Earth Observation powered by Supercomputers
- Introduction to Information Security
- Spring 1
- Machine Learning for Earth Observation powered by Supercomputers
- Introduction to language technology
- Episodes from the history of philosophy of science
- Secure Software Engineering
- Seminar on Machine Learning
- Seminar in computer science
- Physics 2 V
- Software Testing
- Web Programming 2
- Industrial Software Engineering
- Software Project 2
- Internship in computer science and software engineering - undergraduate
- Operations in Organizations
- Simulation
- Design & Experimental Execution
- Introduction to Systems Biology
- Introduction to data science
- High Performance Computing
- The AI lifecycle
- Mathematical Analysis IV
- Compilers
- Operating Systems
- Not taught this semesterComputer Science Seminar for Undergraduates
- Not taught this semesterFrom an idea to reality II
- Algorithms in Bioinformatics
- Competitive programming
Mentor in Sprettur (GKY001M)
In this course, students work as mentors for participants at the upper‑secondary and university levels in the project Sprettur. Mentors play an essential role in supporting and encouraging other students in their studies and social life. Their role is to build constructive relationships with participants, act as positive role models, and take part in joint activities organised within Sprettur. Mentorship is based on relationship‑building and regular meetings and involves a commitment to the students the mentor supports.
Sprettur is a support project for students with a foreign background who seek additional support to improve their academic performance and participation in the university community. Students in the course work as mentors and are paired with participants based on shared interests. Mentors also work together in groups and in consultation with teachers and project coordinators.
Students may choose to enrol in the course in the autumn semester, spring semester, or distribute the workload across both semesters (the full academic year). The course structure accommodates this choice, but all academic requirements remain the same. Mentors plan regular meetings with Sprettur participants and typically spend three hours per month with participants, three hours per month in homework groups, and attend a total of five seminars.
Students submit journal entries on Canvas and design and deliver a learning experience for the participants in Sprettur. Journal entries are based on readings and critical reflections on the mentorship role and on personal experience in the project. The course is taught in Icelandic and English.
Upon completing the course and meeting all requirements, students receive 5 ECTS credits and an official certificate of participation and completion of the project.
Students fill out an electronic application form, and the supervising teacher contacts applicants.
More information about Sprettur can be found here: www.hi.is/sprettur
Fundamentals of Ethical Hacking (TÖL605M)
Ethical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and valuable insights used for improving system security.
This course will introduce students to the fundamentals of ethical hacking tools and techniques. Students will begin by configuring a secure lab using virtualisation tools. Then every two weeks a new stage of the ethical hacking methodology and some related tools will be introduced. The students will submit weekly lab reports evidencing their theoretical and practical understanding of the methodology and tools.
For the best experience, students should own a PC able to run virtualisation software with an x86 image. Mac users with Apple CPU or those with PCs whose CPUs lack virtualisation support or who have limited RAM might have issues running a stable lab on their machine. Students who lack suitable hardware can use VMs on the department's cyber security server infrastructure.
Physics 1 V (EÐL102G)
Concepts, units, scales and dimensions. Vectors. Kinematics of particles. Particle dynamics, inertia, forces and Newton's laws. Friction. Work and energy, conservation of energy. Momentum, collisions. Systems of particles, center of mass. Rotation of a rigid body. Angular momentum and moment of inertia. Statics. Gravity. Solids and fluids, Bernoulli's equation. Oscillations: Simple, damped and forced. Waves. Sound. Temperature. Ideal gas. Heat and the first law of thermodynamics. Kinetic theory of gases. Entropy and the second law of thermodynamics. Home problems: Once a week the students have to solve homeproblems on the website MasteringPhysics.
Laboratory work: Three exercises, mainly centered on mechanics, where students are trained in handling physical instruments, collecting and inspecting data. Students hand in their lab notebooks for a grade.
Note that the textbook is accessible to students via Canvas free of charge.
Software Maintenance (HBV103M)
The first part of the course is based on flipped-classroom style weekly reading, videos and assignments on:
- Evolution of Software and Lehman’s laws,
- Maintenance processes,
- Metrics useful for maintenance,
- Software analysis,
- Re-engineering,
- Reverse engineering,
- Code Smells & Refactoring,
- Basics of (Regression-)Testing,
- Design principles to support change & Design Patterns,
- Tools for software maintenance (including advanced features of an IDE).
In the second part of this course, these techniques will be applied in order to maintain a real legacy software written in Java.
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be advanced in their BSc. studies and you need solid Java programming experience: we will maintain a complex software and being able to understand how such a grown software works and to fix bugs is even more difficult to write such a software from scratch. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2. (It is impossible to maintain a software if you would not even be able to develop it.) Also, BSc. students should not take this course, if they know that they are going to continue with MSc. studies, because they might then experience a lack of suitable courses in their MSc. studies.
Final project (HBV261L)
An independent project under the direction of a member of the department of Computer Science.
Note that this course is mutually exclusive with the HBV004G, HBV502G and HBV603G internships.
Requirements Engineering (HBV301G)
This course introduces processes and tools for eliciting, analyzing, defining, validating, and managing software requirements. Students learn to work with different types of requirements, stakeholder roles, and practical techniques such as change management and conflict resolution. The course prepares students for further studies in software development and project work.
Computational Intelligence (IÐN102M)
In designing intelligent systems, there is a need for autonomous systems that can learn to make good decisions from their own experience. This course introduces students to reinforcement learning—a computational approach in which systems automatically improve their performance through interaction and reward, without explicit instruction. The course covers Markov decision processes, dynamic programming, Monte Carlo methods, policy optimization, planning, search methods, and deep neural networks as function approximators. The curriculum combines theoretical discussion and project work, giving students the opportunity to model, analyze, and solve mathematical models for decision-making problems. Emphasis is also placed on the iterative process and on critical reflection regarding what it means for algorithms to learn and the impact that autonomous computational intelligence might have on science and society.
Engineering Management (IÐN103G)
The purpose of the course is to prepare students for working in technology-based firms and organizations. The course will give an overview of the management of firms and organizations, the role of engineers and the challenges they face. Students will learn about analysis tools used in decision making, interpret the results, and communicate both orally and in writing.
Analysis of Processes and Systems (IÐN301G)
The aim of the course is to prepare students in analysing processes and systems. Description of processes are explained so that process analysis can be performed. Process discovery and their mapping is explained. Three ways of doing process discovery are explained: fact-based, interview-based and workshop-based. When processes are mapped they can be analyzed. The course will go through the qualitative methods of: value-stream-analysis, root-cause-analysis and risk analysis. The quantitative methods of: performance management, flow analysis, queuing theory and simulation will be explained. The later part of the course will be on systems and system analysis. System thinking will be explained and how systems can be used to describe the world. The system analysis methods of causal-loop-diagrams and stocks-and-flows will be explained. The course will conclude by simulating both processes and systems.
Engineering Economics (IÐN502G)
The objective of the course is that students get the skills to:
1. Understand the main concepts in accounting, cost theory and investment theory.
2. Be able to use methods of measuring the economic feasibility of technical projects.
3. Be able to develop computer models to assess the profitability of investments, the value of companies and pricing of bonds
Among topics included are accounting, cost theory, cash flow analysis, investment theory, measures of profitability including net present value and internal rate of return, and the building of profitability models. The course ends with a group assignment where the students exercise the development of computer models for feasibility assessment of projects.
Project Management (IÐN503G)
The course is an introductory course in project management. It introduces key concepts of project management and covers context and selection of projects, project planning, project monitoring, management of project teams, and project closure. Students create and execute project plans in groups. Special emphasis is on using of project management for managing technological innovation in organizations.
Logistics & Environmental Engineering (IÐN510M)
The course focuses on the principles of logistics and supply management and gives a broad introduction to the field. The course is divided into three topics primarily. It covers purchase operations of services and inventory management. This part is followed by looking into transportation and distribution management. Finally, the environmental impacts of logistics is studies and all the three parts put together into a view of sustainability. The course consists of lectures, exercises, game (the Beer Game) and a management simulation game to give hands on experience on logistics management,
Performance analysis of computer systems (REI503M)
Usually taught every second year.
This course provides students with an introduction to modeling and performance evaluation of computer and communication systems. Large-scale distributed computer systems process arriving requests, e.g., web page queries, in parallel in order to optimize performance metrics, such as response time and user satisfaction. Other important performance metrics include throughput and service-level agreement in general. This course covers basic mathematical tools needed to evaluate such dynamic systems and to understand the strengths and weaknesses, for example, in different designs, scheduling disciplines, and operating policies. The approach is based on operations research methods, in particular, queueing theory and Markov processes (previous knowledge of these methods is not required).
Attendance is strongly recommended.
Cloud Computing and Big Data (REI504M)
Overview of high performance computing (HPC) and “Big Data”, HPC environments with computing, network and storage resources, overview of parallel programming. Storage infrastructures and services for Big Data, Big Data analytics, the map-reduce paradigm, structured and unstructured data. Practical exercises: (A) Students will use the Amazon Web Services (AWS) cloud or equivalent to set up a multi-computer web service and an associated multi-computer testing application. (B) Students will get hands on experience of processing large data sets using map-reduce techniques with AWS.
Algebra (STÆ303G)
Groups, examples and basic concepts. Symmetry groups. Homomorphisms and normal subgroups. Rings, examples and basic concepts. Integral domains. Ring homomorphisms and ideals. Polynomial rings and factorization of polynomials. Special topics.
Theory of linear models (STÆ310M)
Simple and multiple linear regression, analysis of variance and covariance, inference, variances and covariances of estimators, influence and diagnostic analyses using residual and influence measures, simultaneous inference. General linear models as projections with ANOVA as special case, simultaneous inference of estimable functions. R is used in assignments. Solutions to assignments are returned in LaTeX and PDF format.
In addition selected topics will be visited, e.g. generalized linear models (GLMs), nonlinear regression and/or random/mixed effects models and/or bootstrap methods etc.
Students will present solutions to individually assigned
projects/exercises, each of which is handed in earlier through a web-page.
This course is taught in semesters of even-numbered years.
Applied Linear Statistical Models (STÆ312M)
The course focuses on simple and multiple linear regression as well as analysis of variance (ANOVA), analysis of covariance (ANCOVA) and binomial regression. The course is a natural continuation of a typical introductory course in statistics taught in various departments of the university.
We will discuss methods for estimating parameters in linear models, how to construct confidence intervals and test hypotheses for the parameters, which assumptions need to hold for applying the models and what to do when they are not met.
Students will work on projects using the statistical software R.
Numerical Linear Algebra (STÆ511M)
Iterative methods for linear systems of equations. Decompositions of matrices: QR, Cholesky, Jordan, Schur, spectral and singular value decomposition (SVD) and their applications. Discrete Fourier transform (DFT) and the fast Fourier transform (FFT). Discrete cosine transform (DCT) in two-dimensions and its application for the compression of images (JPEG) and audio (MP3, AAC). Sparse matrices and their representation.
Special emphasis will be on the application and implementation of the methods studied.
Graph Theory (STÆ520M)
Graphs, homomorphisms and isomorphisms of graphs. Subgraphs, spanning subgraphs. Paths, connected graphs. Directed graphs. Bipartite graphs. Euler graphs and Hamilton graphs; the theorems of Chvátal, Pósa, Ore and Dirac. Tournaments. Trees, spanning trees, the matrix-tree theorem, Cayley's theorem. Weighted graphs, the algorithms of Kruskal and Dijkstra. Networks, the max-flow-min-cut theorem, the algorithm of Ford and Fulkerson, Menger's theorem. Matchings, Berge's theorem, Hall's marriage theorem, the König-Egerváry theorem, the Kuhn-Munkres algorithm. Inseparable and two-connected graphs. Planar graphs, Euler's formula, Kuratowski's theorem, dual graphs. Embeddings of graphs in surfaces, the Ringel-Youngs-Mayer theorem. Colourings, Heawood's coloring theorem, Brooks's theorem, chromatic polynomial; edge colourings, Vizing's theorem.
Programming Projects on Internet of Things (TÖL103M)
This course offers a hands-on introduction to programming small devices (microcontrollers, single-board computers) used in the context of Internet of Things, sensor networking, and home automation.
Such devices are often equipped with a large number of I/O pins, some RAM and flash memory, and wireless communication capabilities (e.g. WiFi and/or Bluetooth), making them attractive for tasks involving data acquisition,
processing, and wireless communication.
The course consists of bi-weekly programming tasks dealing with serial communication, data acquisition and analysis, programming of real-time O/S (RTOS), wireless communication and TCP/IP client-servers paradigm.
The biweekly assignments lead to a final project.
Computer Graphics (TÖL105M)
The main emphasis is on fundamental concepts and mathematics for 3D computer graphics. Two and three-dimensional transformations. Viewing projections. Light and the shading of objects. Texture mapping, blending, bump maps. Programmable shaders. Curves and surfaces. Programming assignments in WebGL.
Web Programming 1 (TÖL107G)
Basis in building web projects, focusing on the frontend: HTML, CSS and JavaScript. Standards, practices and what it takes to create a good site. Design, layout and working with design documents. Programming in the interpreted programming language JavaScript, working with the browser and tools related to that. HTTP standard introduced. Projects focus on creating web sites that use what has been taught.
Computer Networks and Security (TÖL305G)
The foundations of computer networks with emphasis on the TCP/IP protocol. Analysis and design of computer networks. Hardware and software used in computer networks. Implementation and maintenance of computer networks. Security systems for computer networks.
Computer Game Programming (TÖL308G)
An introduction to the core techniques and concerns related to programming computer games. Questions of frame-rate control, object-management, determinism, memory-management and runtime performance will be addressed. The focus will be on “engine-level” facilities. The principles behind multiplayer networked games will be explored. Examples will be drawn from simple 2D games such as “Asteroids” and “Pac-Man”, but the emphasis will be on general principles which also apply to sophisticated, cutting-edge, modern games software.
Computer organization and programming (TÖL309G)
The course covers the internal structure of computers and how programmers should construct their programs to take advantage of that. The programming language C will be introduced, especially its use of pointers and memory usage. Data representation for integers and floating point numbers. Programming in x86-64 assembly language. In particular how constructs in C are implemented in x86-64 assembly language. Memory hierarchy and its effects on program performance. Exceptional control flow in programs. Virtual memory. Concurrent programming.
From an Idea to Reality (TÖL501G)
The course has been in development for over a decade under the name "Computer Systems and Marketing".
The course is based on teacher lectures and individual and group projects that help students to think outside the box. Teacher will tell of his experiences of making ideas become real and have a special focus on the mistakes that have been made along with the successful stories.
The final project of the course is a business plan that will be presented in an oral final exam. The business plan focuses on the idea of each student and how the student plans to realize his project.
Human Computer Interaction (TÖL502M)
Usually taught every second year.
The objective of the course is to allow students to examine more closely than is done in the introductory course Graphical User Interface Programming HBV201G specific factors of HCI. The factors covered are user interface design using prototyping, programming of smart devices and users‘ acceptability of the software. There will be emphasis on different techniques and tools to develop prototypes. Also, on the design of user interfaces and native programming for smart phones or pads. The development process will be aimed at ensuring accessibility and acceptability of users. Students work on small projects individually, or on larger projects in groups.
Distributed Systems (TÖL503M)
Usually taught every second year.
This course covers concepts of distributed systems and their application. Besides foundations on characteristics and models of distributed systems, networking and security, this includes network-based low-level interprocess communication, high-level remote procedure calls, the distributed object model and remote method invocation, services relevant in distributed systems (such as name services or distributed file systems), selected topics of distributed algorithms and their implementation (such as coordination, agreement, time, replication). Furthermore, special types of distributed systems may be covered (such as peer-to-peer systems, Cloud and Grid computing). Current technologies (such as Java RMI, Web Services, gRPC) are used as case study and as platform for developing distributed applications using high-level programming languages (such as Java).
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be advanced in their BSc. studies. (E.g. we will implement middleware in Java, so you should have programming experience well beyond "TÖL101G Computer Science 1". As a middleware adds functionality on top of an Operating System, you should have also passed TÖL401G Operating Systems.)
Introduction to deep neural networks (TÖL506M)
In this course we cover deep neural networks and methods related to them. We study networks and methods for image, sound and text analysis. The focus will be on applications and students will present either a project or a recent paper in this field.
Theory of Creative AI: Analysing the Impact of AI on Creative Work (MFR715M)
This course explores the evolving relationship between artificial intelligence and creative practices, focusing on the artistic, philosophical, ethical, and socio-cultural dimensions of AI-driven creativity. Grounded in the humanities, with emphasis on creativity studies, the course will enable students to critically assess how generative AI is reshaping traditional notions of creativity, authorship, and artistic production. Having explored key definitions of creativity itself, the course covers key issues such as the automation of creative work, the implications of AI-generated content for intellectual property and copyright, and the ethical dilemmas surrounding cultural appropriation in the digital age. Students will engage with debates on the tension between industrial AI big-data-driven systems versus small-data approaches, examining the consequences for artistic innovation and originality. Through hands-on exercises and real-world case studies, students will explore a variety of creative works, study production platforms where AI technologies are used, and gain practical experience in the application of AI for creative purposes. The course integrates modern theories of creativity with critical analysis of AI, and it will challenge students to rethink the boundaries of human and machine creativity. Course assessment will be based on creative work diaries that students will keep during the course, active participation in class, as well as an oral presentation of a short, written piece.
Machine Learning for Earth Observation powered by Supercomputers (TÖV605M)
This course exposes the students to the physical principles underlying satellite observations of Earth by passive sensors, as well as parallel Deep Learning (DL) algorithms that scale on High Performance Computing (HPC) systems.
For the different theoretical concepts (represented by 4 modules), the course provides hands-on exercises. These exercises are part of a project in the context of Remote Sensing (RS) image classification that the students are asked to develop during the whole duration of the course.
Introduction to Information Security (TÖL029M)
This course provides the foundation for understanding the key issues associated with protecting information assets, determining the levels of protection and response to security incidents, and designing a consistent, reasonable information security system, with appropriate intrusion detection and reporting features. The purpose of the course is to provide the student with an overview of the field of information security and assurance. Students will be exposed to the spectrum of security activities, methods, methodologies, and procedures. Coverage will include inspection and protection of information assets, detection of and reaction to threats to information assets, and examination of pre- and post-incident procedures, technical and managerial responses and an overview of the information security planning and staffing functions. Topics include risk assessment, authentication, securing web, application security, privacy and data protection, introduction to cryptography, security architecture, firewalls and other devices and network topologies.
Machine Learning for Earth Observation powered by Supercomputers (TÖV606M)
This course offers an advanced exploration of machine learning and high-performance computing (HPC) techniques tailored to satellite remote sensing and Earth observation (EO). Starting with the historical evolution of Earth observation—from early aerial photography to today’s high-throughput satellite constellations such as Sentinel and Landsat—the curriculum situates modern EO within the context of an unprecedented “big data” era, driven by terabytes of imagery captured daily.
Building on foundational concepts in traditional pixel-based analysis, students will progress to contemporary approaches that leverage the deep learning revolution and the emergence of AI foundation models. These models employ self-supervised learning and Transformer-based architectures to extract structure and meaning from vast amounts of unlabeled data at scale. The course emphasizes how these advanced machine learning paradigms are reshaping EO data analytics beyond classical handcrafted methods.
A core theme of the semester is the intersection of large-scale machine learning and HPC. Students will examine how modern supercomputers enable the training and deployment of Geospatial AI foundation models for Earth observation. This includes discussions on distributed training, parallel algorithm design, and performance optimization on HPC infrastructures. The course also covers benchmarking and performance evaluation, introducing students to standardized evaluation frameworks and metrics to assess model scalability, efficiency, and accuracy in real-world Earth observation applications.
To integrate theory and practice, students complete a semester-long capstone project. Through hands-on development with Python APIs and open models, students will design, implement, and evaluate machine learning solutions on real EO datasets. Projects reinforce the application of theoretical concepts to practical problems, preparing students for research or industry roles at the forefront of AI for EO.
Introduction to language technology (TÖL025M)
This course may be taught in English if requested.
In this course we will cover the basics of language technology with emphasis on the analysis and processing of written language. This includes the core subjects of language technology as well as their use in everyday life. We will present tools and corpora used within the field and specifically touch on how language technology is used for Icelandic.
The course emphasizes methods that make use of word embeddings, deep neural networks and language models for practical assignments and we will talk about how methods involving artificial intelligence have almost completely taken over the processing of human language.
In this course there are 6 homework assignments that are worth 60% of the final grade as well as a larger final assignment that is worth 40%. For students that turn in a minimum amount of in-class assignments, the weight of the homework assignments will drop to 55%.
Episodes from the history of philosophy of science (SAG448G)
This course aims to introduce students to the nature and development of science by examining episodes of its history and by disucssing recent theories concerning the nature, aims, and development of science. A special emphasis will be placed on the history of physical science from Aristotle to Newton, including developments in astronomy during the scientific revolution of the 16th and 17th century. We will also specifically examine the history of Darwin’s theory of evolution by natural selection. These episodes and many others will be viewed through the lens of various theories of scientific progress, and through recent views about interactions between science and society at large. The course material may change depending on the students’ interest.
Secure Software Engineering (HBV506M)
Secure software engineering involves identifying and mitigating vulnerabilities to reduce threats to an application. In this module, students will gain an understanding of secure engineering practices and the means to apply them throughout the complete software development life cycle.
Working in teams, students will design, develop, and maintain a web application for a customer following secure software engineering principles. Students will illustrate their understanding and practical competency of white box and black box (i.e. penetration testing) security assessment through testing their own and other teams' applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.
It is therefore assumed that the students have knowledge in web application development, e.g. using JavaScript. Some example code and learning resources will be provided.
Additionally, students will need an appropriate penetration testing laboratory and have attained beginner proficiency in penetration testing tools and techniques. Therefore, having previously studied TÖL605M - Fundamentals of Ethical Hacking is required for this course. Students who have not studied this course but believe they meet these requirements should contact the tutor for a small assessment.
Seminar on Machine Learning (TÖL028M)
In this course, students familiarize themselves with a particular topic in artificial intelligence (e.g. computer vision, natural language processing, data processing, generative modeling or other topics) by studying relevant academic literature and preparing a talk on this topic for their classmates.
Students can choose from a selection of topics provided by the teacher, or propose a topic that they are interested in on their own.
Besides learning about the subject matter of the talks, the goal of the course is to practice presentation skills.
The course starts on June 8th and will finish on August 17th.
Seminar in computer science (TÖL606M)
Students in computer science, software engineering and computational engineering attend weekly seminars where they present talks on their research projects or other related topics of interest.
Physics 2 V (EÐL201G)
Teaching takes 12 weeks. Charge and electric field. Gauss' law. Electric potential. Capacitors and dielectrics. Electric currents and resistance. Circuits. Magnetic fields. The laws of Ampère and Faraday. Induction. Electric oscillation and alternating currents. Maxwell's equations. Electromagnetic waves. Reflection and refraction. Lenses and mirrors. Wave optics. Four laboratory exercises in optics and electromagnetism.
Software Testing (HBV205M)
This course covers testing of software. Besides basic foundations, this includes both dynamic testing where the software under test is executed and static approaches where software and other artefacts produced during software development are investigated without executing them. The focus of this course is, however, on dynamic testing. The different levels of testing (component test, integration test, system and acceptance test) and types of testing (functional, non-functional, structural and change-related) are covered as well as different test design techniques (black box test and white box test). Furthermore, test management and principles of test tools are discussed. In addition, selected advanced topics may be covered (for example, test languages, testing of object-oriented software, test process improvement, agile testing). The covered topics are a superset of the International Software Testing Qualifications Board's (ISTQB) certified tester foundation level syllabus.
The first part of the course is based on flipped-classroom style weekly reading, videos and assignments. In the second part, students work independently on some project related to software testing.
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be very advanced in their BSc. studies, i.e. have experience in programming languages, software development and applying it in some software project, but should also be familiar with theoretical concepts from automata theory.
Also, BSc. students should not take this course, if they know that they are going to continue with MSc. studies, because they might then experience a lack of suitable courses in their MSc. studies.
Web Programming 2 (HBV403G)
Continuation of web programming I, backend programming in node.js, writing and connecting to web services and connections to databases. Frontend libraries/frameworks used to setup a frontend project (React, Ember, Vue). Security issues that need to be considered when writing for the web. Projects focus on creating web sites that use what has been taught.
Industrial Software Engineering (HBV404G)
This course covers legal and economic aspects of software engineering and software project management.
Through lectures, guest talks, work on practical projects and seminar elements, the course will consider business models for the development and/or operation of software, introduce strategies for software estimation, risk management and pricing, explain models for software licensing, and discuss aspects of ethics, privacy and security in software.
New mandatory course - first taught in 2023-2024.
Software Project 2 (HBV601G)
The aim of this course is for students to be able to develop software systems and to participate in and reflect on software development projects. Thus, the course contains a development project that is performed in groups as its main component. Teaching is project-driven, and focuses on topics that are relevant in later phases of software development: quality assurance, installation, maintenance and evolution as weel as covers topics from HBV501G Software Project 1 in more detail. The project was started in HBV501G Software Project 1 and continued in this course.
Internship in computer science and software engineering - undergraduate (HBV603G)
The objective is to ensure vocational training under the professional guidance of experienced managers at companies or public institutions related to computer science or software engineering.
Role of student
• Work on one major task
• A student is in a 5-month internship from beginning of January until beginning of June.
A student may not take a final assignment (TÖL261L or HBV261L)
Student's tasks
These include questionnaire analysis, application design, programming, software testing, installation and operation of computer systems. The project must be in computer science or software engineering and try the knowledge and skills acquired by the student in the course. The final product of vocational training must be defined in the project description, ie. what final report should contain. Supervisory teacher of vocational education must approve a proposal for a project.
Role of an organization
• A company provides a student with a workplace and appoints a supervisor within an organization that monitors his work.
• A student is an employee of an enterprise and pays a student's remuneration company according to a further agreement therein.
• At the beginning of vocational training lies the assignment of the student. Project description must be accompanied by a contract.
• The supervisor and student meet regularly and evaluate the progress of projects.
Completion of vocational training
• At the end of the working hours, return to the supervising teacher:
1. Student's final report (as defined in the project description). In the case of a 24 ECTS course, the student shall submit a mid-term report on the internship.
2. A student's book kept during vocational training. The diary shall include a weekly summary indicating each project of the week and the amount of time spent on individual projects.
3. Confirmation by the supervisor of the student's attendance and project work at the end of the practical training.
• The course is not considered complete until both the supervisory teacher of the vocational education and the supervisor of the practical training believe that satisfactory results have been achieved and the final and final reports have been submitted.
Note that this course is mutually exclusive with the HBV004G and HBV502G internships and the HBV261L final project.
Operations in Organizations (IÐN201G)
The goal with this course is to prepare students to approach organisations as sequence of operations. Organisations will be described as a group of operations that produce value adding work. Companies will be visited and students will describe their workings as operations sequences. Methods to describe operations, to analyse operations and to present operation sequences will be introduced and trained. Students will be introduced to methods of describing, analysing and presenting operations overview. At course end students should be able to use these methods for both descriptions and analysis and then interpret their results to present both orally and in writing.
Simulation (IÐN403M)
Simulation techniques and system modelling find application in fields as diverse as physics, chemistry, biology, economics, medicine, computer science, and engineering. The purpose of this course is to introduce fundamental principles and concepts in the general area of systems modelling and simulation. Topics to be covered in this course are discrete event simulation, statistical modelling, and simulation modelling design, experimental design, model testing and interpretation of simulation results. The maximum likelihood estimation of probability distributions base on real data is presented. The course will also introduce the generation of random variates and testing. Fundamental programming of simulation models in C is covered and specialized simulation packages introduced. The students will complete a real world simulation project where the emphasis will be on manufacturing or service systems.
Design & Experimental Execution (IÐN405G)
The purpose of the course is to train an engineering approach to experiments and experimental thinking. Experiments are designed, carried out, data collected and processed using statistical methods. Finally, it discussed how conclusions can be drawn from data / information when using experiments in for example product design and the design and operation of production systems.
Course material: Linear and non-linear regression analysis. Analysis of Variances (ANOVA). Design of experiments. Statistical quality control. Non-parametric tests that can be used in data processing. Use of statistical programs when solving tasks.
Introduction to Systems Biology (LVF601M)
Systems biology is an interdisciplinary field that studies the biological phenomena that emerge from multiple interacting biological elements. Understanding how biological systems change across time is a particular focus of systems biology. In this course, we will prioritize aspects of systems biology relevant to human health and disease.
This course provides an introduction to 1) basic principles in modelling molecular networks, both gene regulatory and metabolic networks; 2) cellular phenomena that support homeostasis like tissue morphogenesis and microbiome resilience, and 3) analysis of molecular patterns found in genomics data at population scale relevant to human disease such as patient classification and biomarker discovery. In this manner, the course covers the three major scales in systems biology: molecules, cells and organisms.
The course activities include reading and interpreting scientific papers, implementation of computational algorithms, working on a research project and presentation of scientific results.
Lectures will comprise of both (1) presentations on foundational concepts and (2) hands-on sessions using Python as the programming language. The course will be taught in English.
Introduction to data science (REI202G)
The course provides an introduction to the methods at the heart of data science and introduces widely used software tools such as numpy, pandas, matplotlib and scikit-learn.
The course consists of 6 modules:
- Introduction to the Python programming language.
- Data wrangling and data preprocessing.
- Exploratory data analysis and visualization.
- Optimization.
- Clustering and dimensionality reduction.
- Regression and classification.
Each module concludes with a student project.
Note that there is an academic overlap with REI201G Mathematics and Scientific Computing and both courses cannot be valid for the same degree.
High Performance Computing (REI204M)
Design of parallel computers and parallel programming models. Shared memory architecture. Message passing and distributed memory architecture. Parallel programming of computer clusters using MPI and multicore programming using OpenMP. Parallel algorithms for sorting, searching, linear algebra, and various graph problems.
Course topics will be very similar like HPC in Fall 2019:
http://www.morrisriedel.de/hpc-course-fall-2019
Positioning in the Field of High-Performance Computing (HPC)
- Consists of techniques for programming & using large-scale HPC Systems
- Approach: Get a broad understanding of what HPC is and what can be done
- Goal: Train general HPC techniques and systems and selected details of domain-specific applications
Course Motivation
Parallel processing and distributed computing
- Matured over the past three decades
- Both emerged as a well-developed field in computer science
- Still a lot of innovation, e.g. from hardware/software
‘Scientific computing‘ with Maple, Matlab, etc.
- Performed on small (‘serial‘) computing machines like Desktop PCs or Laptops
- An increasing number of cores enables ‘better scientific computing‘ today
- Good for small & fewer complex applications, quickly reach memory limits
‘Advanced scientific computing‘
- Used with computational simulations and large-scale machine & deep learning
- Performed on large parallel computers; often scientific domain-specific approaches
- Use orders of magnitude multi-core chips & large memory & specific many-core chips
- Enables ‘simulations of reality‘ - often based on known physical laws and numerical methods
The AI lifecycle (REI603M)
In this course, we study the AI lifecycle, i.e. the productionisation of AI methods.
We explore the following parts of the lifecycle:
- Data collection and preparation
- Feature engineering
- Model training
- Model evaluation
- Model deployment
- Model serving
- Model monitoring
- Model maintenance
Three large projects will be handed out during the semester where students compete to solve AI problems.
Mathematical Analysis IV (STÆ401G)
Aim: To introduce the student to Fourier analysis and partial differential equations and their applications.
Subject matter: Fourier series and orthonormal systems of functions, boundary-value problems for ordinary differential equations, the eigenvalue problem for Sturm-Liouville operators, Fourier transform. The wave equation, diffusion equation and Laplace's equation solved on various domains in one, two and three dimensions by methods based on the first part of the course, separation of variables, fundamental solution, Green's functions and the method of images.
Compilers (TÖL202M)
The design of programming languages. The structure and design of compilers. Lexical analysis. Top down and bottom up parsing. Code generation. Each student writes his or her own compiler.
Operating Systems (TÖL401G)
This course covers concepts of operating systems. Besides foundations on computer hardware structures and general operating system architectures, this includes concepts of processes and threads and their management, principles of scheduling and scheduling algorithms, communication and synchronisation between processes and deadlock issues, principles of memory management including virtual memory and page replacement algorithms, file systems and their implementation as well as mass-storage management. If time allows, principles for achieving protection and security, and aspects of distribution (e.g. concepts of distributed systems and distributed file systems) are covered as well. This course does not deal with details of implementing operating systems, but introduces generic concepts that are used when implementing operating systems and that an application developer needs to know, when creating an application program. Where appropriate, current operating systems such as Microsoft Windows and POSIX-compliant UNIX-like systems (e.g. Linux) are used as case study for implementation and offered system calls. The usage of operating system services from within high-level programming languages (e.g. C, C++ or Java) is demonstrated based on Application Programming Interfaces (APIs) offered by prevailing system libraries.
Computer Science Seminar for Undergraduates (TÖL602G)
In this course, students familiarize themselves with a particular topic in computer science (e.g. an engineering technique, a computational problem, a programming language etc.) by studying relevant academic literature and preparing a talk on this topic for their classmates. Students can chose from a selection of topics provided by the teacher, or propose a topic that they are interested in on their own. Besides learning about the subject matter of the talks, a goal of the course is to practice presentation skills.
From an idea to reality II (TÖL602M)
The course is a continuation of the course "From an idea to reality". Students are expected to continue to develop their idea that they had in the "From an Idea to Reality" course. If the students are not satisfied with their previous idea and think they have come up with a better idea, that's fine, and if the teacher is satisfied with the new idea the student can continue with the new idea.
Students must apply for grants in the competition fund. Practice pitching your idea to potential investors and your fellow students.
The teacher will cover accounting and planning based on probability.
The teacher will cover company formation and tax matters.
Algorithms in Bioinformatics (TÖL604M)
This course will cover the algorithmic aspects of bioinformatic. We will start with an introduction to genomics and algorithms for students new to the field. The course is divided into modules, each module covers a single problem in bioinformatics that will be motivated based on current research. The module will then cover algorithms that solve the problem and variations on the problem. The problems covered are motif finding, edit distance in strings, sequence alignment, clustering, sequencing and assembly and finally computational methods for high throughput sequencing (HTS).
Competitive programming (TÖL607G)
This course will provide students with the skills needed to solve computational problems that frequently appear in programming competitions. Such skills are highly useful in various programming tasks, in other courses and in job interviews. An overview of the main algorithms and techniques will be given. This includes algorithms for graphs, strings, computational geometry and counting techniques. The students will spend most of their time programming solutions to contest problems.
- Fall
- STÆ104GMathematical Analysis IMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse Description
This is a foundational course in single variable calculus. The prerequisites are high school courses on algebra, trigonometry. derivatives, and integrals. The course aims to create a foundation for understanding of subjects such as natural and physical sciences, engineering, economics, and computer science. Topics of the course include the following:
- Real numbers.
- Limits and continuous functions.
- Differentiable functions, rules for derivatives, derivatives of higher order, applications of differential calculus (extremal value problems, linear approximation).
- Transcendental functions.
- Mean value theorem, theorems of l'Hôpital and Taylor.
- Integration, the definite integral and rules/techniques of integration, primitives, improper integrals.
- Fundamental theorem of calculus.
- Applications of integral calculus: Arc length, area, volume, centroids.
- Ordinary differential equations: First-order separable and homogeneous differential equations, first-order linear equations, second-order linear equations with constant coefficients.
- Sequences and series, convergence tests.
- Power series, Taylor series.
Face-to-face learningPrerequisitesSTÆ107GLinear AlgebraMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionBasics of linear algebra over the reals.
Subject matter: Systems of linear equations, matrices, Gauss-Jordan reduction. Vector spaces and their subspaces. Linearly independent sets, bases and dimension. Linear maps, range space and nullk space. The dot product, length and angle measures. Volumes in higher dimension and the cross product in threedimensional space. Flats, parametric descriptions and descriptions by equations. Orthogonal projections and orthonormal bases. Gram-Schmidt orthogonalization. Determinants and inverses of matrices. Eigenvalues, eigenvectors and diagonalization.Face-to-face learningPrerequisitesTÖL101GComputer Science 1Mandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionNote: Only one course of either TÖL101G Tölvunarfræði 1 or TÖL105G Tölvunarfræði 1a can count towards the BS degree.
The Java programming language is used to introduce basic concepts in computer programming: Expressions and statements, textual and numeric data types, conditions and loops, arrays, methods, classes and objects, input and output. Programming and debugging skills are practiced in quizzes and projects throughout the semester.
Face-to-face learningPrerequisitesTÖL104GDiscrete mathematicsMandatory (required) course8A mandatory (required) course for the programme8 ECTS, creditsCourse DescriptionPropositions, predicates, inference rules. Set operations and Boolean algebra. Induction and recursion. Basic methods of analysis of algorithms and counting. Simple algorithms in number theory. Relations, their properties and representations. Trees and graphs and related algorithms. Strings, examples of languages, finite automata and grammars.
Face-to-face learningPrerequisitesTÖL109G, TÖL110GDigital literacy 1Mandatory (required) course2A mandatory (required) course for the programme2 ECTS, creditsCourse DescriptionThis is a sister course of Computer literacy 2. The Unix operating system is introduced. The file system organization, often used command-line programs, the window system, command-line environment, and shell scripting. We cover editors and data wrangling in the shell as well as the typesetting system Latex.
Online learningSelf-studyPrerequisitesTÖL109G, TÖL110GDigital literacy 2Mandatory (required) course2A mandatory (required) course for the programme2 ECTS, creditsCourse DescriptionThis is a sister course of Computer literacy 1. We present version control systems (git), debugging methods, and methods to build software. Common concepts in the field of cryptography are introduced as well as concepts related to virtualization and containers.
Online learningSelf-studyPrerequisites- Spring 2
HBV201GGraphical User Interface ProgrammingRestricted elective course8Restricted elective course, conditions apply8 ECTS, creditsCourse DescriptionIn this course, students will get training in programming graphical user interfaces in Java and learn about the main steps in software development projects, from ideation to testing. Emphasis is placed on students acquiring more excellent proficiency in programming larger projects than in introductory programming courses (such as TÖL101G), being able to design interactive user interfaces, program them, and test them. This includes students becoming familiar with large software libraries (here, JavaFX) and using them. Additionally, students should be able to read, understand, and implement instructions on functionality, including interactivity. Students will be introduced to the design process, which consists of five stages: understanding the task, brainstorming ideas and interactivity, selecting and defining, programming a prototype, and testing and iterating. Insight is provided into user-centered development, interactive design, prototypes, and user testing.
The course will prepare students for courses such as Software Development and Software Projects 1 and other classes where students need to program. It is also a good foundation for courses like TÖL502M Human-Computer Interaction.Face-to-face learningPrerequisitesAttendance required in classTÖV201GDigital Circuit Design and AnalysisRestricted elective course6Restricted elective course, conditions apply6 ECTS, creditsCourse DescriptionStudents will learn digital design principles and practice. Design is based on standard MSI and LSI devices or equivalent building blocks such as counters, shift registers, adders, and ROM. The design and analysis of combinatorial circuits for basic arithmetic is emphasized as well as the design an analysis of synchronous and asynchronous sequential circuits. Students will design circuits using basic building blocks such as flip flops and latches. Design and analysis of clocked sequential circuits based on Moore and Mealy FSM is emphasized. Introduction to Verilog HDL and FPGA in the design of as it applies to the previously described basic digital circuits. Students are required to complete 7 lab projects using FPGA. Students will also finish selected set of lab exercises using breadboards to contrast the state of the art design principles with classical principles. Students will work in teams to design and simulate digital circuits using a state-of-the-art CAD package. Both schematic and VHDL-based designs are emphasized.
Course Objective: Students will understand classical digital design principles and gain experience in using state of the art design tools.Classes: Lectures 2 x 75 minutes, lab 1 x 120 minutes per week.
Co-requisites: Digital Circuits and Analysis lab
Face-to-face learningPrerequisitesREI202GIntroduction to data scienceMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThe course provides an introduction to the methods at the heart of data science and introduces widely used software tools such as numpy, pandas, matplotlib and scikit-learn.
The course consists of 6 modules:
- Introduction to the Python programming language.
- Data wrangling and data preprocessing.
- Exploratory data analysis and visualization.
- Optimization.
- Clustering and dimensionality reduction.
- Regression and classification.
Each module concludes with a student project.
Note that there is an academic overlap with REI201G Mathematics and Scientific Computing and both courses cannot be valid for the same degree.
Face-to-face learningPrerequisitesSTÆ203GProbability and StatisticsMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionBasic concepts in probability and statistics based on univariate calculus.
Topics:
Sample space, events, probability, equal probability, independent events, conditional probability, Bayes rule, random variables, distribution, density, joint distribution, independent random variables, condistional distribution, mean, variance, covariance, correlation, law of large numbers, Bernoulli, binomial, Poisson, uniform, exponential and normal random variables. Central limit theorem. Poisson process. Random sample, statistics, the distribution of the sample mean and the sample variance. Point estimate, maximum likelihood estimator, mean square error, bias. Interval estimates and hypotheses testing form normal, binomial and exponential samples. Simple linear regression. Goodness of fit tests, test of independence.Face-to-face learningPrerequisitesSTÆ205GMathematical Analysis IIMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionOpen and closed sets. Mappings, limits and continuity. Differentiable mappings, partial derivatives and the chain rule. Jacobi matrices. Gradients and directional derivatives. Mixed partial derivatives. Curves. Vector fields and flow. Cylindrical and spherical coordinates. Taylor polynomials. Extreme values and the classification of stationary points. Extreme value problems with constraints. Implicit functions and local inverses. Line integrals, primitive functions and exact differential equations. Double integrals. Improper integrals. Green's theorem. Simply connected domains. Change of variables in double integrals. Multiple integrals. Change of variables in multiple integrals. Surface integrals. Integration of vector fields. The theorems of Stokes and Gauss.
Face-to-face learningPrerequisitesTÖL203GComputer Science 2Mandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThe programming language Java will be used in the course. Various data structures, algorithms and abstract data types will be covered. Among the data types and structures covered are lists, stacks, queues, priority queues, trees, binary trees, binary search trees and heaps along with related algorithms. Various search and sort algorithms will be covered. Algorithms will be analysed for their space and time complexity. There will be programming assignments in Java using the given data structures and algorithms. There will be many small assignments.
Face-to-face learningPrerequisites- Fall
- STÆ302GMathematical Analysis IIIMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse Description
Functions of a complex variable. Analytic functions. The exponential function, logarithms and roots. Cauchy's Integral Theorem and Cauchy's Integral Formula. Uniform convergence. Power series. Laurent series. Residue integration method. Application of complex function theory to fluid flows. Ordinary differential equations and systems of ordinary differential equations. Linear differential equations with constant coefficients. Systems of linear differential equations. The matrix exponential function. Various methods for obtaining a particular solution. Green's functions for initial value problems. Flows and the phase plane. Nonlinear systems of ordinary differential equations in the plane, equilibrium points, stability and linear approximations. Series solutions and the method of Frobenius. Use of Laplace transforms in solving differential equations.
Face-to-face learningPrerequisitesTÖL301GFormal Languages and ComputabilityMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionFinite state machines, regular languages and grammars, push-down automata, context-free languages and grammars, Turing machines, general languages and grammars, and their basic properties. Recursive and recursively enumerable languages, reduction between languages, connection to decision problems and proving unsolvability of such problems. The complexity classes P and NP, and NP-completeness. Examples of various models of computation.
Face-to-face learningPrerequisitesTÖL303GData Base Theory and PracticeMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionDatabases and database management systems. Physical data organization. Data modelling using the Entity-Relationship model and the Relational model. Relational algebra and calculus. The SQL query language. Design theory for relational data bases, functional dependencies, decomposition of relational schemes, normal forms. Query optimization. Concurrency control techniques and crash recovery. Database security and authorization. Data warehousing.
Face-to-face learningPrerequisitesTÖL304GProgramming LanguagesMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionAn introduction to the most common types of programming languages. Block structured languages, list processing languages, object oriented programming. Describing programming languages, compilers and interpreters. The internal structure of block structured programming languages.Modular programming . Functions and subroutines, parameter passing. Memory management, garbage collection. The programming languages Scheme, CAML, Java, Morpho, C++ and Haskell will be considered. Object oriented programming languages. Objects and inheritance. Grammars, the structure of compilers. Modular programming will be emphasised (especially generic modules), as well as list processing, functional programming and block structure.
Face-to-face learningPrerequisitesTÖL309GComputer organization and programmingMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThe course covers the internal structure of computers and how programmers should construct their programs to take advantage of that. The programming language C will be introduced, especially its use of pointers and memory usage. Data representation for integers and floating point numbers. Programming in x86-64 assembly language. In particular how constructs in C are implemented in x86-64 assembly language. Memory hierarchy and its effects on program performance. Exceptional control flow in programs. Virtual memory. Concurrent programming.
Face-to-face learningPrerequisites- Spring 2
HBV401GSoftware DevelopmentMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionIn this course, software engineers and computer scientists take the step from programming-in-the-small (i.e. individual developers creating compact modules that solve clearly defined problems) to programming-in-the-large (i.e. teams of developers building complex systems that satisfy vague customer requirements). To deal with the complexities of such projects, this course introduces key software engineering concepts such as agile and plan-driven software process models, requirements engineering, effort estimation, object-oriented analysis and design, software architecture and test-driven development. These concepts are immediately applied in practice as students team up to develop and integrate component-based systems using the Java programming language.
Face-to-face learningPrerequisitesSTÆ405GNumerical AnalysisMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionFundamental concepts on approximation and error estimates. Solutions of systems of linear and non-linear equations. PLU decomposition. Interpolating polynomials, spline interpolation and regression. Numerical differentiation and integration. Extrapolation. Numerical solutions of initial value problems of systems of ordinary differential equations. Multistep methods. Numerical solutions to boundary value problems for ordinary differential equations.
Grades are given for programning projects and in total they amount to 30% of the final grade. The student has to receive the minimum grade of 5 for both the projects and the final exam.
Face-to-face learningPrerequisitesTÖL403GAnalysis of AlgorithmsMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionMethodology for the design of algorithms and the analysis of their time conplexity. Analysis of algorithms for sorting, searching, graph theory and matrix computations. Intractable problems, heuristics, and randomized algorithms.
Face-to-face learningPrerequisites- Fall
- HBV501GSoftware Project 1Mandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse Description
The aim of this course is for students to be able to develop software systems, to participate in software development projects, and to reflect upon software development. Thus, the course contains a development project that is performed in groups as its main component. Teaching is project-driven, and focuses on topics relevant in earlier phases of software development: development processes, estimation, design and programming, and configuration management. The project is started in this course and continued in HBV601G Software Project 2.
Face-to-face learningPrerequisites- Spring 2
IÐN401GOperations ResearchMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThis course will introduce the student to decision and optimization models in operations research. On completing the course the student will be able to formulate, analyze, and solve mathematical models, which represent real-world problems, and critically interpret their results. The course will cover linear programming and the simplex algorithm, as well as related analytical topics. It will also introduce special types of mathematical models, including transportation, assignment, network, and integer programming models. The student will become familiar with a modeling language for linear programming.
Face-to-face learningPrerequisites- Whole year courses
- Course Description
In this course, students work as mentors for participants at the upper‑secondary and university levels in the project Sprettur. Mentors play an essential role in supporting and encouraging other students in their studies and social life. Their role is to build constructive relationships with participants, act as positive role models, and take part in joint activities organised within Sprettur. Mentorship is based on relationship‑building and regular meetings and involves a commitment to the students the mentor supports.
Sprettur is a support project for students with a foreign background who seek additional support to improve their academic performance and participation in the university community. Students in the course work as mentors and are paired with participants based on shared interests. Mentors also work together in groups and in consultation with teachers and project coordinators.
Students may choose to enrol in the course in the autumn semester, spring semester, or distribute the workload across both semesters (the full academic year). The course structure accommodates this choice, but all academic requirements remain the same. Mentors plan regular meetings with Sprettur participants and typically spend three hours per month with participants, three hours per month in homework groups, and attend a total of five seminars.
Students submit journal entries on Canvas and design and deliver a learning experience for the participants in Sprettur. Journal entries are based on readings and critical reflections on the mentorship role and on personal experience in the project. The course is taught in Icelandic and English.
Upon completing the course and meeting all requirements, students receive 5 ECTS credits and an official certificate of participation and completion of the project.
Students fill out an electronic application form, and the supervising teacher contacts applicants.
More information about Sprettur can be found here: www.hi.is/sprettur
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesAttendance required in class- Fall
TÖL605MFundamentals of Ethical HackingElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionEthical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and valuable insights used for improving system security.
This course will introduce students to the fundamentals of ethical hacking tools and techniques. Students will begin by configuring a secure lab using virtualisation tools. Then every two weeks a new stage of the ethical hacking methodology and some related tools will be introduced. The students will submit weekly lab reports evidencing their theoretical and practical understanding of the methodology and tools.
For the best experience, students should own a PC able to run virtualisation software with an x86 image. Mac users with Apple CPU or those with PCs whose CPUs lack virtualisation support or who have limited RAM might have issues running a stable lab on their machine. Students who lack suitable hardware can use VMs on the department's cyber security server infrastructure.
Face-to-face learningPrerequisitesCourse DescriptionConcepts, units, scales and dimensions. Vectors. Kinematics of particles. Particle dynamics, inertia, forces and Newton's laws. Friction. Work and energy, conservation of energy. Momentum, collisions. Systems of particles, center of mass. Rotation of a rigid body. Angular momentum and moment of inertia. Statics. Gravity. Solids and fluids, Bernoulli's equation. Oscillations: Simple, damped and forced. Waves. Sound. Temperature. Ideal gas. Heat and the first law of thermodynamics. Kinetic theory of gases. Entropy and the second law of thermodynamics. Home problems: Once a week the students have to solve homeproblems on the website MasteringPhysics.
Laboratory work: Three exercises, mainly centered on mechanics, where students are trained in handling physical instruments, collecting and inspecting data. Students hand in their lab notebooks for a grade.
Note that the textbook is accessible to students via Canvas free of charge.
Face-to-face learningPrerequisitesNot taught this semesterHBV103MSoftware MaintenanceElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe first part of the course is based on flipped-classroom style weekly reading, videos and assignments on:
- Evolution of Software and Lehman’s laws,
- Maintenance processes,
- Metrics useful for maintenance,
- Software analysis,
- Re-engineering,
- Reverse engineering,
- Code Smells & Refactoring,
- Basics of (Regression-)Testing,
- Design principles to support change & Design Patterns,
- Tools for software maintenance (including advanced features of an IDE).
In the second part of this course, these techniques will be applied in order to maintain a real legacy software written in Java.
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be advanced in their BSc. studies and you need solid Java programming experience: we will maintain a complex software and being able to understand how such a grown software works and to fix bugs is even more difficult to write such a software from scratch. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2. (It is impossible to maintain a software if you would not even be able to develop it.) Also, BSc. students should not take this course, if they know that they are going to continue with MSc. studies, because they might then experience a lack of suitable courses in their MSc. studies.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesNot taught this semesterHBV261LFinal projectElective course0Free elective course within the programme0 ECTS, creditsCourse DescriptionAn independent project under the direction of a member of the department of Computer Science.
Note that this course is mutually exclusive with the HBV004G, HBV502G and HBV603G internships.
Self-studyPrerequisitesPart of the total project/thesis creditsHBV301GRequirements EngineeringElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course introduces processes and tools for eliciting, analyzing, defining, validating, and managing software requirements. Students learn to work with different types of requirements, stakeholder roles, and practical techniques such as change management and conflict resolution. The course prepares students for further studies in software development and project work.
Face-to-face learningPrerequisitesIÐN102MComputational IntelligenceElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionIn designing intelligent systems, there is a need for autonomous systems that can learn to make good decisions from their own experience. This course introduces students to reinforcement learning—a computational approach in which systems automatically improve their performance through interaction and reward, without explicit instruction. The course covers Markov decision processes, dynamic programming, Monte Carlo methods, policy optimization, planning, search methods, and deep neural networks as function approximators. The curriculum combines theoretical discussion and project work, giving students the opportunity to model, analyze, and solve mathematical models for decision-making problems. Emphasis is also placed on the iterative process and on critical reflection regarding what it means for algorithms to learn and the impact that autonomous computational intelligence might have on science and society.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesIÐN103GEngineering ManagementElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe purpose of the course is to prepare students for working in technology-based firms and organizations. The course will give an overview of the management of firms and organizations, the role of engineers and the challenges they face. Students will learn about analysis tools used in decision making, interpret the results, and communicate both orally and in writing.
Face-to-face learningPrerequisitesIÐN301GAnalysis of Processes and SystemsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe aim of the course is to prepare students in analysing processes and systems. Description of processes are explained so that process analysis can be performed. Process discovery and their mapping is explained. Three ways of doing process discovery are explained: fact-based, interview-based and workshop-based. When processes are mapped they can be analyzed. The course will go through the qualitative methods of: value-stream-analysis, root-cause-analysis and risk analysis. The quantitative methods of: performance management, flow analysis, queuing theory and simulation will be explained. The later part of the course will be on systems and system analysis. System thinking will be explained and how systems can be used to describe the world. The system analysis methods of causal-loop-diagrams and stocks-and-flows will be explained. The course will conclude by simulating both processes and systems.
Face-to-face learningPrerequisitesIÐN502GEngineering EconomicsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe objective of the course is that students get the skills to:
1. Understand the main concepts in accounting, cost theory and investment theory.
2. Be able to use methods of measuring the economic feasibility of technical projects.
3. Be able to develop computer models to assess the profitability of investments, the value of companies and pricing of bonds
Among topics included are accounting, cost theory, cash flow analysis, investment theory, measures of profitability including net present value and internal rate of return, and the building of profitability models. The course ends with a group assignment where the students exercise the development of computer models for feasibility assessment of projects.
Face-to-face learningPrerequisitesCourse DescriptionThe course is an introductory course in project management. It introduces key concepts of project management and covers context and selection of projects, project planning, project monitoring, management of project teams, and project closure. Students create and execute project plans in groups. Special emphasis is on using of project management for managing technological innovation in organizations.
Face-to-face learningPrerequisitesIÐN510MLogistics & Environmental EngineeringElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course focuses on the principles of logistics and supply management and gives a broad introduction to the field. The course is divided into three topics primarily. It covers purchase operations of services and inventory management. This part is followed by looking into transportation and distribution management. Finally, the environmental impacts of logistics is studies and all the three parts put together into a view of sustainability. The course consists of lectures, exercises, game (the Beer Game) and a management simulation game to give hands on experience on logistics management,
Face-to-face learningPrerequisitesNot taught this semesterREI503MPerformance analysis of computer systemsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionUsually taught every second year.
This course provides students with an introduction to modeling and performance evaluation of computer and communication systems. Large-scale distributed computer systems process arriving requests, e.g., web page queries, in parallel in order to optimize performance metrics, such as response time and user satisfaction. Other important performance metrics include throughput and service-level agreement in general. This course covers basic mathematical tools needed to evaluate such dynamic systems and to understand the strengths and weaknesses, for example, in different designs, scheduling disciplines, and operating policies. The approach is based on operations research methods, in particular, queueing theory and Markov processes (previous knowledge of these methods is not required).
Attendance is strongly recommended.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesREI504MCloud Computing and Big DataElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionOverview of high performance computing (HPC) and “Big Data”, HPC environments with computing, network and storage resources, overview of parallel programming. Storage infrastructures and services for Big Data, Big Data analytics, the map-reduce paradigm, structured and unstructured data. Practical exercises: (A) Students will use the Amazon Web Services (AWS) cloud or equivalent to set up a multi-computer web service and an associated multi-computer testing application. (B) Students will get hands on experience of processing large data sets using map-reduce techniques with AWS.
Face-to-face learningPrerequisitesCourse DescriptionGroups, examples and basic concepts. Symmetry groups. Homomorphisms and normal subgroups. Rings, examples and basic concepts. Integral domains. Ring homomorphisms and ideals. Polynomial rings and factorization of polynomials. Special topics.
Face-to-face learningPrerequisitesSTÆ310MTheory of linear modelsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionSimple and multiple linear regression, analysis of variance and covariance, inference, variances and covariances of estimators, influence and diagnostic analyses using residual and influence measures, simultaneous inference. General linear models as projections with ANOVA as special case, simultaneous inference of estimable functions. R is used in assignments. Solutions to assignments are returned in LaTeX and PDF format.
In addition selected topics will be visited, e.g. generalized linear models (GLMs), nonlinear regression and/or random/mixed effects models and/or bootstrap methods etc.
Students will present solutions to individually assigned
projects/exercises, each of which is handed in earlier through a web-page.This course is taught in semesters of even-numbered years.
Face-to-face learningOnline learningThe course is taught if the specified conditions are metPrerequisitesSTÆ312MApplied Linear Statistical ModelsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course focuses on simple and multiple linear regression as well as analysis of variance (ANOVA), analysis of covariance (ANCOVA) and binomial regression. The course is a natural continuation of a typical introductory course in statistics taught in various departments of the university.
We will discuss methods for estimating parameters in linear models, how to construct confidence intervals and test hypotheses for the parameters, which assumptions need to hold for applying the models and what to do when they are not met.
Students will work on projects using the statistical software R.
Face-to-face learningPrerequisitesSTÆ511MNumerical Linear AlgebraElective course8Free elective course within the programme8 ECTS, creditsCourse DescriptionIterative methods for linear systems of equations. Decompositions of matrices: QR, Cholesky, Jordan, Schur, spectral and singular value decomposition (SVD) and their applications. Discrete Fourier transform (DFT) and the fast Fourier transform (FFT). Discrete cosine transform (DCT) in two-dimensions and its application for the compression of images (JPEG) and audio (MP3, AAC). Sparse matrices and their representation.
Special emphasis will be on the application and implementation of the methods studied.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesCourse DescriptionGraphs, homomorphisms and isomorphisms of graphs. Subgraphs, spanning subgraphs. Paths, connected graphs. Directed graphs. Bipartite graphs. Euler graphs and Hamilton graphs; the theorems of Chvátal, Pósa, Ore and Dirac. Tournaments. Trees, spanning trees, the matrix-tree theorem, Cayley's theorem. Weighted graphs, the algorithms of Kruskal and Dijkstra. Networks, the max-flow-min-cut theorem, the algorithm of Ford and Fulkerson, Menger's theorem. Matchings, Berge's theorem, Hall's marriage theorem, the König-Egerváry theorem, the Kuhn-Munkres algorithm. Inseparable and two-connected graphs. Planar graphs, Euler's formula, Kuratowski's theorem, dual graphs. Embeddings of graphs in surfaces, the Ringel-Youngs-Mayer theorem. Colourings, Heawood's coloring theorem, Brooks's theorem, chromatic polynomial; edge colourings, Vizing's theorem.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesTÖL103MProgramming Projects on Internet of ThingsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course offers a hands-on introduction to programming small devices (microcontrollers, single-board computers) used in the context of Internet of Things, sensor networking, and home automation.
Such devices are often equipped with a large number of I/O pins, some RAM and flash memory, and wireless communication capabilities (e.g. WiFi and/or Bluetooth), making them attractive for tasks involving data acquisition,
processing, and wireless communication.The course consists of bi-weekly programming tasks dealing with serial communication, data acquisition and analysis, programming of real-time O/S (RTOS), wireless communication and TCP/IP client-servers paradigm.
The biweekly assignments lead to a final project.
Face-to-face learningPrerequisitesNot taught this semesterTÖL105MComputer GraphicsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe main emphasis is on fundamental concepts and mathematics for 3D computer graphics. Two and three-dimensional transformations. Viewing projections. Light and the shading of objects. Texture mapping, blending, bump maps. Programmable shaders. Curves and surfaces. Programming assignments in WebGL.
Face-to-face learningPrerequisitesCourse DescriptionBasis in building web projects, focusing on the frontend: HTML, CSS and JavaScript. Standards, practices and what it takes to create a good site. Design, layout and working with design documents. Programming in the interpreted programming language JavaScript, working with the browser and tools related to that. HTTP standard introduced. Projects focus on creating web sites that use what has been taught.
Face-to-face learningPrerequisitesTÖL305GComputer Networks and SecurityElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe foundations of computer networks with emphasis on the TCP/IP protocol. Analysis and design of computer networks. Hardware and software used in computer networks. Implementation and maintenance of computer networks. Security systems for computer networks.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesNot taught this semesterTÖL308GComputer Game ProgrammingElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionAn introduction to the core techniques and concerns related to programming computer games. Questions of frame-rate control, object-management, determinism, memory-management and runtime performance will be addressed. The focus will be on “engine-level” facilities. The principles behind multiplayer networked games will be explored. Examples will be drawn from simple 2D games such as “Asteroids” and “Pac-Man”, but the emphasis will be on general principles which also apply to sophisticated, cutting-edge, modern games software.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesTÖL309GComputer organization and programmingElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course covers the internal structure of computers and how programmers should construct their programs to take advantage of that. The programming language C will be introduced, especially its use of pointers and memory usage. Data representation for integers and floating point numbers. Programming in x86-64 assembly language. In particular how constructs in C are implemented in x86-64 assembly language. Memory hierarchy and its effects on program performance. Exceptional control flow in programs. Virtual memory. Concurrent programming.
Face-to-face learningPrerequisitesNot taught this semesterTÖL501GFrom an Idea to RealityElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course has been in development for over a decade under the name "Computer Systems and Marketing".
The course is based on teacher lectures and individual and group projects that help students to think outside the box. Teacher will tell of his experiences of making ideas become real and have a special focus on the mistakes that have been made along with the successful stories.
The final project of the course is a business plan that will be presented in an oral final exam. The business plan focuses on the idea of each student and how the student plans to realize his project.Face-to-face learningPrerequisitesTÖL502MHuman Computer InteractionElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionUsually taught every second year.
The objective of the course is to allow students to examine more closely than is done in the introductory course Graphical User Interface Programming HBV201G specific factors of HCI. The factors covered are user interface design using prototyping, programming of smart devices and users‘ acceptability of the software. There will be emphasis on different techniques and tools to develop prototypes. Also, on the design of user interfaces and native programming for smart phones or pads. The development process will be aimed at ensuring accessibility and acceptability of users. Students work on small projects individually, or on larger projects in groups.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesCourse DescriptionUsually taught every second year.
This course covers concepts of distributed systems and their application. Besides foundations on characteristics and models of distributed systems, networking and security, this includes network-based low-level interprocess communication, high-level remote procedure calls, the distributed object model and remote method invocation, services relevant in distributed systems (such as name services or distributed file systems), selected topics of distributed algorithms and their implementation (such as coordination, agreement, time, replication). Furthermore, special types of distributed systems may be covered (such as peer-to-peer systems, Cloud and Grid computing). Current technologies (such as Java RMI, Web Services, gRPC) are used as case study and as platform for developing distributed applications using high-level programming languages (such as Java).
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be advanced in their BSc. studies. (E.g. we will implement middleware in Java, so you should have programming experience well beyond "TÖL101G Computer Science 1". As a middleware adds functionality on top of an Operating System, you should have also passed TÖL401G Operating Systems.)
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesTÖL506MIntroduction to deep neural networksElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionIn this course we cover deep neural networks and methods related to them. We study networks and methods for image, sound and text analysis. The focus will be on applications and students will present either a project or a recent paper in this field.
Face-to-face learningPrerequisitesMFR715MTheory of Creative AI: Analysing the Impact of AI on Creative WorkElective course10Free elective course within the programme10 ECTS, creditsCourse DescriptionThis course explores the evolving relationship between artificial intelligence and creative practices, focusing on the artistic, philosophical, ethical, and socio-cultural dimensions of AI-driven creativity. Grounded in the humanities, with emphasis on creativity studies, the course will enable students to critically assess how generative AI is reshaping traditional notions of creativity, authorship, and artistic production. Having explored key definitions of creativity itself, the course covers key issues such as the automation of creative work, the implications of AI-generated content for intellectual property and copyright, and the ethical dilemmas surrounding cultural appropriation in the digital age. Students will engage with debates on the tension between industrial AI big-data-driven systems versus small-data approaches, examining the consequences for artistic innovation and originality. Through hands-on exercises and real-world case studies, students will explore a variety of creative works, study production platforms where AI technologies are used, and gain practical experience in the application of AI for creative purposes. The course integrates modern theories of creativity with critical analysis of AI, and it will challenge students to rethink the boundaries of human and machine creativity. Course assessment will be based on creative work diaries that students will keep during the course, active participation in class, as well as an oral presentation of a short, written piece.
Face-to-face learningDistance learningPrerequisitesNot taught this semesterTÖV605MMachine Learning for Earth Observation powered by SupercomputersElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course exposes the students to the physical principles underlying satellite observations of Earth by passive sensors, as well as parallel Deep Learning (DL) algorithms that scale on High Performance Computing (HPC) systems.
For the different theoretical concepts (represented by 4 modules), the course provides hands-on exercises. These exercises are part of a project in the context of Remote Sensing (RS) image classification that the students are asked to develop during the whole duration of the course.
Face-to-face learningDistance learningPrerequisitesTÖL029MIntroduction to Information SecurityElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course provides the foundation for understanding the key issues associated with protecting information assets, determining the levels of protection and response to security incidents, and designing a consistent, reasonable information security system, with appropriate intrusion detection and reporting features. The purpose of the course is to provide the student with an overview of the field of information security and assurance. Students will be exposed to the spectrum of security activities, methods, methodologies, and procedures. Coverage will include inspection and protection of information assets, detection of and reaction to threats to information assets, and examination of pre- and post-incident procedures, technical and managerial responses and an overview of the information security planning and staffing functions. Topics include risk assessment, authentication, securing web, application security, privacy and data protection, introduction to cryptography, security architecture, firewalls and other devices and network topologies.
Face-to-face learningPrerequisites- Spring 2
TÖV606MMachine Learning for Earth Observation powered by SupercomputersElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course offers an advanced exploration of machine learning and high-performance computing (HPC) techniques tailored to satellite remote sensing and Earth observation (EO). Starting with the historical evolution of Earth observation—from early aerial photography to today’s high-throughput satellite constellations such as Sentinel and Landsat—the curriculum situates modern EO within the context of an unprecedented “big data” era, driven by terabytes of imagery captured daily.
Building on foundational concepts in traditional pixel-based analysis, students will progress to contemporary approaches that leverage the deep learning revolution and the emergence of AI foundation models. These models employ self-supervised learning and Transformer-based architectures to extract structure and meaning from vast amounts of unlabeled data at scale. The course emphasizes how these advanced machine learning paradigms are reshaping EO data analytics beyond classical handcrafted methods.
A core theme of the semester is the intersection of large-scale machine learning and HPC. Students will examine how modern supercomputers enable the training and deployment of Geospatial AI foundation models for Earth observation. This includes discussions on distributed training, parallel algorithm design, and performance optimization on HPC infrastructures. The course also covers benchmarking and performance evaluation, introducing students to standardized evaluation frameworks and metrics to assess model scalability, efficiency, and accuracy in real-world Earth observation applications.
To integrate theory and practice, students complete a semester-long capstone project. Through hands-on development with Python APIs and open models, students will design, implement, and evaluate machine learning solutions on real EO datasets. Projects reinforce the application of theoretical concepts to practical problems, preparing students for research or industry roles at the forefront of AI for EO.
Face-to-face learningPrerequisitesTÖL025MIntroduction to language technologyElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course may be taught in English if requested.
In this course we will cover the basics of language technology with emphasis on the analysis and processing of written language. This includes the core subjects of language technology as well as their use in everyday life. We will present tools and corpora used within the field and specifically touch on how language technology is used for Icelandic.
The course emphasizes methods that make use of word embeddings, deep neural networks and language models for practical assignments and we will talk about how methods involving artificial intelligence have almost completely taken over the processing of human language.
In this course there are 6 homework assignments that are worth 60% of the final grade as well as a larger final assignment that is worth 40%. For students that turn in a minimum amount of in-class assignments, the weight of the homework assignments will drop to 55%.
Face-to-face learningPrerequisitesSAG448GEpisodes from the history of philosophy of scienceElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course aims to introduce students to the nature and development of science by examining episodes of its history and by disucssing recent theories concerning the nature, aims, and development of science. A special emphasis will be placed on the history of physical science from Aristotle to Newton, including developments in astronomy during the scientific revolution of the 16th and 17th century. We will also specifically examine the history of Darwin’s theory of evolution by natural selection. These episodes and many others will be viewed through the lens of various theories of scientific progress, and through recent views about interactions between science and society at large. The course material may change depending on the students’ interest.
Face-to-face learningPrerequisitesHBV506MSecure Software EngineeringElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionSecure software engineering involves identifying and mitigating vulnerabilities to reduce threats to an application. In this module, students will gain an understanding of secure engineering practices and the means to apply them throughout the complete software development life cycle.
Working in teams, students will design, develop, and maintain a web application for a customer following secure software engineering principles. Students will illustrate their understanding and practical competency of white box and black box (i.e. penetration testing) security assessment through testing their own and other teams' applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.
It is therefore assumed that the students have knowledge in web application development, e.g. using JavaScript. Some example code and learning resources will be provided.
Additionally, students will need an appropriate penetration testing laboratory and have attained beginner proficiency in penetration testing tools and techniques. Therefore, having previously studied TÖL605M - Fundamentals of Ethical Hacking is required for this course. Students who have not studied this course but believe they meet these requirements should contact the tutor for a small assessment.Face-to-face learningPrerequisitesTÖL028MSeminar on Machine LearningElective course2Free elective course within the programme2 ECTS, creditsCourse DescriptionIn this course, students familiarize themselves with a particular topic in artificial intelligence (e.g. computer vision, natural language processing, data processing, generative modeling or other topics) by studying relevant academic literature and preparing a talk on this topic for their classmates.
Students can choose from a selection of topics provided by the teacher, or propose a topic that they are interested in on their own.
Besides learning about the subject matter of the talks, the goal of the course is to practice presentation skills.
The course starts on June 8th and will finish on August 17th.
Face-to-face learningPrerequisitesTÖL606MSeminar in computer scienceElective course2Free elective course within the programme2 ECTS, creditsCourse DescriptionStudents in computer science, software engineering and computational engineering attend weekly seminars where they present talks on their research projects or other related topics of interest.
Face-to-face learningPrerequisitesCourse DescriptionTeaching takes 12 weeks. Charge and electric field. Gauss' law. Electric potential. Capacitors and dielectrics. Electric currents and resistance. Circuits. Magnetic fields. The laws of Ampère and Faraday. Induction. Electric oscillation and alternating currents. Maxwell's equations. Electromagnetic waves. Reflection and refraction. Lenses and mirrors. Wave optics. Four laboratory exercises in optics and electromagnetism.
Face-to-face learningPrerequisitesCourse DescriptionThis course covers testing of software. Besides basic foundations, this includes both dynamic testing where the software under test is executed and static approaches where software and other artefacts produced during software development are investigated without executing them. The focus of this course is, however, on dynamic testing. The different levels of testing (component test, integration test, system and acceptance test) and types of testing (functional, non-functional, structural and change-related) are covered as well as different test design techniques (black box test and white box test). Furthermore, test management and principles of test tools are discussed. In addition, selected advanced topics may be covered (for example, test languages, testing of object-oriented software, test process improvement, agile testing). The covered topics are a superset of the International Software Testing Qualifications Board's (ISTQB) certified tester foundation level syllabus.
The first part of the course is based on flipped-classroom style weekly reading, videos and assignments. In the second part, students work independently on some project related to software testing.
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be very advanced in their BSc. studies, i.e. have experience in programming languages, software development and applying it in some software project, but should also be familiar with theoretical concepts from automata theory.
Also, BSc. students should not take this course, if they know that they are going to continue with MSc. studies, because they might then experience a lack of suitable courses in their MSc. studies.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesCourse DescriptionContinuation of web programming I, backend programming in node.js, writing and connecting to web services and connections to databases. Frontend libraries/frameworks used to setup a frontend project (React, Ember, Vue). Security issues that need to be considered when writing for the web. Projects focus on creating web sites that use what has been taught.
Face-to-face learningPrerequisitesHBV404GIndustrial Software EngineeringElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course covers legal and economic aspects of software engineering and software project management.
Through lectures, guest talks, work on practical projects and seminar elements, the course will consider business models for the development and/or operation of software, introduce strategies for software estimation, risk management and pricing, explain models for software licensing, and discuss aspects of ethics, privacy and security in software.
New mandatory course - first taught in 2023-2024.
Face-to-face learningPrerequisitesCourse DescriptionThe aim of this course is for students to be able to develop software systems and to participate in and reflect on software development projects. Thus, the course contains a development project that is performed in groups as its main component. Teaching is project-driven, and focuses on topics that are relevant in later phases of software development: quality assurance, installation, maintenance and evolution as weel as covers topics from HBV501G Software Project 1 in more detail. The project was started in HBV501G Software Project 1 and continued in this course.
Face-to-face learningPrerequisitesHBV603GInternship in computer science and software engineering - undergraduateElective course24Free elective course within the programme24 ECTS, creditsCourse DescriptionThe objective is to ensure vocational training under the professional guidance of experienced managers at companies or public institutions related to computer science or software engineering.
Role of student
• Work on one major task
• A student is in a 5-month internship from beginning of January until beginning of June.
A student may not take a final assignment (TÖL261L or HBV261L)Student's tasks
These include questionnaire analysis, application design, programming, software testing, installation and operation of computer systems. The project must be in computer science or software engineering and try the knowledge and skills acquired by the student in the course. The final product of vocational training must be defined in the project description, ie. what final report should contain. Supervisory teacher of vocational education must approve a proposal for a project.
Role of an organization
• A company provides a student with a workplace and appoints a supervisor within an organization that monitors his work.
• A student is an employee of an enterprise and pays a student's remuneration company according to a further agreement therein.
• At the beginning of vocational training lies the assignment of the student. Project description must be accompanied by a contract.
• The supervisor and student meet regularly and evaluate the progress of projects.
Completion of vocational training
• At the end of the working hours, return to the supervising teacher:
1. Student's final report (as defined in the project description). In the case of a 24 ECTS course, the student shall submit a mid-term report on the internship.
2. A student's book kept during vocational training. The diary shall include a weekly summary indicating each project of the week and the amount of time spent on individual projects.
3. Confirmation by the supervisor of the student's attendance and project work at the end of the practical training.
• The course is not considered complete until both the supervisory teacher of the vocational education and the supervisor of the practical training believe that satisfactory results have been achieved and the final and final reports have been submitted.Note that this course is mutually exclusive with the HBV004G and HBV502G internships and the HBV261L final project.
PrerequisitesAttendance required in classIÐN201GOperations in OrganizationsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe goal with this course is to prepare students to approach organisations as sequence of operations. Organisations will be described as a group of operations that produce value adding work. Companies will be visited and students will describe their workings as operations sequences. Methods to describe operations, to analyse operations and to present operation sequences will be introduced and trained. Students will be introduced to methods of describing, analysing and presenting operations overview. At course end students should be able to use these methods for both descriptions and analysis and then interpret their results to present both orally and in writing.
Face-to-face learningPrerequisitesCourse DescriptionSimulation techniques and system modelling find application in fields as diverse as physics, chemistry, biology, economics, medicine, computer science, and engineering. The purpose of this course is to introduce fundamental principles and concepts in the general area of systems modelling and simulation. Topics to be covered in this course are discrete event simulation, statistical modelling, and simulation modelling design, experimental design, model testing and interpretation of simulation results. The maximum likelihood estimation of probability distributions base on real data is presented. The course will also introduce the generation of random variates and testing. Fundamental programming of simulation models in C is covered and specialized simulation packages introduced. The students will complete a real world simulation project where the emphasis will be on manufacturing or service systems.
Face-to-face learningPrerequisitesIÐN405GDesign & Experimental ExecutionElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe purpose of the course is to train an engineering approach to experiments and experimental thinking. Experiments are designed, carried out, data collected and processed using statistical methods. Finally, it discussed how conclusions can be drawn from data / information when using experiments in for example product design and the design and operation of production systems.
Course material: Linear and non-linear regression analysis. Analysis of Variances (ANOVA). Design of experiments. Statistical quality control. Non-parametric tests that can be used in data processing. Use of statistical programs when solving tasks.
Face-to-face learningPrerequisitesLVF601MIntroduction to Systems BiologyElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionSystems biology is an interdisciplinary field that studies the biological phenomena that emerge from multiple interacting biological elements. Understanding how biological systems change across time is a particular focus of systems biology. In this course, we will prioritize aspects of systems biology relevant to human health and disease.
This course provides an introduction to 1) basic principles in modelling molecular networks, both gene regulatory and metabolic networks; 2) cellular phenomena that support homeostasis like tissue morphogenesis and microbiome resilience, and 3) analysis of molecular patterns found in genomics data at population scale relevant to human disease such as patient classification and biomarker discovery. In this manner, the course covers the three major scales in systems biology: molecules, cells and organisms.
The course activities include reading and interpreting scientific papers, implementation of computational algorithms, working on a research project and presentation of scientific results.
Lectures will comprise of both (1) presentations on foundational concepts and (2) hands-on sessions using Python as the programming language. The course will be taught in English.
Face-to-face learningPrerequisitesREI202GIntroduction to data scienceElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course provides an introduction to the methods at the heart of data science and introduces widely used software tools such as numpy, pandas, matplotlib and scikit-learn.
The course consists of 6 modules:
- Introduction to the Python programming language.
- Data wrangling and data preprocessing.
- Exploratory data analysis and visualization.
- Optimization.
- Clustering and dimensionality reduction.
- Regression and classification.
Each module concludes with a student project.
Note that there is an academic overlap with REI201G Mathematics and Scientific Computing and both courses cannot be valid for the same degree.
Face-to-face learningPrerequisitesREI204MHigh Performance ComputingElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionDesign of parallel computers and parallel programming models. Shared memory architecture. Message passing and distributed memory architecture. Parallel programming of computer clusters using MPI and multicore programming using OpenMP. Parallel algorithms for sorting, searching, linear algebra, and various graph problems.
Course topics will be very similar like HPC in Fall 2019:
http://www.morrisriedel.de/hpc-course-fall-2019Positioning in the Field of High-Performance Computing (HPC)
- Consists of techniques for programming & using large-scale HPC Systems
- Approach: Get a broad understanding of what HPC is and what can be done
- Goal: Train general HPC techniques and systems and selected details of domain-specific applications
Course Motivation
Parallel processing and distributed computing
- Matured over the past three decades
- Both emerged as a well-developed field in computer science
- Still a lot of innovation, e.g. from hardware/software
‘Scientific computing‘ with Maple, Matlab, etc.
- Performed on small (‘serial‘) computing machines like Desktop PCs or Laptops
- An increasing number of cores enables ‘better scientific computing‘ today
- Good for small & fewer complex applications, quickly reach memory limits
‘Advanced scientific computing‘
- Used with computational simulations and large-scale machine & deep learning
- Performed on large parallel computers; often scientific domain-specific approaches
- Use orders of magnitude multi-core chips & large memory & specific many-core chips
- Enables ‘simulations of reality‘ - often based on known physical laws and numerical methods
Face-to-face learningPrerequisitesCourse DescriptionIn this course, we study the AI lifecycle, i.e. the productionisation of AI methods.
We explore the following parts of the lifecycle:
- Data collection and preparation
- Feature engineering
- Model training
- Model evaluation
- Model deployment
- Model serving
- Model monitoring
- Model maintenance
Three large projects will be handed out during the semester where students compete to solve AI problems.Face-to-face learningPrerequisitesSTÆ401GMathematical Analysis IVElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionAim: To introduce the student to Fourier analysis and partial differential equations and their applications.
Subject matter: Fourier series and orthonormal systems of functions, boundary-value problems for ordinary differential equations, the eigenvalue problem for Sturm-Liouville operators, Fourier transform. The wave equation, diffusion equation and Laplace's equation solved on various domains in one, two and three dimensions by methods based on the first part of the course, separation of variables, fundamental solution, Green's functions and the method of images.Face-to-face learningPrerequisitesCourse DescriptionThe design of programming languages. The structure and design of compilers. Lexical analysis. Top down and bottom up parsing. Code generation. Each student writes his or her own compiler.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesCourse DescriptionThis course covers concepts of operating systems. Besides foundations on computer hardware structures and general operating system architectures, this includes concepts of processes and threads and their management, principles of scheduling and scheduling algorithms, communication and synchronisation between processes and deadlock issues, principles of memory management including virtual memory and page replacement algorithms, file systems and their implementation as well as mass-storage management. If time allows, principles for achieving protection and security, and aspects of distribution (e.g. concepts of distributed systems and distributed file systems) are covered as well. This course does not deal with details of implementing operating systems, but introduces generic concepts that are used when implementing operating systems and that an application developer needs to know, when creating an application program. Where appropriate, current operating systems such as Microsoft Windows and POSIX-compliant UNIX-like systems (e.g. Linux) are used as case study for implementation and offered system calls. The usage of operating system services from within high-level programming languages (e.g. C, C++ or Java) is demonstrated based on Application Programming Interfaces (APIs) offered by prevailing system libraries.
Face-to-face learningPrerequisitesNot taught this semesterTÖL602GComputer Science Seminar for UndergraduatesElective course2Free elective course within the programme2 ECTS, creditsCourse DescriptionIn this course, students familiarize themselves with a particular topic in computer science (e.g. an engineering technique, a computational problem, a programming language etc.) by studying relevant academic literature and preparing a talk on this topic for their classmates. Students can chose from a selection of topics provided by the teacher, or propose a topic that they are interested in on their own. Besides learning about the subject matter of the talks, a goal of the course is to practice presentation skills.
Face-to-face learningPrerequisitesNot taught this semesterTÖL602MFrom an idea to reality IIElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course is a continuation of the course "From an idea to reality". Students are expected to continue to develop their idea that they had in the "From an Idea to Reality" course. If the students are not satisfied with their previous idea and think they have come up with a better idea, that's fine, and if the teacher is satisfied with the new idea the student can continue with the new idea.
Students must apply for grants in the competition fund. Practice pitching your idea to potential investors and your fellow students.
The teacher will cover accounting and planning based on probability.
The teacher will cover company formation and tax matters.
Face-to-face learningPrerequisitesTÖL604MAlgorithms in BioinformaticsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course will cover the algorithmic aspects of bioinformatic. We will start with an introduction to genomics and algorithms for students new to the field. The course is divided into modules, each module covers a single problem in bioinformatics that will be motivated based on current research. The module will then cover algorithms that solve the problem and variations on the problem. The problems covered are motif finding, edit distance in strings, sequence alignment, clustering, sequencing and assembly and finally computational methods for high throughput sequencing (HTS).
Face-to-face learningPrerequisitesTÖL607GCompetitive programmingElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course will provide students with the skills needed to solve computational problems that frequently appear in programming competitions. Such skills are highly useful in various programming tasks, in other courses and in job interviews. An overview of the main algorithms and techniques will be given. This includes algorithms for graphs, strings, computational geometry and counting techniques. The students will spend most of their time programming solutions to contest problems.
Face-to-face learningPrerequisitesSecond year- Fall
- STÆ104GMathematical Analysis IMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse Description
This is a foundational course in single variable calculus. The prerequisites are high school courses on algebra, trigonometry. derivatives, and integrals. The course aims to create a foundation for understanding of subjects such as natural and physical sciences, engineering, economics, and computer science. Topics of the course include the following:
- Real numbers.
- Limits and continuous functions.
- Differentiable functions, rules for derivatives, derivatives of higher order, applications of differential calculus (extremal value problems, linear approximation).
- Transcendental functions.
- Mean value theorem, theorems of l'Hôpital and Taylor.
- Integration, the definite integral and rules/techniques of integration, primitives, improper integrals.
- Fundamental theorem of calculus.
- Applications of integral calculus: Arc length, area, volume, centroids.
- Ordinary differential equations: First-order separable and homogeneous differential equations, first-order linear equations, second-order linear equations with constant coefficients.
- Sequences and series, convergence tests.
- Power series, Taylor series.
Face-to-face learningPrerequisitesSTÆ107GLinear AlgebraMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionBasics of linear algebra over the reals.
Subject matter: Systems of linear equations, matrices, Gauss-Jordan reduction. Vector spaces and their subspaces. Linearly independent sets, bases and dimension. Linear maps, range space and nullk space. The dot product, length and angle measures. Volumes in higher dimension and the cross product in threedimensional space. Flats, parametric descriptions and descriptions by equations. Orthogonal projections and orthonormal bases. Gram-Schmidt orthogonalization. Determinants and inverses of matrices. Eigenvalues, eigenvectors and diagonalization.Face-to-face learningPrerequisitesTÖL101GComputer Science 1Mandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionNote: Only one course of either TÖL101G Tölvunarfræði 1 or TÖL105G Tölvunarfræði 1a can count towards the BS degree.
The Java programming language is used to introduce basic concepts in computer programming: Expressions and statements, textual and numeric data types, conditions and loops, arrays, methods, classes and objects, input and output. Programming and debugging skills are practiced in quizzes and projects throughout the semester.
Face-to-face learningPrerequisitesTÖL104GDiscrete mathematicsMandatory (required) course8A mandatory (required) course for the programme8 ECTS, creditsCourse DescriptionPropositions, predicates, inference rules. Set operations and Boolean algebra. Induction and recursion. Basic methods of analysis of algorithms and counting. Simple algorithms in number theory. Relations, their properties and representations. Trees and graphs and related algorithms. Strings, examples of languages, finite automata and grammars.
Face-to-face learningPrerequisitesTÖL109G, TÖL110GDigital literacy 1Mandatory (required) course2A mandatory (required) course for the programme2 ECTS, creditsCourse DescriptionThis is a sister course of Computer literacy 2. The Unix operating system is introduced. The file system organization, often used command-line programs, the window system, command-line environment, and shell scripting. We cover editors and data wrangling in the shell as well as the typesetting system Latex.
Online learningSelf-studyPrerequisitesTÖL109G, TÖL110GDigital literacy 2Mandatory (required) course2A mandatory (required) course for the programme2 ECTS, creditsCourse DescriptionThis is a sister course of Computer literacy 1. We present version control systems (git), debugging methods, and methods to build software. Common concepts in the field of cryptography are introduced as well as concepts related to virtualization and containers.
Online learningSelf-studyPrerequisites- Spring 2
HBV201GGraphical User Interface ProgrammingRestricted elective course8Restricted elective course, conditions apply8 ECTS, creditsCourse DescriptionIn this course, students will get training in programming graphical user interfaces in Java and learn about the main steps in software development projects, from ideation to testing. Emphasis is placed on students acquiring more excellent proficiency in programming larger projects than in introductory programming courses (such as TÖL101G), being able to design interactive user interfaces, program them, and test them. This includes students becoming familiar with large software libraries (here, JavaFX) and using them. Additionally, students should be able to read, understand, and implement instructions on functionality, including interactivity. Students will be introduced to the design process, which consists of five stages: understanding the task, brainstorming ideas and interactivity, selecting and defining, programming a prototype, and testing and iterating. Insight is provided into user-centered development, interactive design, prototypes, and user testing.
The course will prepare students for courses such as Software Development and Software Projects 1 and other classes where students need to program. It is also a good foundation for courses like TÖL502M Human-Computer Interaction.Face-to-face learningPrerequisitesAttendance required in classTÖV201GDigital Circuit Design and AnalysisRestricted elective course6Restricted elective course, conditions apply6 ECTS, creditsCourse DescriptionStudents will learn digital design principles and practice. Design is based on standard MSI and LSI devices or equivalent building blocks such as counters, shift registers, adders, and ROM. The design and analysis of combinatorial circuits for basic arithmetic is emphasized as well as the design an analysis of synchronous and asynchronous sequential circuits. Students will design circuits using basic building blocks such as flip flops and latches. Design and analysis of clocked sequential circuits based on Moore and Mealy FSM is emphasized. Introduction to Verilog HDL and FPGA in the design of as it applies to the previously described basic digital circuits. Students are required to complete 7 lab projects using FPGA. Students will also finish selected set of lab exercises using breadboards to contrast the state of the art design principles with classical principles. Students will work in teams to design and simulate digital circuits using a state-of-the-art CAD package. Both schematic and VHDL-based designs are emphasized.
Course Objective: Students will understand classical digital design principles and gain experience in using state of the art design tools.Classes: Lectures 2 x 75 minutes, lab 1 x 120 minutes per week.
Co-requisites: Digital Circuits and Analysis lab
Face-to-face learningPrerequisitesREI202GIntroduction to data scienceMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThe course provides an introduction to the methods at the heart of data science and introduces widely used software tools such as numpy, pandas, matplotlib and scikit-learn.
The course consists of 6 modules:
- Introduction to the Python programming language.
- Data wrangling and data preprocessing.
- Exploratory data analysis and visualization.
- Optimization.
- Clustering and dimensionality reduction.
- Regression and classification.
Each module concludes with a student project.
Note that there is an academic overlap with REI201G Mathematics and Scientific Computing and both courses cannot be valid for the same degree.
Face-to-face learningPrerequisitesSTÆ203GProbability and StatisticsMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionBasic concepts in probability and statistics based on univariate calculus.
Topics:
Sample space, events, probability, equal probability, independent events, conditional probability, Bayes rule, random variables, distribution, density, joint distribution, independent random variables, condistional distribution, mean, variance, covariance, correlation, law of large numbers, Bernoulli, binomial, Poisson, uniform, exponential and normal random variables. Central limit theorem. Poisson process. Random sample, statistics, the distribution of the sample mean and the sample variance. Point estimate, maximum likelihood estimator, mean square error, bias. Interval estimates and hypotheses testing form normal, binomial and exponential samples. Simple linear regression. Goodness of fit tests, test of independence.Face-to-face learningPrerequisitesSTÆ205GMathematical Analysis IIMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionOpen and closed sets. Mappings, limits and continuity. Differentiable mappings, partial derivatives and the chain rule. Jacobi matrices. Gradients and directional derivatives. Mixed partial derivatives. Curves. Vector fields and flow. Cylindrical and spherical coordinates. Taylor polynomials. Extreme values and the classification of stationary points. Extreme value problems with constraints. Implicit functions and local inverses. Line integrals, primitive functions and exact differential equations. Double integrals. Improper integrals. Green's theorem. Simply connected domains. Change of variables in double integrals. Multiple integrals. Change of variables in multiple integrals. Surface integrals. Integration of vector fields. The theorems of Stokes and Gauss.
Face-to-face learningPrerequisitesTÖL203GComputer Science 2Mandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThe programming language Java will be used in the course. Various data structures, algorithms and abstract data types will be covered. Among the data types and structures covered are lists, stacks, queues, priority queues, trees, binary trees, binary search trees and heaps along with related algorithms. Various search and sort algorithms will be covered. Algorithms will be analysed for their space and time complexity. There will be programming assignments in Java using the given data structures and algorithms. There will be many small assignments.
Face-to-face learningPrerequisites- Fall
- STÆ302GMathematical Analysis IIIMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse Description
Functions of a complex variable. Analytic functions. The exponential function, logarithms and roots. Cauchy's Integral Theorem and Cauchy's Integral Formula. Uniform convergence. Power series. Laurent series. Residue integration method. Application of complex function theory to fluid flows. Ordinary differential equations and systems of ordinary differential equations. Linear differential equations with constant coefficients. Systems of linear differential equations. The matrix exponential function. Various methods for obtaining a particular solution. Green's functions for initial value problems. Flows and the phase plane. Nonlinear systems of ordinary differential equations in the plane, equilibrium points, stability and linear approximations. Series solutions and the method of Frobenius. Use of Laplace transforms in solving differential equations.
Face-to-face learningPrerequisitesTÖL301GFormal Languages and ComputabilityMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionFinite state machines, regular languages and grammars, push-down automata, context-free languages and grammars, Turing machines, general languages and grammars, and their basic properties. Recursive and recursively enumerable languages, reduction between languages, connection to decision problems and proving unsolvability of such problems. The complexity classes P and NP, and NP-completeness. Examples of various models of computation.
Face-to-face learningPrerequisitesTÖL303GData Base Theory and PracticeMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionDatabases and database management systems. Physical data organization. Data modelling using the Entity-Relationship model and the Relational model. Relational algebra and calculus. The SQL query language. Design theory for relational data bases, functional dependencies, decomposition of relational schemes, normal forms. Query optimization. Concurrency control techniques and crash recovery. Database security and authorization. Data warehousing.
Face-to-face learningPrerequisitesTÖL304GProgramming LanguagesMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionAn introduction to the most common types of programming languages. Block structured languages, list processing languages, object oriented programming. Describing programming languages, compilers and interpreters. The internal structure of block structured programming languages.Modular programming . Functions and subroutines, parameter passing. Memory management, garbage collection. The programming languages Scheme, CAML, Java, Morpho, C++ and Haskell will be considered. Object oriented programming languages. Objects and inheritance. Grammars, the structure of compilers. Modular programming will be emphasised (especially generic modules), as well as list processing, functional programming and block structure.
Face-to-face learningPrerequisitesTÖL309GComputer organization and programmingMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThe course covers the internal structure of computers and how programmers should construct their programs to take advantage of that. The programming language C will be introduced, especially its use of pointers and memory usage. Data representation for integers and floating point numbers. Programming in x86-64 assembly language. In particular how constructs in C are implemented in x86-64 assembly language. Memory hierarchy and its effects on program performance. Exceptional control flow in programs. Virtual memory. Concurrent programming.
Face-to-face learningPrerequisites- Spring 2
HBV401GSoftware DevelopmentMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionIn this course, software engineers and computer scientists take the step from programming-in-the-small (i.e. individual developers creating compact modules that solve clearly defined problems) to programming-in-the-large (i.e. teams of developers building complex systems that satisfy vague customer requirements). To deal with the complexities of such projects, this course introduces key software engineering concepts such as agile and plan-driven software process models, requirements engineering, effort estimation, object-oriented analysis and design, software architecture and test-driven development. These concepts are immediately applied in practice as students team up to develop and integrate component-based systems using the Java programming language.
Face-to-face learningPrerequisitesSTÆ405GNumerical AnalysisMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionFundamental concepts on approximation and error estimates. Solutions of systems of linear and non-linear equations. PLU decomposition. Interpolating polynomials, spline interpolation and regression. Numerical differentiation and integration. Extrapolation. Numerical solutions of initial value problems of systems of ordinary differential equations. Multistep methods. Numerical solutions to boundary value problems for ordinary differential equations.
Grades are given for programning projects and in total they amount to 30% of the final grade. The student has to receive the minimum grade of 5 for both the projects and the final exam.
Face-to-face learningPrerequisitesTÖL403GAnalysis of AlgorithmsMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionMethodology for the design of algorithms and the analysis of their time conplexity. Analysis of algorithms for sorting, searching, graph theory and matrix computations. Intractable problems, heuristics, and randomized algorithms.
Face-to-face learningPrerequisites- Fall
- HBV501GSoftware Project 1Mandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse Description
The aim of this course is for students to be able to develop software systems, to participate in software development projects, and to reflect upon software development. Thus, the course contains a development project that is performed in groups as its main component. Teaching is project-driven, and focuses on topics relevant in earlier phases of software development: development processes, estimation, design and programming, and configuration management. The project is started in this course and continued in HBV601G Software Project 2.
Face-to-face learningPrerequisites- Spring 2
IÐN401GOperations ResearchMandatory (required) course6A mandatory (required) course for the programme6 ECTS, creditsCourse DescriptionThis course will introduce the student to decision and optimization models in operations research. On completing the course the student will be able to formulate, analyze, and solve mathematical models, which represent real-world problems, and critically interpret their results. The course will cover linear programming and the simplex algorithm, as well as related analytical topics. It will also introduce special types of mathematical models, including transportation, assignment, network, and integer programming models. The student will become familiar with a modeling language for linear programming.
Face-to-face learningPrerequisites- Whole year courses
- Course Description
In this course, students work as mentors for participants at the upper‑secondary and university levels in the project Sprettur. Mentors play an essential role in supporting and encouraging other students in their studies and social life. Their role is to build constructive relationships with participants, act as positive role models, and take part in joint activities organised within Sprettur. Mentorship is based on relationship‑building and regular meetings and involves a commitment to the students the mentor supports.
Sprettur is a support project for students with a foreign background who seek additional support to improve their academic performance and participation in the university community. Students in the course work as mentors and are paired with participants based on shared interests. Mentors also work together in groups and in consultation with teachers and project coordinators.
Students may choose to enrol in the course in the autumn semester, spring semester, or distribute the workload across both semesters (the full academic year). The course structure accommodates this choice, but all academic requirements remain the same. Mentors plan regular meetings with Sprettur participants and typically spend three hours per month with participants, three hours per month in homework groups, and attend a total of five seminars.
Students submit journal entries on Canvas and design and deliver a learning experience for the participants in Sprettur. Journal entries are based on readings and critical reflections on the mentorship role and on personal experience in the project. The course is taught in Icelandic and English.
Upon completing the course and meeting all requirements, students receive 5 ECTS credits and an official certificate of participation and completion of the project.
Students fill out an electronic application form, and the supervising teacher contacts applicants.
More information about Sprettur can be found here: www.hi.is/sprettur
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesAttendance required in class- Fall
TÖL605MFundamentals of Ethical HackingElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionEthical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and valuable insights used for improving system security.
This course will introduce students to the fundamentals of ethical hacking tools and techniques. Students will begin by configuring a secure lab using virtualisation tools. Then every two weeks a new stage of the ethical hacking methodology and some related tools will be introduced. The students will submit weekly lab reports evidencing their theoretical and practical understanding of the methodology and tools.
For the best experience, students should own a PC able to run virtualisation software with an x86 image. Mac users with Apple CPU or those with PCs whose CPUs lack virtualisation support or who have limited RAM might have issues running a stable lab on their machine. Students who lack suitable hardware can use VMs on the department's cyber security server infrastructure.
Face-to-face learningPrerequisitesCourse DescriptionConcepts, units, scales and dimensions. Vectors. Kinematics of particles. Particle dynamics, inertia, forces and Newton's laws. Friction. Work and energy, conservation of energy. Momentum, collisions. Systems of particles, center of mass. Rotation of a rigid body. Angular momentum and moment of inertia. Statics. Gravity. Solids and fluids, Bernoulli's equation. Oscillations: Simple, damped and forced. Waves. Sound. Temperature. Ideal gas. Heat and the first law of thermodynamics. Kinetic theory of gases. Entropy and the second law of thermodynamics. Home problems: Once a week the students have to solve homeproblems on the website MasteringPhysics.
Laboratory work: Three exercises, mainly centered on mechanics, where students are trained in handling physical instruments, collecting and inspecting data. Students hand in their lab notebooks for a grade.
Note that the textbook is accessible to students via Canvas free of charge.
Face-to-face learningPrerequisitesNot taught this semesterHBV103MSoftware MaintenanceElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe first part of the course is based on flipped-classroom style weekly reading, videos and assignments on:
- Evolution of Software and Lehman’s laws,
- Maintenance processes,
- Metrics useful for maintenance,
- Software analysis,
- Re-engineering,
- Reverse engineering,
- Code Smells & Refactoring,
- Basics of (Regression-)Testing,
- Design principles to support change & Design Patterns,
- Tools for software maintenance (including advanced features of an IDE).
In the second part of this course, these techniques will be applied in order to maintain a real legacy software written in Java.
Note: while this is an "M" course, it is rather on MSc. level. BSc. students who take this course need to be advanced in their BSc. studies and you need solid Java programming experience: we will maintain a complex software and being able to understand how such a grown software works and to fix bugs is even more difficult to write such a software from scratch. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2. (It is impossible to maintain a software if you would not even be able to develop it.) Also, BSc. students should not take this course, if they know that they are going to continue with MSc. studies, because they might then experience a lack of suitable courses in their MSc. studies.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesNot taught this semesterHBV261LFinal projectElective course0Free elective course within the programme0 ECTS, creditsCourse DescriptionAn independent project under the direction of a member of the department of Computer Science.
Note that this course is mutually exclusive with the HBV004G, HBV502G and HBV603G internships.
Self-studyPrerequisitesPart of the total project/thesis creditsHBV301GRequirements EngineeringElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThis course introduces processes and tools for eliciting, analyzing, defining, validating, and managing software requirements. Students learn to work with different types of requirements, stakeholder roles, and practical techniques such as change management and conflict resolution. The course prepares students for further studies in software development and project work.
Face-to-face learningPrerequisitesIÐN102MComputational IntelligenceElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionIn designing intelligent systems, there is a need for autonomous systems that can learn to make good decisions from their own experience. This course introduces students to reinforcement learning—a computational approach in which systems automatically improve their performance through interaction and reward, without explicit instruction. The course covers Markov decision processes, dynamic programming, Monte Carlo methods, policy optimization, planning, search methods, and deep neural networks as function approximators. The curriculum combines theoretical discussion and project work, giving students the opportunity to model, analyze, and solve mathematical models for decision-making problems. Emphasis is also placed on the iterative process and on critical reflection regarding what it means for algorithms to learn and the impact that autonomous computational intelligence might have on science and society.
Face-to-face learningThe course is taught if the specified conditions are metPrerequisitesIÐN103GEngineering ManagementElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe purpose of the course is to prepare students for working in technology-based firms and organizations. The course will give an overview of the management of firms and organizations, the role of engineers and the challenges they face. Students will learn about analysis tools used in decision making, interpret the results, and communicate both orally and in writing.
Face-to-face learningPrerequisitesIÐN301GAnalysis of Processes and SystemsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe aim of the course is to prepare students in analysing processes and systems. Description of processes are explained so that process analysis can be performed. Process discovery and their mapping is explained. Three ways of doing process discovery are explained: fact-based, interview-based and workshop-based. When processes are mapped they can be analyzed. The course will go through the qualitative methods of: value-stream-analysis, root-cause-analysis and risk analysis. The quantitative methods of: performance management, flow analysis, queuing theory and simulation will be explained. The later part of the course will be on systems and system analysis. System thinking will be explained and how systems can be used to describe the world. The system analysis methods of causal-loop-diagrams and stocks-and-flows will be explained. The course will conclude by simulating both processes and systems.
Face-to-face learningPrerequisitesIÐN502GEngineering EconomicsElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe objective of the course is that students get the skills to:
1. Understand the main concepts in accounting, cost theory and investment theory.
2. Be able to use methods of measuring the economic feasibility of technical projects.
3. Be able to develop computer models to assess the profitability of investments, the value of companies and pricing of bonds
Among topics included are accounting, cost theory, cash flow analysis, investment theory, measures of profitability including net present value and internal rate of return, and the building of profitability models. The course ends with a group assignment where the students exercise the development of computer models for feasibility assessment of projects.
Face-to-face learningPrerequisitesCourse DescriptionThe course is an introductory course in project management. It introduces key concepts of project management and covers context and selection of projects, project planning, project monitoring, management of project teams, and project closure. Students create and execute project plans in groups. Special emphasis is on using of project management for managing technological innovation in organizations.
Face-to-face learningPrerequisitesIÐN510MLogistics & Environmental EngineeringElective course6Free elective course within the programme6 ECTS, creditsCourse DescriptionThe course focuses on the principles of logistics and supply management and gives a broad introduction to the field. The course is divided into three topics primarily. It covers purchase operations of services and inventory management. This part is followed by looking into transportation and distribution management. Finally, the environmental impacts of logistics is studies and all the three parts put together into a view of sustainability. The course consists of lectures, exercises, game (the Beer Game) and a management simulation game to give hands on experience on logistics management,
Face-to-face learningPrerequisitesNot taught this semesterREI503MPerformance analysis of computer systemsElective course6Free elective course within the programme6 ECTS, credits