""
Language skills
required, minimum level of B2
Programme length
Full time study for three academic years.
Study mode
Face-to-face learning
Application status
International students:
Students with Icelandic or Nordic citizenship:
Overview

  • Do you want to be able to perform scientific calculations?
  • Do you want to analyse data and learn to create models or forecasts for company profits?
  • Do you want to tackle diverse projects under the guidance of Iceland's leading mathematicians?
  • Do you want a diverse selection of courses that suit your interests?
  • Do you want to open up future opportunities in challenging careers?
  • Are you interested in arithmetic and statistics?

The programme is divided fairly equally between software engineering, mathematics and computer science. Teaching emphasises how software relates to the human and economic sides of the industry.

Students will learn systematic approaches to:

  • Designing and developing software for profit
  • Maintaining and managing software

Students will also learn about business economics and various kinds of administration.

Course topics include:

  • Design and organisation of major programming projects
  • Needs assessment and performance specifications
  • Software development
  • Major programming languages
  • Design, analysis and use of database management systems
  • Building human-computer interfaces
  • Web programming
  • Software testing
  • Software maintenance
  • Project management and quality management
  • Business economics
  • Artificial intelligence
  • Scientific computing and optimisation
  • Mathematics and statistics
  • Physics
  • Engineering management
  • Engineering economics

Icelandic matriculation examination or a comparable qualification. The faculty strongly recommends that students complete at least 40 credits in mathematics and 50 credits in science of which 10 credits should be in physics. It is an advantage to have finished a course in programming. 

Good knowledge of both Icelandic and English is indispensable. Most courses in the undergraduate program are taught in Icelandic.
Applicants for undergraduate studies must demonstrate proficiency in Icelandic that is at least level B2 according to the european language framework.
Proficiency in Icelandic can be demonstrated with an Icelandic matriculation (stúdetnspróf) exam or an assessment in Icelandic conducted by an authorized testing agency.

180 ECTS credits have to be completed for the qualification, organized as a three year programme.

Programme structure

Check below to see how the programme is structured.

This programme does not offer specialisations.

First year | Fall
Introduction to Software Engineering (HBV101G)
A mandatory (required) course for the programme
4 ECTS, credits
Course Description

This course explains what software engineering is, why it is important, and which skills and competencies it entails.

Through guest talks from professional software engineers and work on practical projects, the course introduces key concepts of software engineering – specifically, the forces that shape software products, and the roles and responsibilities of the people who drive them.

Students work in teams to pick issues in their environment that could be solved or improved through software, and identify challenges that would need to be resolved in designing and building a suitable software solution. This motivates the methods and paradigms that will be introduced in detail in further courses of the software engineering program.

Attention! This course is specifically intended for 1st year students in Software Engineering. New 1st year students in Computer Science or other programs need special permission from the faculty to sign up for the course, but it is not intended for 2nd or 3rd year students.

Language of instruction: Icelandic/English
Face-to-face learning
First year | Fall
Mathematical Analysis I (STÆ104G)
A mandatory (required) course for the programme
6 ECTS, credits
Course 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.
Language of instruction: Icelandic
Face-to-face learning
First year | Fall
Linear Algebra (STÆ107G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
First year | Fall
Computer Science 1 (TÖL101G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

The Java programming language will be used to introduce basic practices in computer programming. Practice in programming is scheduled throughout the semester. An emphasis is placed on logical methods for writing program and good documentation. Main ideas related to computers and programming. Classes, objects and methods. Control statements. Strings and arrays, operations and built-in functons. Input and output. Inheritance. Ideas relatied to system design and good practices for program writing. Iteration and recursion. Searching and Sorting.

Language of instruction: Icelandic
Face-to-face learning
First year | Fall
Mathematical Structure (TÖL104G)
A mandatory (required) course for the programme
8 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
First year | Spring 1
Computers, operating systems and digital literacy basics (TÖL205G)
A mandatory (required) course for the programme
4 ECTS, credits
Course Description

In this course, we study several concepts related to digital literacy. The goal of the course is to introduce the students to a broad range of topics without necessarily diving deep into each one.

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. 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.

Language of instruction: Icelandic
Online learning
Self-study
First year | Spring 1
Graphical User Interface Programming (HBV201G)
A mandatory (required) course for the programme
8 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Attendance required in class
First year | Spring 1
Software Design and Construction (HBV202G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

Note: This course is based on teamwork and uses flipped classroom teaching: therefore, it is necessary to attend the classes to work there in groups. Do not take this course if you have timetable collisions and cannot attend the classes.

This course covers basic foundations of software design and software construction.

Software design is covered in terms of object-oriented modeling using the Unified Modeling Language (UML), object-oriented design principles (e.g. interfaces and packages, the Liskov Substitution Principle), and basic design patterns.

Software construction is covered mainly in terms of tools, in particular the more advanced features (such as code completion, using a debugger and improving code using refactoring) of an Integrated Development Environment (IDE), build automation and dependency management (e.g., the Maven or Gradle tool and modular Java), compilers (e.g., dealing with compiler warnings) and runtime systems (e.g., classpaths), and basics of unit testing.

Language of instruction: English
Face-to-face learning
First year | Spring 1
Mathematical Analysis II (STÆ205G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
First year | Spring 1
Computer Science 2 (TÖL203G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

The course will cover various data structures, algorithms and abstract data types. Among the data 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 small programming assignments in Java using the given data structures and algorithms.

Language of instruction: Icelandic
Face-to-face learning
Second year | Fall
Requirements Engineering (HBV301G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

Software requirements express the needs and constraints placed on a software product so that it can solve an issue in an application domain. This course covers techniques for the elicitation, analysis, specification, validation and management of software requirements.

The course introduces types and properties of software requirements, relevant stakeholders, techniques for requirements elicitation, analysis, specification and validation, as well as practical considerations such as change management and conflict resolution. Students practice these techniques in teams by applying them to projects of their choice.

New mandatory course - first taught in 2023-2024

Language of instruction: English
Face-to-face learning
Prerequisites
Second year | Fall
Mathematical Analysis III (STÆ302G)
A mandatory (required) course for the programme
6 ECTS, credits
Course 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.

Language of instruction: English
Face-to-face learning
Second year | Fall
Data Base Theory and Practice (TÖL303G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic/English
Face-to-face learning
Second year | Fall
Programming Languages (TÖL304G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic/English
Face-to-face learning
Second year | Fall
Computer organization and programming (TÖL309G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Second year | Spring 1
Software Development (HBV401G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Not taught this semester
Second year | Spring 1
Industrial Software Engineering (HBV404G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Prerequisites
Second year | Spring 1
Probability and Statistics (STÆ203G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Third year | Fall
Cloud Computing and Big Data (REI504M)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Third year | Fall
Machine Learning (REI505M)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

Language of instruction: English
Face-to-face learning
Third year | Fall
Formal Languages and Computability (TÖL301G)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Third year | Fall
Computer Graphics (TÖL105M)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Not taught this semester
Third year | Fall
Computer Networks and Security (TÖL305G)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
The course is taught if the specified conditions are met
Third year | Fall
Software Project 1 (HBV501G)
A mandatory (required) course for the programme
6 ECTS, credits
Course 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.

Language of instruction: Icelandic
Face-to-face learning
Third year | Fall
Engineering Economics (IÐN502G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Third year | Fall
Project Management (IÐN503G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Third year | Fall
Physics 1 V (EÐL102G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Third year | Fall
Secure Software Engineering (HBV506M)
Free elective course within the programme
6 ECTS, credits
Course Description

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 security assessment through testing their own and other team’s applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.

It is therefore assumed the students have knowledge in web application development using JavaScript.

Language of instruction: English
Face-to-face learning
Prerequisites
Not taught this semester
Third year | Spring 1
Compilers (TÖL202M)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic/English
Face-to-face learning
The course is taught if the specified conditions are met
Third year | Spring 1
Reasoned Programming (TÖL212M)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

Fundamental concepts in program verification and reasoned programming are covered. Emphasis is placed on using reasoned programming to develop solid and proved versions of well-known algorithms, especially in the areas of searching, sorting, and binary search trees. Among algorithms covered are various versions of insertion sort, selection sort, quicksort, binary search, and searching in binary search trees. Emphasis will be placed on deepening the understanding of the algorithms as well as getting a good grip on program verification. Some exercises will use verification tools such as Dafny or OpenJML.

Language of instruction: Icelandic/English
Face-to-face learning
The course is taught if the specified conditions are met
Third year | Spring 1
Operating Systems (TÖL401G)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Third year | Spring 1
Analysis of Algorithms (TÖL403G)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Third year | Spring 1
Digital Circuit Design and Analysis (TÖV201G)
Restricted elective course, conditions apply
6 ECTS, credits
Course Description

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

Language of instruction: Icelandic
Face-to-face learning
Third year | Spring 1
Software Project 2 (HBV601G)
A mandatory (required) course for the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Not taught this semester
Third year | Spring 1
Fundaments of the Internet (RAF617M)
Free elective course within the programme
6 ECTS, credits
Course Description

Modern day telecommunications are characterised by the fact that communicated data is carried on fixed telecommunications infrastructure on a majority of the path between tranmitter and receiver. Wireless infrastructure often conveys the signals at the end of the path. This yields both high speed and the comfort of wireless communications. It is of utmost importance for engineers working in telecoms to have a fundamental knowledge of fixed networks and the range of technologies deployed.

In this course, the structure of fixed backbone and access networks will be described. Optical fibre and related technologies will be introduced, e.g. DWDM, SDH, Ethernet, ATM and MPLS-TP. Access network technologies on copper, coax and optical fibres will be treated, e.g. ADSL. VDSL, G.fast and  DOCSIS. Different FTTH (Fibre to the Home) technologies will be treated such as PON (Passive Optical Network), Active Ethernet and point-to-point Ethernet. 

IP (Internet Protocol) has become a fundamental technology for modern fixed networks. IP native technologies will be described from the physical to the application layer. On the link layer, Ethernet will be in the focus as well as MPLS. Circuit and packet switching will be treated as well as circuit and packet orientation of networks. Sevices such as PSTN, VoIP, OTT and P2P will be treated. Backhauling of wireless networks such as mobile networks and Wi-Fi will also be treated.
In introduction to network virtualisation and network function virtualisation (NFV) will be given as well as software defined networking (SDN). Legal and regulatory aspects will be introduced and aspects like network neutrality discfussed. Important players and stakeholders will be discussed, e.g. Google, Apple, Microsoft, Netflix and telecommunications service providers.
Finally, local area networks will be discussed, home networking, smart homes, set-top-boxes, NAS, PLC, plastic optical fibres, MOCA and Wi-Fi introduced.

The teaching form will be lectures and projects on IP communications will be worked. Students will write four papers on selected subjects and give presentations. 

Language of instruction: Icelandic
Face-to-face learning
Third year | Spring 1
Physics 2 V (EÐL201G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Third year | Spring 1
Fundamentals of Ethical Hacking (TÖL605M)
Free elective course within the programme
6 ECTS, credits
Course Description

Ethical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and 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 cybersecurity server infrastructure.

Language of instruction: English
Face-to-face learning
Prerequisites
Year unspecified | Whole year courses
Mentor in Sprettur (GKY001M)
Free elective course within the programme
5 ECTS, credits
Course Description

In the course, the student's task consists in being a mentor for participants that are upper secondary school students and university students in the project "Sprettur". Mentors' main role is to support and encourage participants in their studies and social life. As well as creating a constructive relationship with the participants, being a positive role model, and participating in events organized in Sprettur. The mentor role centers around building relationships and spending meaningful time together with the commitment to support participants. 

Sprettur is a project that supports students with an immigrant or refugee background who come from families with little or no university education. The students in this course are mentors of the participants and are paired together based on a common field of interest. Each mentor is responsible for supporting two participants. Mentors plan activities with participants and spend three hours a month (from August to May) with Sprettur’s participants, three hours a month in a study group and attend five seminars that are spread over the school year. Students submit journal entries on Canvas in November and March. Diary entries are based on reading material and students' reflections on the mentorship. Compulsory attendance in events, study groups, and seminars. The course is taught in Icelandic and English. 

Students must apply for a seat in the course. Applicants go through an interview process and 15-30 students are selected to participate. 

See the digital application form. 

More information about Sprettur can be found here: www.hi.is/sprettur  

Language of instruction: Icelandic/English
Face-to-face learning
The course is taught if the specified conditions are met
Prerequisites
Attendance required in class
Year unspecified | Fall
Usable Privacy and Security (HBV507M)
Free elective course within the programme
6 ECTS, credits
Course Description

Survey of the field of usable security and privacy with an emphasis on emerging technologies. Topics include authentication, location privacy, social network privacy, behavioral advertising, - health privacy, anonymity, cryptocurrency, technical writing and ethical conduct of usable privacy and security research.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Internship (HBV004G)
Free elective course within the programme
6 ECTS, credits
Course Description

The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

At the end of the internship, the student must return to the supervisor:

  • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
  • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

The grade is pass/fail.

NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Software Maintenance (HBV103M)
Free elective course within the programme
6 ECTS, credits
Course Description

Usually taught every second year (typically in fall of odd years, but this is subject to change in 2024).

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.

Language of instruction: English
Face-to-face learning
The course is taught if the specified conditions are met
Not taught this semester
Year unspecified | Fall
Final project (HBV261L)
Free elective course within the programme
0 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Self-study
Part of the total project/thesis credits
Not taught this semester
Year unspecified | Fall
Hackathon Project (HBV502G)
Free elective course within the programme
4 ECTS, credits
Course Description

This course aims to give students an opportunity for independent teamwork on a project of their own design under their own direction, developing it from inception to the demonstration of a prototype.

The projects will proceed as part of the HealthTech Hackathon or FinTech Hackathon (Lausnarmót) in the context of Innovation Week 2021.

Students interested in participating must first pitch their idea to the hackathon organizers in early August. A committee will review all submitted ideas and select those considered most innovative, realistic, and having the potential to solve future challenges.

Selected teams will be announced in August. Only student teams with up to five members selected by the committee can sign up for this course and will have 4 weeks in September to work on their projects. Students are expected to work on their projects conscientiously over the 4-week period, expecting to dedicate 25-30 hours to the project each week. All teams will have access to regular mentoring sessions.

Final presentations will take place in early October. All teams that participated consistently and gave a successful final presentation will receive a passing grade, independently of the hackathon jury’s ranking.

Note that this course is mutually exclusive with the HBV004G and HBV603G internships and the HBV261L final project.

Language of instruction: Icelandic
Self-study
Part of the total project/thesis credits
Year unspecified | Fall
Software Quality Management (HBV505M)
Free elective course within the programme
6 ECTS, credits
Course Description

The course is based on flipped-classroom style weekly reading, videos and assignments on software quality management-related aspects of the Software Development Life Cycle (SDLC) and by covering some parts of DevOps also Application Lifecycle Management (ALM). In parallel to theoretical concepts, the application of source code-centric tools relevant for quality management is trained by applying them to a codebase throughout the course using the ALM tool GitLab. The concepts and tools are independent from a particular software development process and cover:

  • Software Quality Foundations, Software Quality Models.
  • Configuration management (CM) and traceability:
    • Version management (e.g. Git),
    • Change management (e.g. issue tracker),
    • Build management (e.g. Maven),
    • Release management
  • Continuous integration (CI) (e.g. using GitLab pipelines).
  • Integrating testing into a CI pipeline (e.g. using JUnit and GitLab).
  • Reviews (e.g. tool-based code review)
  • Static analysis (e.g. SonarCloud)
  • Metrics for quality management (product and process metrics).
  • Quality standards:
    • Software Life Cycle Processes,
    • Software Process Improvement and maturity assessment (e.g. CMMI).
  • Using a Wiki to create a quality plan and other documentation.

Students chose their own codebase (e.g. from the Software Project 1 or 2 course) to which they apply the concepts and tools tought in this course. While the teaching material and tools assumes Java as programming language, students are welcome to use a codebase in another programming language.

Software quality in agile development processes is covered by student presentations at the end of the course.

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 Java programming experience. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2.
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.

Language of instruction: English
Face-to-face learning
The course is taught if the specified conditions are met
Year unspecified | Fall
Analysis of Processes and Systems (IÐN301G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Fall
Logistics & Environmental Engineering (IÐN510M)
Free elective course within the programme
6 ECTS, credits
Course Description

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,

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Fall
Performance analysis of computer systems (REI503M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
The course is taught if the specified conditions are met
Year unspecified | Fall
Cloud Computing and Big Data (REI504M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Year unspecified | Fall
Machine Learning (REI505M)
Free elective course within the programme
6 ECTS, credits
Course Description

An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Machine Learning for Earth Observation powered by Supercomputers (REI506M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Cryptocurrency (STÆ532M)
Free elective course within the programme
6 ECTS, credits
Course Description

The course will start by introducing the basic concepts of electronic currencies, such as wallets, addresses and transactions. The students will get to know encoding, transactions, blocks and blockchains. The cryptocurrency Smileycoin will be used as an example throughout the course.
Students will compile their own wallets from source and dive deeply enough into the underlying algorithms to be able to put together their own transactions from the Linux command line and read typical wallet code written in C++.
Students will learn how to call the wallet from other software, e.g. to analyse the flow of funds.
Students will learn how to implement several additions to the traditional use of electronic currency such as encoded messages, running software to react to payments etc.
Students will set up their own examples of addition and study how to set up atomic swaps between different currencies, using the Smileycoin for announcements.

Homework will be individualised, selected from different formats (a) solutions based on the wallet on the command line, (2) documents to form handouts or other material in the tutor-web, (3) short programs (APIs) which respond to transactions being send to particular addresses or to a
particular wallet, (4) programs which talk to exchanged and/or (5) new user interfaces which improve or add to the functionality of a wallet.

All the material and assignments will be in English. Returned assignments will become a part of the open tutor-web educational system.

The course may be taught as a reading course or self-study, but the exact implementation depends on participation.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Fall
Introduction to Information Security (TÖL029M)
Free elective course within the programme
6 ECTS, credits
Course Description

Þetta námskeið byggir grunn að skilningi á lykilatriðum sem tengjast verndun upplýsinga, ákvörðun á verndarstigi og viðbrögð við öryggisatvikum, og hönnun á samræmdu raunhæfu upplýsingaöryggiskerfi, með viðeigandi innbrotsskynjun og tilkynningum.  Tilgangur námskeiðsins er að veita nemandanum yfirsýn yfir svið upplýsingaöryggis og upplýsingatrygginga.  Nemendur munu sjá ýmsar gerðir öryggisaðgerða, aðferðafræða og verklags.  Umfjöllunin mun taka fyrir skoðun og vernd upplýsingaeigna, uppgötvun og viðbrögð við ógnum við upplýsingaeignir, verklagsreglur fyrir og eftir öryggisatvik, tæknileg og stjórnunarleg viðbrögð og yfirlit yfir skipulagningu upplýsingaöryggis og starfsmannahald.  Meðal efnis eru áhættumat, auðkenning, veföryggi, öryggi forrita, persónuvernd og gagnavernd, kynning á dulmálskóðun, öryggisarkitektúr, eldveggir og önnur tæki og netskipulag.

Language of instruction: English
Face-to-face learning
Year unspecified | Fall
Programming Projects on Internet of Things (TÖL103M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Security Engineering for Critical Information Infrastructures (TÖL106M)
Free elective course within the programme
6 ECTS, credits
Course Description

The overarching objective of this experimental course is to provide a practical technical and policy introduction for the foundations of the building and operating of dependable, complex distributed national information infrastructures.

The course teaches university students how to model, design, implement, operate, and defend these national information infrastructures (NII) to withstand errors and attacks.

We will introduce complementary engineering methodologies intended to assist NII policymakers, stewards, operators, and engineering professionals to implement protective initiatives to design and improve the survivability of NII systems, critical functions, and processes.

The course will include cyber threat intelligence tradecraft and the experimental use of both open-source intelligence and an artificial intelligence tool i.e. ChatGPT

Language of instruction: English
Face-to-face learning
Year unspecified | Fall
Web Programming 1 (TÖL107G)
Free elective course within the programme
8 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Cyber Conflicts, Cyber Security Threats and Engineering, National Information Infrastructures (NII) (TÖL107M)
Free elective course within the programme
6 ECTS, credits
Course Description

This interdisciplinary course examines underlying and emerging information technologies, cyber security engineering and policies associated with surveillance, cyber warfare, and cyber threats.

The technological concepts reviewed in this course include but are not limited to National Information Infrastructures, the Internet, Dark Web, networks and sensors, and trends associated with our emerging Internet of Things.

The course will review some salient cyber conflict history, international and national policies concerning cyber conflict and security engineering - secure by design, military/civilian doctrine, and some lessons learned from the use of cyber operations in past, present and future conflicts.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Fall
Computer Networks and Security (TÖL305G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
The course is taught if the specified conditions are met
Not taught this semester
Year unspecified | Fall
Computer Game Programming (TÖL308G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
The course is taught if the specified conditions are met
Not taught this semester
Year unspecified | Fall
From an Idea to Reality (TÖL501G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Fall
Human Computer Interaction (TÖL502M)
Free elective course within the programme
6 ECTS, credits
Course Description

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. 

Language of instruction: Icelandic
Face-to-face learning
The course is taught if the specified conditions are met
Prerequisites
Year unspecified | Fall
Distributed Systems (TÖL503M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.)

Language of instruction: English
Face-to-face learning
The course is taught if the specified conditions are met
Year unspecified | Fall
Introduction to deep neural networks (TÖL506M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Spring 1
Algorithms in the real world (TÖL608M)
Free elective course within the programme
6 ECTS, credits
Course Description

The course will cover the design and analysis of algorithms, with emphasis on algorithms for large datasets and real world applications.

The algorithms covered will be drawn from various subfields, e.g. data and text compression, error correcting codes, large scale text search and search engines, parallel programming, GPU programming, streaming algorithms, probabilistic algorithms, nearest neighbor search in high dimensional datasets.

Language of instruction: Icelandic/English
Face-to-face learning
Year unspecified | Spring 1
Internship (HBV004G)
Free elective course within the programme
6 ECTS, credits
Course Description

The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

At the end of the internship, the student must return to the supervisor:

  • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
  • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

The grade is pass/fail.

NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

Language of instruction: Icelandic
Prerequisites
Attendance required in class
Year unspecified | Spring 1
Software Testing (HBV205M)
Free elective course within the programme
6 ECTS, credits
Course Description

Usually taught every second year (typically in spring of odd years, but this is subject to change in 2024).

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.

Language of instruction: English
Face-to-face learning
The course is taught if the specified conditions are met
Not taught this semester
Year unspecified | Spring 1
Final project (HBV261L)
Free elective course within the programme
0 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Self-study
Part of the total project/thesis credits
Year unspecified | Spring 1
Web Programming 2 (HBV403G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Spring 1
Internship in computer science and software engineering - undergraduate (HBV603G)
Free elective course within the programme
24 ECTS, credits
Course Description

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 6-month internship.
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.
• Job training is three to six months in full-time employment.
• 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.

Language of instruction: Icelandic
Prerequisites
Attendance required in class
Year unspecified | Spring 1
Operations in Organizations (IÐN201G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Not taught this semester
Year unspecified | Spring 1
Introduction to Systems Biology (LVF601M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Year unspecified | Spring 1
Introduction to data science (REI202G)
Free elective course within the programme
6 ECTS, credits
Course Description

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:

  1. Introduction to the Python programming language.
  2. Data wrangling and data preprocessing.
  3. Exploratory data analysis and visualization.
  4. Optimization.
  5. Clustering and dimensionality reduction.
  6. 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.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Spring 1
High Performance Computing (REI204M)
Free elective course within the programme
6 ECTS, credits
Course Description

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

Language of instruction: English
Face-to-face learning
Year unspecified | Spring 1
The AI lifecycle (REI603M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Spring 1
Seminar on Machine Learning (TÖL028M)
Free elective course within the programme
2 ECTS, credits
Course Description

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. 

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Spring 1
Operating Systems (TÖL401G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Spring 1
Computer Science Seminar for Undergraduates (TÖL602G)
Free elective course within the programme
2 ECTS, credits
Course Description

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.

Language of instruction: English
Face-to-face learning
Not taught this semester
Year unspecified | Spring 1
From an idea to reality II (TÖL602M)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Prerequisites
Attendance required in class
Year unspecified | Spring 1
Competitive programming (TÖL607G)
Free elective course within the programme
6 ECTS, credits
Course Description

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.

Language of instruction: Icelandic
Face-to-face learning
Year unspecified | Year unspecified
Applied Cryptography (TÖL213M)
Free elective course within the programme
6 ECTS, credits
Course Description

In this course, students will take a practical approach to understanding the building and breaking of cryptographic implementations. The first half of this module will involve programming tasks while the second half will involve two mini projects. 

Starting from simplistic approaches used historically, such as the Caeser cipher, to modern day protocols used to secure telecommunications ubiquitously, such as AES and TLS. Students will also consider the role of cryptography in society more broadly by researching how contentious technologies such as end-to-end encryption and Tor impact justice and privacy, and distributed ledgers can enable the decentralisation of key societal systems. Finally, the course will conclude with a mini project demonstrating a practical attack against a cryptographic implementation using ethical hacking approaches e.g. WiFi cracking, password bruteforcing or man-in-the-middle attack of an encrypted connection to sniff traffic. 

The course will encompass the following stages: 

1) Building cryptographic primitives in a programming language of choice. 

2) Application engineering best practices. 

3) A research project in cryptography and society. 

4) A practical project in ethical hacking approaches to demonstrating weaknesses in cryptography implementations. 

Language of instruction: English
Face-to-face learning
Prerequisites
First year
  • Fall
  • HBV101G
    Introduction to Software Engineering
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    This course explains what software engineering is, why it is important, and which skills and competencies it entails.

    Through guest talks from professional software engineers and work on practical projects, the course introduces key concepts of software engineering – specifically, the forces that shape software products, and the roles and responsibilities of the people who drive them.

    Students work in teams to pick issues in their environment that could be solved or improved through software, and identify challenges that would need to be resolved in designing and building a suitable software solution. This motivates the methods and paradigms that will be introduced in detail in further courses of the software engineering program.

    Attention! This course is specifically intended for 1st year students in Software Engineering. New 1st year students in Computer Science or other programs need special permission from the faculty to sign up for the course, but it is not intended for 2nd or 3rd year students.

    Face-to-face learning
    Prerequisites
  • STÆ104G
    Mathematical Analysis I
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • STÆ107G
    Linear Algebra
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL101G
    Computer Science 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The Java programming language will be used to introduce basic practices in computer programming. Practice in programming is scheduled throughout the semester. An emphasis is placed on logical methods for writing program and good documentation. Main ideas related to computers and programming. Classes, objects and methods. Control statements. Strings and arrays, operations and built-in functons. Input and output. Inheritance. Ideas relatied to system design and good practices for program writing. Iteration and recursion. Searching and Sorting.

    Face-to-face learning
    Prerequisites
  • TÖL104G
    Mathematical Structure
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL205G
    Computers, operating systems and digital literacy basics
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    In this course, we study several concepts related to digital literacy. The goal of the course is to introduce the students to a broad range of topics without necessarily diving deep into each one.

    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. 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 learning
    Self-study
    Prerequisites
  • HBV201G
    Graphical User Interface Programming
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • HBV202G
    Software Design and Construction
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Note: This course is based on teamwork and uses flipped classroom teaching: therefore, it is necessary to attend the classes to work there in groups. Do not take this course if you have timetable collisions and cannot attend the classes.

    This course covers basic foundations of software design and software construction.

    Software design is covered in terms of object-oriented modeling using the Unified Modeling Language (UML), object-oriented design principles (e.g. interfaces and packages, the Liskov Substitution Principle), and basic design patterns.

    Software construction is covered mainly in terms of tools, in particular the more advanced features (such as code completion, using a debugger and improving code using refactoring) of an Integrated Development Environment (IDE), build automation and dependency management (e.g., the Maven or Gradle tool and modular Java), compilers (e.g., dealing with compiler warnings) and runtime systems (e.g., classpaths), and basics of unit testing.

    Face-to-face learning
    Prerequisites
  • STÆ205G
    Mathematical Analysis II
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL203G
    Computer Science 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The course will cover various data structures, algorithms and abstract data types. Among the data 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 small programming assignments in Java using the given data structures and algorithms.

    Face-to-face learning
    Prerequisites
  • Fall
  • HBV301G
    Requirements Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Software requirements express the needs and constraints placed on a software product so that it can solve an issue in an application domain. This course covers techniques for the elicitation, analysis, specification, validation and management of software requirements.

    The course introduces types and properties of software requirements, relevant stakeholders, techniques for requirements elicitation, analysis, specification and validation, as well as practical considerations such as change management and conflict resolution. Students practice these techniques in teams by applying them to projects of their choice.

    New mandatory course - first taught in 2023-2024

    Face-to-face learning
    Prerequisites
  • STÆ302G
    Mathematical Analysis III
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • TÖL303G
    Data Base Theory and Practice
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL304G
    Programming Languages
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL309G
    Computer organization and programming
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • HBV401G
    Software Development
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV404G
    Industrial Software Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • STÆ203G
    Probability and Statistics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Fall
  • REI504M
    Cloud Computing and Big Data
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • TÖL301G
    Formal Languages and Computability
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL105M
    Computer Graphics
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • HBV501G
    Software Project 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • IÐN502G
    Engineering Economics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN503G
    Project Management
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • EÐL102G
    Physics 1 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV506M
    Secure Software Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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 security assessment through testing their own and other team’s applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.

    It is therefore assumed the students have knowledge in web application development using JavaScript.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • Not taught this semester
    TÖL202M
    Compilers
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL212M
    Reasoned Programming
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    Fundamental concepts in program verification and reasoned programming are covered. Emphasis is placed on using reasoned programming to develop solid and proved versions of well-known algorithms, especially in the areas of searching, sorting, and binary search trees. Among algorithms covered are various versions of insertion sort, selection sort, quicksort, binary search, and searching in binary search trees. Emphasis will be placed on deepening the understanding of the algorithms as well as getting a good grip on program verification. Some exercises will use verification tools such as Dafny or OpenJML.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL401G
    Operating Systems
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL403G
    Analysis of Algorithms
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖV201G
    Digital Circuit Design and Analysis
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • HBV601G
    Software Project 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    RAF617M
    Fundaments of the Internet
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Modern day telecommunications are characterised by the fact that communicated data is carried on fixed telecommunications infrastructure on a majority of the path between tranmitter and receiver. Wireless infrastructure often conveys the signals at the end of the path. This yields both high speed and the comfort of wireless communications. It is of utmost importance for engineers working in telecoms to have a fundamental knowledge of fixed networks and the range of technologies deployed.

    In this course, the structure of fixed backbone and access networks will be described. Optical fibre and related technologies will be introduced, e.g. DWDM, SDH, Ethernet, ATM and MPLS-TP. Access network technologies on copper, coax and optical fibres will be treated, e.g. ADSL. VDSL, G.fast and  DOCSIS. Different FTTH (Fibre to the Home) technologies will be treated such as PON (Passive Optical Network), Active Ethernet and point-to-point Ethernet. 

    IP (Internet Protocol) has become a fundamental technology for modern fixed networks. IP native technologies will be described from the physical to the application layer. On the link layer, Ethernet will be in the focus as well as MPLS. Circuit and packet switching will be treated as well as circuit and packet orientation of networks. Sevices such as PSTN, VoIP, OTT and P2P will be treated. Backhauling of wireless networks such as mobile networks and Wi-Fi will also be treated.
    In introduction to network virtualisation and network function virtualisation (NFV) will be given as well as software defined networking (SDN). Legal and regulatory aspects will be introduced and aspects like network neutrality discfussed. Important players and stakeholders will be discussed, e.g. Google, Apple, Microsoft, Netflix and telecommunications service providers.
    Finally, local area networks will be discussed, home networking, smart homes, set-top-boxes, NAS, PLC, plastic optical fibres, MOCA and Wi-Fi introduced.

    The teaching form will be lectures and projects on IP communications will be worked. Students will write four papers on selected subjects and give presentations. 

    Face-to-face learning
    Prerequisites
  • EÐL201G
    Physics 2 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL605M
    Fundamentals of Ethical Hacking
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Ethical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and 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 cybersecurity server infrastructure.

    Face-to-face learning
    Prerequisites
  • Whole year courses
  • GKY001M
    Mentor in Sprettur
    Elective course
    5
    Free elective course within the programme
    5 ECTS, credits
    Course Description

    In the course, the student's task consists in being a mentor for participants that are upper secondary school students and university students in the project "Sprettur". Mentors' main role is to support and encourage participants in their studies and social life. As well as creating a constructive relationship with the participants, being a positive role model, and participating in events organized in Sprettur. The mentor role centers around building relationships and spending meaningful time together with the commitment to support participants. 

    Sprettur is a project that supports students with an immigrant or refugee background who come from families with little or no university education. The students in this course are mentors of the participants and are paired together based on a common field of interest. Each mentor is responsible for supporting two participants. Mentors plan activities with participants and spend three hours a month (from August to May) with Sprettur’s participants, three hours a month in a study group and attend five seminars that are spread over the school year. Students submit journal entries on Canvas in November and March. Diary entries are based on reading material and students' reflections on the mentorship. Compulsory attendance in events, study groups, and seminars. The course is taught in Icelandic and English. 

    Students must apply for a seat in the course. Applicants go through an interview process and 15-30 students are selected to participate. 

    See the digital application form. 

    More information about Sprettur can be found here: www.hi.is/sprettur  

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
    Attendance required in class
  • Fall
  • HBV507M
    Usable Privacy and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Survey of the field of usable security and privacy with an emphasis on emerging technologies. Topics include authentication, location privacy, social network privacy, behavioral advertising, - health privacy, anonymity, cryptocurrency, technical writing and ethical conduct of usable privacy and security research.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV103M
    Software Maintenance
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in fall of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • Not taught this semester
    HBV502G
    Hackathon Project
    Elective course
    4
    Free elective course within the programme
    4 ECTS, credits
    Course Description

    This course aims to give students an opportunity for independent teamwork on a project of their own design under their own direction, developing it from inception to the demonstration of a prototype.

    The projects will proceed as part of the HealthTech Hackathon or FinTech Hackathon (Lausnarmót) in the context of Innovation Week 2021.

    Students interested in participating must first pitch their idea to the hackathon organizers in early August. A committee will review all submitted ideas and select those considered most innovative, realistic, and having the potential to solve future challenges.

    Selected teams will be announced in August. Only student teams with up to five members selected by the committee can sign up for this course and will have 4 weeks in September to work on their projects. Students are expected to work on their projects conscientiously over the 4-week period, expecting to dedicate 25-30 hours to the project each week. All teams will have access to regular mentoring sessions.

    Final presentations will take place in early October. All teams that participated consistently and gave a successful final presentation will receive a passing grade, independently of the hackathon jury’s ranking.

    Note that this course is mutually exclusive with the HBV004G and HBV603G internships and the HBV261L final project.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV505M
    Software Quality Management
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course is based on flipped-classroom style weekly reading, videos and assignments on software quality management-related aspects of the Software Development Life Cycle (SDLC) and by covering some parts of DevOps also Application Lifecycle Management (ALM). In parallel to theoretical concepts, the application of source code-centric tools relevant for quality management is trained by applying them to a codebase throughout the course using the ALM tool GitLab. The concepts and tools are independent from a particular software development process and cover:

    • Software Quality Foundations, Software Quality Models.
    • Configuration management (CM) and traceability:
      • Version management (e.g. Git),
      • Change management (e.g. issue tracker),
      • Build management (e.g. Maven),
      • Release management
    • Continuous integration (CI) (e.g. using GitLab pipelines).
    • Integrating testing into a CI pipeline (e.g. using JUnit and GitLab).
    • Reviews (e.g. tool-based code review)
    • Static analysis (e.g. SonarCloud)
    • Metrics for quality management (product and process metrics).
    • Quality standards:
      • Software Life Cycle Processes,
      • Software Process Improvement and maturity assessment (e.g. CMMI).
    • Using a Wiki to create a quality plan and other documentation.

    Students chose their own codebase (e.g. from the Software Project 1 or 2 course) to which they apply the concepts and tools tought in this course. While the teaching material and tools assumes Java as programming language, students are welcome to use a codebase in another programming language.

    Software quality in agile development processes is covered by student presentations at the end of the course.

    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 Java programming experience. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2.
    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 learning
    The course is taught if the specified conditions are met
    Prerequisites
  • IÐN301G
    Analysis of Processes and Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN510M
    Logistics & Environmental Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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,

    Face-to-face learning
    Prerequisites
  • REI503M
    Performance analysis of computer systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • REI504M
    Cloud Computing and Big Data
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    REI506M
    Machine Learning for Earth Observation powered by Supercomputers
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    STÆ532M
    Cryptocurrency
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will start by introducing the basic concepts of electronic currencies, such as wallets, addresses and transactions. The students will get to know encoding, transactions, blocks and blockchains. The cryptocurrency Smileycoin will be used as an example throughout the course.
    Students will compile their own wallets from source and dive deeply enough into the underlying algorithms to be able to put together their own transactions from the Linux command line and read typical wallet code written in C++.
    Students will learn how to call the wallet from other software, e.g. to analyse the flow of funds.
    Students will learn how to implement several additions to the traditional use of electronic currency such as encoded messages, running software to react to payments etc.
    Students will set up their own examples of addition and study how to set up atomic swaps between different currencies, using the Smileycoin for announcements.

    Homework will be individualised, selected from different formats (a) solutions based on the wallet on the command line, (2) documents to form handouts or other material in the tutor-web, (3) short programs (APIs) which respond to transactions being send to particular addresses or to a
    particular wallet, (4) programs which talk to exchanged and/or (5) new user interfaces which improve or add to the functionality of a wallet.

    All the material and assignments will be in English. Returned assignments will become a part of the open tutor-web educational system.

    The course may be taught as a reading course or self-study, but the exact implementation depends on participation.

    Face-to-face learning
    Prerequisites
  • TÖL029M
    Introduction to Information Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Þetta námskeið byggir grunn að skilningi á lykilatriðum sem tengjast verndun upplýsinga, ákvörðun á verndarstigi og viðbrögð við öryggisatvikum, og hönnun á samræmdu raunhæfu upplýsingaöryggiskerfi, með viðeigandi innbrotsskynjun og tilkynningum.  Tilgangur námskeiðsins er að veita nemandanum yfirsýn yfir svið upplýsingaöryggis og upplýsingatrygginga.  Nemendur munu sjá ýmsar gerðir öryggisaðgerða, aðferðafræða og verklags.  Umfjöllunin mun taka fyrir skoðun og vernd upplýsingaeigna, uppgötvun og viðbrögð við ógnum við upplýsingaeignir, verklagsreglur fyrir og eftir öryggisatvik, tæknileg og stjórnunarleg viðbrögð og yfirlit yfir skipulagningu upplýsingaöryggis og starfsmannahald.  Meðal efnis eru áhættumat, auðkenning, veföryggi, öryggi forrita, persónuvernd og gagnavernd, kynning á dulmálskóðun, öryggisarkitektúr, eldveggir og önnur tæki og netskipulag.

    Face-to-face learning
    Prerequisites
  • TÖL103M
    Programming Projects on Internet of Things
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL106M
    Security Engineering for Critical Information Infrastructures
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The overarching objective of this experimental course is to provide a practical technical and policy introduction for the foundations of the building and operating of dependable, complex distributed national information infrastructures.

    The course teaches university students how to model, design, implement, operate, and defend these national information infrastructures (NII) to withstand errors and attacks.

    We will introduce complementary engineering methodologies intended to assist NII policymakers, stewards, operators, and engineering professionals to implement protective initiatives to design and improve the survivability of NII systems, critical functions, and processes.

    The course will include cyber threat intelligence tradecraft and the experimental use of both open-source intelligence and an artificial intelligence tool i.e. ChatGPT

    Face-to-face learning
    Prerequisites
  • TÖL107G
    Web Programming 1
    Elective course
    8
    Free elective course within the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL107M
    Cyber Conflicts, Cyber Security Threats and Engineering, National Information Infrastructures (NII)
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    This interdisciplinary course examines underlying and emerging information technologies, cyber security engineering and policies associated with surveillance, cyber warfare, and cyber threats.

    The technological concepts reviewed in this course include but are not limited to National Information Infrastructures, the Internet, Dark Web, networks and sensors, and trends associated with our emerging Internet of Things.

    The course will review some salient cyber conflict history, international and national policies concerning cyber conflict and security engineering - secure by design, military/civilian doctrine, and some lessons learned from the use of cyber operations in past, present and future conflicts.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL308G
    Computer Game Programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL501G
    From an Idea to Reality
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL502M
    Human Computer Interaction
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL503M
    Distributed Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.)

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL506M
    Introduction to deep neural networks
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL608M
    Algorithms in the real world
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will cover the design and analysis of algorithms, with emphasis on algorithms for large datasets and real world applications.

    The algorithms covered will be drawn from various subfields, e.g. data and text compression, error correcting codes, large scale text search and search engines, parallel programming, GPU programming, streaming algorithms, probabilistic algorithms, nearest neighbor search in high dimensional datasets.

    Face-to-face learning
    Prerequisites
  • HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Prerequisites
    Attendance required in class
  • HBV205M
    Software Testing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in spring of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV403G
    Web Programming 2
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV603G
    Internship in computer science and software engineering - undergraduate
    Elective course
    24
    Free elective course within the programme
    24 ECTS, credits
    Course Description

    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 6-month internship.
    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.
    • Job training is three to six months in full-time employment.
    • 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.

    Prerequisites
    Attendance required in class
  • IÐN201G
    Operations in Organizations
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    LVF601M
    Introduction to Systems Biology
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI202G
    Introduction to data science
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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:

    1. Introduction to the Python programming language.
    2. Data wrangling and data preprocessing.
    3. Exploratory data analysis and visualization.
    4. Optimization.
    5. Clustering and dimensionality reduction.
    6. 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 learning
    Prerequisites
  • REI204M
    High Performance Computing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • REI603M
    The AI lifecycle
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL028M
    Seminar on Machine Learning
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    Prerequisites
  • TÖL401G
    Operating Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602G
    Computer Science Seminar for Undergraduates
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602M
    From an idea to reality II
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • TÖL607G
    Competitive programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Year unspecified
  • TÖL213M
    Applied Cryptography
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    In this course, students will take a practical approach to understanding the building and breaking of cryptographic implementations. The first half of this module will involve programming tasks while the second half will involve two mini projects. 

    Starting from simplistic approaches used historically, such as the Caeser cipher, to modern day protocols used to secure telecommunications ubiquitously, such as AES and TLS. Students will also consider the role of cryptography in society more broadly by researching how contentious technologies such as end-to-end encryption and Tor impact justice and privacy, and distributed ledgers can enable the decentralisation of key societal systems. Finally, the course will conclude with a mini project demonstrating a practical attack against a cryptographic implementation using ethical hacking approaches e.g. WiFi cracking, password bruteforcing or man-in-the-middle attack of an encrypted connection to sniff traffic. 

    The course will encompass the following stages: 

    1) Building cryptographic primitives in a programming language of choice. 

    2) Application engineering best practices. 

    3) A research project in cryptography and society. 

    4) A practical project in ethical hacking approaches to demonstrating weaknesses in cryptography implementations. 

    Face-to-face learning
    Prerequisites
Second year
  • Fall
  • HBV101G
    Introduction to Software Engineering
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    This course explains what software engineering is, why it is important, and which skills and competencies it entails.

    Through guest talks from professional software engineers and work on practical projects, the course introduces key concepts of software engineering – specifically, the forces that shape software products, and the roles and responsibilities of the people who drive them.

    Students work in teams to pick issues in their environment that could be solved or improved through software, and identify challenges that would need to be resolved in designing and building a suitable software solution. This motivates the methods and paradigms that will be introduced in detail in further courses of the software engineering program.

    Attention! This course is specifically intended for 1st year students in Software Engineering. New 1st year students in Computer Science or other programs need special permission from the faculty to sign up for the course, but it is not intended for 2nd or 3rd year students.

    Face-to-face learning
    Prerequisites
  • STÆ104G
    Mathematical Analysis I
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • STÆ107G
    Linear Algebra
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL101G
    Computer Science 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The Java programming language will be used to introduce basic practices in computer programming. Practice in programming is scheduled throughout the semester. An emphasis is placed on logical methods for writing program and good documentation. Main ideas related to computers and programming. Classes, objects and methods. Control statements. Strings and arrays, operations and built-in functons. Input and output. Inheritance. Ideas relatied to system design and good practices for program writing. Iteration and recursion. Searching and Sorting.

    Face-to-face learning
    Prerequisites
  • TÖL104G
    Mathematical Structure
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL205G
    Computers, operating systems and digital literacy basics
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    In this course, we study several concepts related to digital literacy. The goal of the course is to introduce the students to a broad range of topics without necessarily diving deep into each one.

    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. 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 learning
    Self-study
    Prerequisites
  • HBV201G
    Graphical User Interface Programming
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • HBV202G
    Software Design and Construction
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Note: This course is based on teamwork and uses flipped classroom teaching: therefore, it is necessary to attend the classes to work there in groups. Do not take this course if you have timetable collisions and cannot attend the classes.

    This course covers basic foundations of software design and software construction.

    Software design is covered in terms of object-oriented modeling using the Unified Modeling Language (UML), object-oriented design principles (e.g. interfaces and packages, the Liskov Substitution Principle), and basic design patterns.

    Software construction is covered mainly in terms of tools, in particular the more advanced features (such as code completion, using a debugger and improving code using refactoring) of an Integrated Development Environment (IDE), build automation and dependency management (e.g., the Maven or Gradle tool and modular Java), compilers (e.g., dealing with compiler warnings) and runtime systems (e.g., classpaths), and basics of unit testing.

    Face-to-face learning
    Prerequisites
  • STÆ205G
    Mathematical Analysis II
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL203G
    Computer Science 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The course will cover various data structures, algorithms and abstract data types. Among the data 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 small programming assignments in Java using the given data structures and algorithms.

    Face-to-face learning
    Prerequisites
  • Fall
  • HBV301G
    Requirements Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Software requirements express the needs and constraints placed on a software product so that it can solve an issue in an application domain. This course covers techniques for the elicitation, analysis, specification, validation and management of software requirements.

    The course introduces types and properties of software requirements, relevant stakeholders, techniques for requirements elicitation, analysis, specification and validation, as well as practical considerations such as change management and conflict resolution. Students practice these techniques in teams by applying them to projects of their choice.

    New mandatory course - first taught in 2023-2024

    Face-to-face learning
    Prerequisites
  • STÆ302G
    Mathematical Analysis III
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • TÖL303G
    Data Base Theory and Practice
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL304G
    Programming Languages
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL309G
    Computer organization and programming
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • HBV401G
    Software Development
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV404G
    Industrial Software Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • STÆ203G
    Probability and Statistics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Fall
  • REI504M
    Cloud Computing and Big Data
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • TÖL301G
    Formal Languages and Computability
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL105M
    Computer Graphics
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • HBV501G
    Software Project 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • IÐN502G
    Engineering Economics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN503G
    Project Management
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • EÐL102G
    Physics 1 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV506M
    Secure Software Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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 security assessment through testing their own and other team’s applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.

    It is therefore assumed the students have knowledge in web application development using JavaScript.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • Not taught this semester
    TÖL202M
    Compilers
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL212M
    Reasoned Programming
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    Fundamental concepts in program verification and reasoned programming are covered. Emphasis is placed on using reasoned programming to develop solid and proved versions of well-known algorithms, especially in the areas of searching, sorting, and binary search trees. Among algorithms covered are various versions of insertion sort, selection sort, quicksort, binary search, and searching in binary search trees. Emphasis will be placed on deepening the understanding of the algorithms as well as getting a good grip on program verification. Some exercises will use verification tools such as Dafny or OpenJML.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL401G
    Operating Systems
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL403G
    Analysis of Algorithms
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖV201G
    Digital Circuit Design and Analysis
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • HBV601G
    Software Project 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    RAF617M
    Fundaments of the Internet
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Modern day telecommunications are characterised by the fact that communicated data is carried on fixed telecommunications infrastructure on a majority of the path between tranmitter and receiver. Wireless infrastructure often conveys the signals at the end of the path. This yields both high speed and the comfort of wireless communications. It is of utmost importance for engineers working in telecoms to have a fundamental knowledge of fixed networks and the range of technologies deployed.

    In this course, the structure of fixed backbone and access networks will be described. Optical fibre and related technologies will be introduced, e.g. DWDM, SDH, Ethernet, ATM and MPLS-TP. Access network technologies on copper, coax and optical fibres will be treated, e.g. ADSL. VDSL, G.fast and  DOCSIS. Different FTTH (Fibre to the Home) technologies will be treated such as PON (Passive Optical Network), Active Ethernet and point-to-point Ethernet. 

    IP (Internet Protocol) has become a fundamental technology for modern fixed networks. IP native technologies will be described from the physical to the application layer. On the link layer, Ethernet will be in the focus as well as MPLS. Circuit and packet switching will be treated as well as circuit and packet orientation of networks. Sevices such as PSTN, VoIP, OTT and P2P will be treated. Backhauling of wireless networks such as mobile networks and Wi-Fi will also be treated.
    In introduction to network virtualisation and network function virtualisation (NFV) will be given as well as software defined networking (SDN). Legal and regulatory aspects will be introduced and aspects like network neutrality discfussed. Important players and stakeholders will be discussed, e.g. Google, Apple, Microsoft, Netflix and telecommunications service providers.
    Finally, local area networks will be discussed, home networking, smart homes, set-top-boxes, NAS, PLC, plastic optical fibres, MOCA and Wi-Fi introduced.

    The teaching form will be lectures and projects on IP communications will be worked. Students will write four papers on selected subjects and give presentations. 

    Face-to-face learning
    Prerequisites
  • EÐL201G
    Physics 2 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL605M
    Fundamentals of Ethical Hacking
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Ethical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and 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 cybersecurity server infrastructure.

    Face-to-face learning
    Prerequisites
  • Whole year courses
  • GKY001M
    Mentor in Sprettur
    Elective course
    5
    Free elective course within the programme
    5 ECTS, credits
    Course Description

    In the course, the student's task consists in being a mentor for participants that are upper secondary school students and university students in the project "Sprettur". Mentors' main role is to support and encourage participants in their studies and social life. As well as creating a constructive relationship with the participants, being a positive role model, and participating in events organized in Sprettur. The mentor role centers around building relationships and spending meaningful time together with the commitment to support participants. 

    Sprettur is a project that supports students with an immigrant or refugee background who come from families with little or no university education. The students in this course are mentors of the participants and are paired together based on a common field of interest. Each mentor is responsible for supporting two participants. Mentors plan activities with participants and spend three hours a month (from August to May) with Sprettur’s participants, three hours a month in a study group and attend five seminars that are spread over the school year. Students submit journal entries on Canvas in November and March. Diary entries are based on reading material and students' reflections on the mentorship. Compulsory attendance in events, study groups, and seminars. The course is taught in Icelandic and English. 

    Students must apply for a seat in the course. Applicants go through an interview process and 15-30 students are selected to participate. 

    See the digital application form. 

    More information about Sprettur can be found here: www.hi.is/sprettur  

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
    Attendance required in class
  • Fall
  • HBV507M
    Usable Privacy and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Survey of the field of usable security and privacy with an emphasis on emerging technologies. Topics include authentication, location privacy, social network privacy, behavioral advertising, - health privacy, anonymity, cryptocurrency, technical writing and ethical conduct of usable privacy and security research.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV103M
    Software Maintenance
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in fall of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • Not taught this semester
    HBV502G
    Hackathon Project
    Elective course
    4
    Free elective course within the programme
    4 ECTS, credits
    Course Description

    This course aims to give students an opportunity for independent teamwork on a project of their own design under their own direction, developing it from inception to the demonstration of a prototype.

    The projects will proceed as part of the HealthTech Hackathon or FinTech Hackathon (Lausnarmót) in the context of Innovation Week 2021.

    Students interested in participating must first pitch their idea to the hackathon organizers in early August. A committee will review all submitted ideas and select those considered most innovative, realistic, and having the potential to solve future challenges.

    Selected teams will be announced in August. Only student teams with up to five members selected by the committee can sign up for this course and will have 4 weeks in September to work on their projects. Students are expected to work on their projects conscientiously over the 4-week period, expecting to dedicate 25-30 hours to the project each week. All teams will have access to regular mentoring sessions.

    Final presentations will take place in early October. All teams that participated consistently and gave a successful final presentation will receive a passing grade, independently of the hackathon jury’s ranking.

    Note that this course is mutually exclusive with the HBV004G and HBV603G internships and the HBV261L final project.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV505M
    Software Quality Management
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course is based on flipped-classroom style weekly reading, videos and assignments on software quality management-related aspects of the Software Development Life Cycle (SDLC) and by covering some parts of DevOps also Application Lifecycle Management (ALM). In parallel to theoretical concepts, the application of source code-centric tools relevant for quality management is trained by applying them to a codebase throughout the course using the ALM tool GitLab. The concepts and tools are independent from a particular software development process and cover:

    • Software Quality Foundations, Software Quality Models.
    • Configuration management (CM) and traceability:
      • Version management (e.g. Git),
      • Change management (e.g. issue tracker),
      • Build management (e.g. Maven),
      • Release management
    • Continuous integration (CI) (e.g. using GitLab pipelines).
    • Integrating testing into a CI pipeline (e.g. using JUnit and GitLab).
    • Reviews (e.g. tool-based code review)
    • Static analysis (e.g. SonarCloud)
    • Metrics for quality management (product and process metrics).
    • Quality standards:
      • Software Life Cycle Processes,
      • Software Process Improvement and maturity assessment (e.g. CMMI).
    • Using a Wiki to create a quality plan and other documentation.

    Students chose their own codebase (e.g. from the Software Project 1 or 2 course) to which they apply the concepts and tools tought in this course. While the teaching material and tools assumes Java as programming language, students are welcome to use a codebase in another programming language.

    Software quality in agile development processes is covered by student presentations at the end of the course.

    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 Java programming experience. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2.
    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 learning
    The course is taught if the specified conditions are met
    Prerequisites
  • IÐN301G
    Analysis of Processes and Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN510M
    Logistics & Environmental Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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,

    Face-to-face learning
    Prerequisites
  • REI503M
    Performance analysis of computer systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • REI504M
    Cloud Computing and Big Data
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    REI506M
    Machine Learning for Earth Observation powered by Supercomputers
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    STÆ532M
    Cryptocurrency
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will start by introducing the basic concepts of electronic currencies, such as wallets, addresses and transactions. The students will get to know encoding, transactions, blocks and blockchains. The cryptocurrency Smileycoin will be used as an example throughout the course.
    Students will compile their own wallets from source and dive deeply enough into the underlying algorithms to be able to put together their own transactions from the Linux command line and read typical wallet code written in C++.
    Students will learn how to call the wallet from other software, e.g. to analyse the flow of funds.
    Students will learn how to implement several additions to the traditional use of electronic currency such as encoded messages, running software to react to payments etc.
    Students will set up their own examples of addition and study how to set up atomic swaps between different currencies, using the Smileycoin for announcements.

    Homework will be individualised, selected from different formats (a) solutions based on the wallet on the command line, (2) documents to form handouts or other material in the tutor-web, (3) short programs (APIs) which respond to transactions being send to particular addresses or to a
    particular wallet, (4) programs which talk to exchanged and/or (5) new user interfaces which improve or add to the functionality of a wallet.

    All the material and assignments will be in English. Returned assignments will become a part of the open tutor-web educational system.

    The course may be taught as a reading course or self-study, but the exact implementation depends on participation.

    Face-to-face learning
    Prerequisites
  • TÖL029M
    Introduction to Information Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Þetta námskeið byggir grunn að skilningi á lykilatriðum sem tengjast verndun upplýsinga, ákvörðun á verndarstigi og viðbrögð við öryggisatvikum, og hönnun á samræmdu raunhæfu upplýsingaöryggiskerfi, með viðeigandi innbrotsskynjun og tilkynningum.  Tilgangur námskeiðsins er að veita nemandanum yfirsýn yfir svið upplýsingaöryggis og upplýsingatrygginga.  Nemendur munu sjá ýmsar gerðir öryggisaðgerða, aðferðafræða og verklags.  Umfjöllunin mun taka fyrir skoðun og vernd upplýsingaeigna, uppgötvun og viðbrögð við ógnum við upplýsingaeignir, verklagsreglur fyrir og eftir öryggisatvik, tæknileg og stjórnunarleg viðbrögð og yfirlit yfir skipulagningu upplýsingaöryggis og starfsmannahald.  Meðal efnis eru áhættumat, auðkenning, veföryggi, öryggi forrita, persónuvernd og gagnavernd, kynning á dulmálskóðun, öryggisarkitektúr, eldveggir og önnur tæki og netskipulag.

    Face-to-face learning
    Prerequisites
  • TÖL103M
    Programming Projects on Internet of Things
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL106M
    Security Engineering for Critical Information Infrastructures
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The overarching objective of this experimental course is to provide a practical technical and policy introduction for the foundations of the building and operating of dependable, complex distributed national information infrastructures.

    The course teaches university students how to model, design, implement, operate, and defend these national information infrastructures (NII) to withstand errors and attacks.

    We will introduce complementary engineering methodologies intended to assist NII policymakers, stewards, operators, and engineering professionals to implement protective initiatives to design and improve the survivability of NII systems, critical functions, and processes.

    The course will include cyber threat intelligence tradecraft and the experimental use of both open-source intelligence and an artificial intelligence tool i.e. ChatGPT

    Face-to-face learning
    Prerequisites
  • TÖL107G
    Web Programming 1
    Elective course
    8
    Free elective course within the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL107M
    Cyber Conflicts, Cyber Security Threats and Engineering, National Information Infrastructures (NII)
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    This interdisciplinary course examines underlying and emerging information technologies, cyber security engineering and policies associated with surveillance, cyber warfare, and cyber threats.

    The technological concepts reviewed in this course include but are not limited to National Information Infrastructures, the Internet, Dark Web, networks and sensors, and trends associated with our emerging Internet of Things.

    The course will review some salient cyber conflict history, international and national policies concerning cyber conflict and security engineering - secure by design, military/civilian doctrine, and some lessons learned from the use of cyber operations in past, present and future conflicts.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL308G
    Computer Game Programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL501G
    From an Idea to Reality
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL502M
    Human Computer Interaction
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL503M
    Distributed Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.)

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL506M
    Introduction to deep neural networks
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL608M
    Algorithms in the real world
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will cover the design and analysis of algorithms, with emphasis on algorithms for large datasets and real world applications.

    The algorithms covered will be drawn from various subfields, e.g. data and text compression, error correcting codes, large scale text search and search engines, parallel programming, GPU programming, streaming algorithms, probabilistic algorithms, nearest neighbor search in high dimensional datasets.

    Face-to-face learning
    Prerequisites
  • HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Prerequisites
    Attendance required in class
  • HBV205M
    Software Testing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in spring of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV403G
    Web Programming 2
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV603G
    Internship in computer science and software engineering - undergraduate
    Elective course
    24
    Free elective course within the programme
    24 ECTS, credits
    Course Description

    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 6-month internship.
    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.
    • Job training is three to six months in full-time employment.
    • 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.

    Prerequisites
    Attendance required in class
  • IÐN201G
    Operations in Organizations
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    LVF601M
    Introduction to Systems Biology
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI202G
    Introduction to data science
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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:

    1. Introduction to the Python programming language.
    2. Data wrangling and data preprocessing.
    3. Exploratory data analysis and visualization.
    4. Optimization.
    5. Clustering and dimensionality reduction.
    6. 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 learning
    Prerequisites
  • REI204M
    High Performance Computing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • REI603M
    The AI lifecycle
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL028M
    Seminar on Machine Learning
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    Prerequisites
  • TÖL401G
    Operating Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602G
    Computer Science Seminar for Undergraduates
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602M
    From an idea to reality II
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • TÖL607G
    Competitive programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Year unspecified
  • TÖL213M
    Applied Cryptography
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    In this course, students will take a practical approach to understanding the building and breaking of cryptographic implementations. The first half of this module will involve programming tasks while the second half will involve two mini projects. 

    Starting from simplistic approaches used historically, such as the Caeser cipher, to modern day protocols used to secure telecommunications ubiquitously, such as AES and TLS. Students will also consider the role of cryptography in society more broadly by researching how contentious technologies such as end-to-end encryption and Tor impact justice and privacy, and distributed ledgers can enable the decentralisation of key societal systems. Finally, the course will conclude with a mini project demonstrating a practical attack against a cryptographic implementation using ethical hacking approaches e.g. WiFi cracking, password bruteforcing or man-in-the-middle attack of an encrypted connection to sniff traffic. 

    The course will encompass the following stages: 

    1) Building cryptographic primitives in a programming language of choice. 

    2) Application engineering best practices. 

    3) A research project in cryptography and society. 

    4) A practical project in ethical hacking approaches to demonstrating weaknesses in cryptography implementations. 

    Face-to-face learning
    Prerequisites
Third year
  • Fall
  • HBV101G
    Introduction to Software Engineering
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    This course explains what software engineering is, why it is important, and which skills and competencies it entails.

    Through guest talks from professional software engineers and work on practical projects, the course introduces key concepts of software engineering – specifically, the forces that shape software products, and the roles and responsibilities of the people who drive them.

    Students work in teams to pick issues in their environment that could be solved or improved through software, and identify challenges that would need to be resolved in designing and building a suitable software solution. This motivates the methods and paradigms that will be introduced in detail in further courses of the software engineering program.

    Attention! This course is specifically intended for 1st year students in Software Engineering. New 1st year students in Computer Science or other programs need special permission from the faculty to sign up for the course, but it is not intended for 2nd or 3rd year students.

    Face-to-face learning
    Prerequisites
  • STÆ104G
    Mathematical Analysis I
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • STÆ107G
    Linear Algebra
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL101G
    Computer Science 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The Java programming language will be used to introduce basic practices in computer programming. Practice in programming is scheduled throughout the semester. An emphasis is placed on logical methods for writing program and good documentation. Main ideas related to computers and programming. Classes, objects and methods. Control statements. Strings and arrays, operations and built-in functons. Input and output. Inheritance. Ideas relatied to system design and good practices for program writing. Iteration and recursion. Searching and Sorting.

    Face-to-face learning
    Prerequisites
  • TÖL104G
    Mathematical Structure
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL205G
    Computers, operating systems and digital literacy basics
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    In this course, we study several concepts related to digital literacy. The goal of the course is to introduce the students to a broad range of topics without necessarily diving deep into each one.

    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. 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 learning
    Self-study
    Prerequisites
  • HBV201G
    Graphical User Interface Programming
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • HBV202G
    Software Design and Construction
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Note: This course is based on teamwork and uses flipped classroom teaching: therefore, it is necessary to attend the classes to work there in groups. Do not take this course if you have timetable collisions and cannot attend the classes.

    This course covers basic foundations of software design and software construction.

    Software design is covered in terms of object-oriented modeling using the Unified Modeling Language (UML), object-oriented design principles (e.g. interfaces and packages, the Liskov Substitution Principle), and basic design patterns.

    Software construction is covered mainly in terms of tools, in particular the more advanced features (such as code completion, using a debugger and improving code using refactoring) of an Integrated Development Environment (IDE), build automation and dependency management (e.g., the Maven or Gradle tool and modular Java), compilers (e.g., dealing with compiler warnings) and runtime systems (e.g., classpaths), and basics of unit testing.

    Face-to-face learning
    Prerequisites
  • STÆ205G
    Mathematical Analysis II
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL203G
    Computer Science 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The course will cover various data structures, algorithms and abstract data types. Among the data 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 small programming assignments in Java using the given data structures and algorithms.

    Face-to-face learning
    Prerequisites
  • Fall
  • HBV301G
    Requirements Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Software requirements express the needs and constraints placed on a software product so that it can solve an issue in an application domain. This course covers techniques for the elicitation, analysis, specification, validation and management of software requirements.

    The course introduces types and properties of software requirements, relevant stakeholders, techniques for requirements elicitation, analysis, specification and validation, as well as practical considerations such as change management and conflict resolution. Students practice these techniques in teams by applying them to projects of their choice.

    New mandatory course - first taught in 2023-2024

    Face-to-face learning
    Prerequisites
  • STÆ302G
    Mathematical Analysis III
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • TÖL303G
    Data Base Theory and Practice
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL304G
    Programming Languages
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL309G
    Computer organization and programming
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • HBV401G
    Software Development
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV404G
    Industrial Software Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • STÆ203G
    Probability and Statistics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Fall
  • REI504M
    Cloud Computing and Big Data
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • TÖL301G
    Formal Languages and Computability
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL105M
    Computer Graphics
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • HBV501G
    Software Project 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • IÐN502G
    Engineering Economics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN503G
    Project Management
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • EÐL102G
    Physics 1 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV506M
    Secure Software Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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 security assessment through testing their own and other team’s applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.

    It is therefore assumed the students have knowledge in web application development using JavaScript.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • Not taught this semester
    TÖL202M
    Compilers
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL212M
    Reasoned Programming
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    Fundamental concepts in program verification and reasoned programming are covered. Emphasis is placed on using reasoned programming to develop solid and proved versions of well-known algorithms, especially in the areas of searching, sorting, and binary search trees. Among algorithms covered are various versions of insertion sort, selection sort, quicksort, binary search, and searching in binary search trees. Emphasis will be placed on deepening the understanding of the algorithms as well as getting a good grip on program verification. Some exercises will use verification tools such as Dafny or OpenJML.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL401G
    Operating Systems
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL403G
    Analysis of Algorithms
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖV201G
    Digital Circuit Design and Analysis
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • HBV601G
    Software Project 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    RAF617M
    Fundaments of the Internet
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Modern day telecommunications are characterised by the fact that communicated data is carried on fixed telecommunications infrastructure on a majority of the path between tranmitter and receiver. Wireless infrastructure often conveys the signals at the end of the path. This yields both high speed and the comfort of wireless communications. It is of utmost importance for engineers working in telecoms to have a fundamental knowledge of fixed networks and the range of technologies deployed.

    In this course, the structure of fixed backbone and access networks will be described. Optical fibre and related technologies will be introduced, e.g. DWDM, SDH, Ethernet, ATM and MPLS-TP. Access network technologies on copper, coax and optical fibres will be treated, e.g. ADSL. VDSL, G.fast and  DOCSIS. Different FTTH (Fibre to the Home) technologies will be treated such as PON (Passive Optical Network), Active Ethernet and point-to-point Ethernet. 

    IP (Internet Protocol) has become a fundamental technology for modern fixed networks. IP native technologies will be described from the physical to the application layer. On the link layer, Ethernet will be in the focus as well as MPLS. Circuit and packet switching will be treated as well as circuit and packet orientation of networks. Sevices such as PSTN, VoIP, OTT and P2P will be treated. Backhauling of wireless networks such as mobile networks and Wi-Fi will also be treated.
    In introduction to network virtualisation and network function virtualisation (NFV) will be given as well as software defined networking (SDN). Legal and regulatory aspects will be introduced and aspects like network neutrality discfussed. Important players and stakeholders will be discussed, e.g. Google, Apple, Microsoft, Netflix and telecommunications service providers.
    Finally, local area networks will be discussed, home networking, smart homes, set-top-boxes, NAS, PLC, plastic optical fibres, MOCA and Wi-Fi introduced.

    The teaching form will be lectures and projects on IP communications will be worked. Students will write four papers on selected subjects and give presentations. 

    Face-to-face learning
    Prerequisites
  • EÐL201G
    Physics 2 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL605M
    Fundamentals of Ethical Hacking
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Ethical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and 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 cybersecurity server infrastructure.

    Face-to-face learning
    Prerequisites
  • Whole year courses
  • GKY001M
    Mentor in Sprettur
    Elective course
    5
    Free elective course within the programme
    5 ECTS, credits
    Course Description

    In the course, the student's task consists in being a mentor for participants that are upper secondary school students and university students in the project "Sprettur". Mentors' main role is to support and encourage participants in their studies and social life. As well as creating a constructive relationship with the participants, being a positive role model, and participating in events organized in Sprettur. The mentor role centers around building relationships and spending meaningful time together with the commitment to support participants. 

    Sprettur is a project that supports students with an immigrant or refugee background who come from families with little or no university education. The students in this course are mentors of the participants and are paired together based on a common field of interest. Each mentor is responsible for supporting two participants. Mentors plan activities with participants and spend three hours a month (from August to May) with Sprettur’s participants, three hours a month in a study group and attend five seminars that are spread over the school year. Students submit journal entries on Canvas in November and March. Diary entries are based on reading material and students' reflections on the mentorship. Compulsory attendance in events, study groups, and seminars. The course is taught in Icelandic and English. 

    Students must apply for a seat in the course. Applicants go through an interview process and 15-30 students are selected to participate. 

    See the digital application form. 

    More information about Sprettur can be found here: www.hi.is/sprettur  

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
    Attendance required in class
  • Fall
  • HBV507M
    Usable Privacy and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Survey of the field of usable security and privacy with an emphasis on emerging technologies. Topics include authentication, location privacy, social network privacy, behavioral advertising, - health privacy, anonymity, cryptocurrency, technical writing and ethical conduct of usable privacy and security research.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV103M
    Software Maintenance
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in fall of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • Not taught this semester
    HBV502G
    Hackathon Project
    Elective course
    4
    Free elective course within the programme
    4 ECTS, credits
    Course Description

    This course aims to give students an opportunity for independent teamwork on a project of their own design under their own direction, developing it from inception to the demonstration of a prototype.

    The projects will proceed as part of the HealthTech Hackathon or FinTech Hackathon (Lausnarmót) in the context of Innovation Week 2021.

    Students interested in participating must first pitch their idea to the hackathon organizers in early August. A committee will review all submitted ideas and select those considered most innovative, realistic, and having the potential to solve future challenges.

    Selected teams will be announced in August. Only student teams with up to five members selected by the committee can sign up for this course and will have 4 weeks in September to work on their projects. Students are expected to work on their projects conscientiously over the 4-week period, expecting to dedicate 25-30 hours to the project each week. All teams will have access to regular mentoring sessions.

    Final presentations will take place in early October. All teams that participated consistently and gave a successful final presentation will receive a passing grade, independently of the hackathon jury’s ranking.

    Note that this course is mutually exclusive with the HBV004G and HBV603G internships and the HBV261L final project.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV505M
    Software Quality Management
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course is based on flipped-classroom style weekly reading, videos and assignments on software quality management-related aspects of the Software Development Life Cycle (SDLC) and by covering some parts of DevOps also Application Lifecycle Management (ALM). In parallel to theoretical concepts, the application of source code-centric tools relevant for quality management is trained by applying them to a codebase throughout the course using the ALM tool GitLab. The concepts and tools are independent from a particular software development process and cover:

    • Software Quality Foundations, Software Quality Models.
    • Configuration management (CM) and traceability:
      • Version management (e.g. Git),
      • Change management (e.g. issue tracker),
      • Build management (e.g. Maven),
      • Release management
    • Continuous integration (CI) (e.g. using GitLab pipelines).
    • Integrating testing into a CI pipeline (e.g. using JUnit and GitLab).
    • Reviews (e.g. tool-based code review)
    • Static analysis (e.g. SonarCloud)
    • Metrics for quality management (product and process metrics).
    • Quality standards:
      • Software Life Cycle Processes,
      • Software Process Improvement and maturity assessment (e.g. CMMI).
    • Using a Wiki to create a quality plan and other documentation.

    Students chose their own codebase (e.g. from the Software Project 1 or 2 course) to which they apply the concepts and tools tought in this course. While the teaching material and tools assumes Java as programming language, students are welcome to use a codebase in another programming language.

    Software quality in agile development processes is covered by student presentations at the end of the course.

    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 Java programming experience. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2.
    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 learning
    The course is taught if the specified conditions are met
    Prerequisites
  • IÐN301G
    Analysis of Processes and Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN510M
    Logistics & Environmental Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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,

    Face-to-face learning
    Prerequisites
  • REI503M
    Performance analysis of computer systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • REI504M
    Cloud Computing and Big Data
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    REI506M
    Machine Learning for Earth Observation powered by Supercomputers
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    STÆ532M
    Cryptocurrency
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will start by introducing the basic concepts of electronic currencies, such as wallets, addresses and transactions. The students will get to know encoding, transactions, blocks and blockchains. The cryptocurrency Smileycoin will be used as an example throughout the course.
    Students will compile their own wallets from source and dive deeply enough into the underlying algorithms to be able to put together their own transactions from the Linux command line and read typical wallet code written in C++.
    Students will learn how to call the wallet from other software, e.g. to analyse the flow of funds.
    Students will learn how to implement several additions to the traditional use of electronic currency such as encoded messages, running software to react to payments etc.
    Students will set up their own examples of addition and study how to set up atomic swaps between different currencies, using the Smileycoin for announcements.

    Homework will be individualised, selected from different formats (a) solutions based on the wallet on the command line, (2) documents to form handouts or other material in the tutor-web, (3) short programs (APIs) which respond to transactions being send to particular addresses or to a
    particular wallet, (4) programs which talk to exchanged and/or (5) new user interfaces which improve or add to the functionality of a wallet.

    All the material and assignments will be in English. Returned assignments will become a part of the open tutor-web educational system.

    The course may be taught as a reading course or self-study, but the exact implementation depends on participation.

    Face-to-face learning
    Prerequisites
  • TÖL029M
    Introduction to Information Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Þetta námskeið byggir grunn að skilningi á lykilatriðum sem tengjast verndun upplýsinga, ákvörðun á verndarstigi og viðbrögð við öryggisatvikum, og hönnun á samræmdu raunhæfu upplýsingaöryggiskerfi, með viðeigandi innbrotsskynjun og tilkynningum.  Tilgangur námskeiðsins er að veita nemandanum yfirsýn yfir svið upplýsingaöryggis og upplýsingatrygginga.  Nemendur munu sjá ýmsar gerðir öryggisaðgerða, aðferðafræða og verklags.  Umfjöllunin mun taka fyrir skoðun og vernd upplýsingaeigna, uppgötvun og viðbrögð við ógnum við upplýsingaeignir, verklagsreglur fyrir og eftir öryggisatvik, tæknileg og stjórnunarleg viðbrögð og yfirlit yfir skipulagningu upplýsingaöryggis og starfsmannahald.  Meðal efnis eru áhættumat, auðkenning, veföryggi, öryggi forrita, persónuvernd og gagnavernd, kynning á dulmálskóðun, öryggisarkitektúr, eldveggir og önnur tæki og netskipulag.

    Face-to-face learning
    Prerequisites
  • TÖL103M
    Programming Projects on Internet of Things
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL106M
    Security Engineering for Critical Information Infrastructures
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The overarching objective of this experimental course is to provide a practical technical and policy introduction for the foundations of the building and operating of dependable, complex distributed national information infrastructures.

    The course teaches university students how to model, design, implement, operate, and defend these national information infrastructures (NII) to withstand errors and attacks.

    We will introduce complementary engineering methodologies intended to assist NII policymakers, stewards, operators, and engineering professionals to implement protective initiatives to design and improve the survivability of NII systems, critical functions, and processes.

    The course will include cyber threat intelligence tradecraft and the experimental use of both open-source intelligence and an artificial intelligence tool i.e. ChatGPT

    Face-to-face learning
    Prerequisites
  • TÖL107G
    Web Programming 1
    Elective course
    8
    Free elective course within the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL107M
    Cyber Conflicts, Cyber Security Threats and Engineering, National Information Infrastructures (NII)
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    This interdisciplinary course examines underlying and emerging information technologies, cyber security engineering and policies associated with surveillance, cyber warfare, and cyber threats.

    The technological concepts reviewed in this course include but are not limited to National Information Infrastructures, the Internet, Dark Web, networks and sensors, and trends associated with our emerging Internet of Things.

    The course will review some salient cyber conflict history, international and national policies concerning cyber conflict and security engineering - secure by design, military/civilian doctrine, and some lessons learned from the use of cyber operations in past, present and future conflicts.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL308G
    Computer Game Programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL501G
    From an Idea to Reality
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL502M
    Human Computer Interaction
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL503M
    Distributed Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.)

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL506M
    Introduction to deep neural networks
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL608M
    Algorithms in the real world
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will cover the design and analysis of algorithms, with emphasis on algorithms for large datasets and real world applications.

    The algorithms covered will be drawn from various subfields, e.g. data and text compression, error correcting codes, large scale text search and search engines, parallel programming, GPU programming, streaming algorithms, probabilistic algorithms, nearest neighbor search in high dimensional datasets.

    Face-to-face learning
    Prerequisites
  • HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Prerequisites
    Attendance required in class
  • HBV205M
    Software Testing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in spring of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV403G
    Web Programming 2
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV603G
    Internship in computer science and software engineering - undergraduate
    Elective course
    24
    Free elective course within the programme
    24 ECTS, credits
    Course Description

    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 6-month internship.
    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.
    • Job training is three to six months in full-time employment.
    • 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.

    Prerequisites
    Attendance required in class
  • IÐN201G
    Operations in Organizations
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    LVF601M
    Introduction to Systems Biology
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI202G
    Introduction to data science
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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:

    1. Introduction to the Python programming language.
    2. Data wrangling and data preprocessing.
    3. Exploratory data analysis and visualization.
    4. Optimization.
    5. Clustering and dimensionality reduction.
    6. 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 learning
    Prerequisites
  • REI204M
    High Performance Computing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • REI603M
    The AI lifecycle
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL028M
    Seminar on Machine Learning
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    Prerequisites
  • TÖL401G
    Operating Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602G
    Computer Science Seminar for Undergraduates
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602M
    From an idea to reality II
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • TÖL607G
    Competitive programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Year unspecified
  • TÖL213M
    Applied Cryptography
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    In this course, students will take a practical approach to understanding the building and breaking of cryptographic implementations. The first half of this module will involve programming tasks while the second half will involve two mini projects. 

    Starting from simplistic approaches used historically, such as the Caeser cipher, to modern day protocols used to secure telecommunications ubiquitously, such as AES and TLS. Students will also consider the role of cryptography in society more broadly by researching how contentious technologies such as end-to-end encryption and Tor impact justice and privacy, and distributed ledgers can enable the decentralisation of key societal systems. Finally, the course will conclude with a mini project demonstrating a practical attack against a cryptographic implementation using ethical hacking approaches e.g. WiFi cracking, password bruteforcing or man-in-the-middle attack of an encrypted connection to sniff traffic. 

    The course will encompass the following stages: 

    1) Building cryptographic primitives in a programming language of choice. 

    2) Application engineering best practices. 

    3) A research project in cryptography and society. 

    4) A practical project in ethical hacking approaches to demonstrating weaknesses in cryptography implementations. 

    Face-to-face learning
    Prerequisites
Year unspecified
  • Fall
  • HBV101G
    Introduction to Software Engineering
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    This course explains what software engineering is, why it is important, and which skills and competencies it entails.

    Through guest talks from professional software engineers and work on practical projects, the course introduces key concepts of software engineering – specifically, the forces that shape software products, and the roles and responsibilities of the people who drive them.

    Students work in teams to pick issues in their environment that could be solved or improved through software, and identify challenges that would need to be resolved in designing and building a suitable software solution. This motivates the methods and paradigms that will be introduced in detail in further courses of the software engineering program.

    Attention! This course is specifically intended for 1st year students in Software Engineering. New 1st year students in Computer Science or other programs need special permission from the faculty to sign up for the course, but it is not intended for 2nd or 3rd year students.

    Face-to-face learning
    Prerequisites
  • STÆ104G
    Mathematical Analysis I
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • STÆ107G
    Linear Algebra
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL101G
    Computer Science 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The Java programming language will be used to introduce basic practices in computer programming. Practice in programming is scheduled throughout the semester. An emphasis is placed on logical methods for writing program and good documentation. Main ideas related to computers and programming. Classes, objects and methods. Control statements. Strings and arrays, operations and built-in functons. Input and output. Inheritance. Ideas relatied to system design and good practices for program writing. Iteration and recursion. Searching and Sorting.

    Face-to-face learning
    Prerequisites
  • TÖL104G
    Mathematical Structure
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL205G
    Computers, operating systems and digital literacy basics
    Mandatory (required) course
    4
    A mandatory (required) course for the programme
    4 ECTS, credits
    Course Description

    In this course, we study several concepts related to digital literacy. The goal of the course is to introduce the students to a broad range of topics without necessarily diving deep into each one.

    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. 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 learning
    Self-study
    Prerequisites
  • HBV201G
    Graphical User Interface Programming
    Mandatory (required) course
    8
    A mandatory (required) course for the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • HBV202G
    Software Design and Construction
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Note: This course is based on teamwork and uses flipped classroom teaching: therefore, it is necessary to attend the classes to work there in groups. Do not take this course if you have timetable collisions and cannot attend the classes.

    This course covers basic foundations of software design and software construction.

    Software design is covered in terms of object-oriented modeling using the Unified Modeling Language (UML), object-oriented design principles (e.g. interfaces and packages, the Liskov Substitution Principle), and basic design patterns.

    Software construction is covered mainly in terms of tools, in particular the more advanced features (such as code completion, using a debugger and improving code using refactoring) of an Integrated Development Environment (IDE), build automation and dependency management (e.g., the Maven or Gradle tool and modular Java), compilers (e.g., dealing with compiler warnings) and runtime systems (e.g., classpaths), and basics of unit testing.

    Face-to-face learning
    Prerequisites
  • STÆ205G
    Mathematical Analysis II
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL203G
    Computer Science 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    The course will cover various data structures, algorithms and abstract data types. Among the data 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 small programming assignments in Java using the given data structures and algorithms.

    Face-to-face learning
    Prerequisites
  • Fall
  • HBV301G
    Requirements Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    Software requirements express the needs and constraints placed on a software product so that it can solve an issue in an application domain. This course covers techniques for the elicitation, analysis, specification, validation and management of software requirements.

    The course introduces types and properties of software requirements, relevant stakeholders, techniques for requirements elicitation, analysis, specification and validation, as well as practical considerations such as change management and conflict resolution. Students practice these techniques in teams by applying them to projects of their choice.

    New mandatory course - first taught in 2023-2024

    Face-to-face learning
    Prerequisites
  • STÆ302G
    Mathematical Analysis III
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • TÖL303G
    Data Base Theory and Practice
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL304G
    Programming Languages
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL309G
    Computer organization and programming
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • HBV401G
    Software Development
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV404G
    Industrial Software Engineering
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • STÆ203G
    Probability and Statistics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Fall
  • REI504M
    Cloud Computing and Big Data
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • TÖL301G
    Formal Languages and Computability
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL105M
    Computer Graphics
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • HBV501G
    Software Project 1
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course 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 learning
    Prerequisites
  • IÐN502G
    Engineering Economics
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN503G
    Project Management
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • EÐL102G
    Physics 1 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV506M
    Secure Software Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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 security assessment through testing their own and other team’s applications for vulnerabilities against the OWASP top 10 most critical security risks to web applications.

    It is therefore assumed the students have knowledge in web application development using JavaScript.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • Not taught this semester
    TÖL202M
    Compilers
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL212M
    Reasoned Programming
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    Fundamental concepts in program verification and reasoned programming are covered. Emphasis is placed on using reasoned programming to develop solid and proved versions of well-known algorithms, especially in the areas of searching, sorting, and binary search trees. Among algorithms covered are various versions of insertion sort, selection sort, quicksort, binary search, and searching in binary search trees. Emphasis will be placed on deepening the understanding of the algorithms as well as getting a good grip on program verification. Some exercises will use verification tools such as Dafny or OpenJML.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL401G
    Operating Systems
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL403G
    Analysis of Algorithms
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖV201G
    Digital Circuit Design and Analysis
    Restricted elective course
    6
    Restricted elective course, conditions apply
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • HBV601G
    Software Project 2
    Mandatory (required) course
    6
    A mandatory (required) course for the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    RAF617M
    Fundaments of the Internet
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Modern day telecommunications are characterised by the fact that communicated data is carried on fixed telecommunications infrastructure on a majority of the path between tranmitter and receiver. Wireless infrastructure often conveys the signals at the end of the path. This yields both high speed and the comfort of wireless communications. It is of utmost importance for engineers working in telecoms to have a fundamental knowledge of fixed networks and the range of technologies deployed.

    In this course, the structure of fixed backbone and access networks will be described. Optical fibre and related technologies will be introduced, e.g. DWDM, SDH, Ethernet, ATM and MPLS-TP. Access network technologies on copper, coax and optical fibres will be treated, e.g. ADSL. VDSL, G.fast and  DOCSIS. Different FTTH (Fibre to the Home) technologies will be treated such as PON (Passive Optical Network), Active Ethernet and point-to-point Ethernet. 

    IP (Internet Protocol) has become a fundamental technology for modern fixed networks. IP native technologies will be described from the physical to the application layer. On the link layer, Ethernet will be in the focus as well as MPLS. Circuit and packet switching will be treated as well as circuit and packet orientation of networks. Sevices such as PSTN, VoIP, OTT and P2P will be treated. Backhauling of wireless networks such as mobile networks and Wi-Fi will also be treated.
    In introduction to network virtualisation and network function virtualisation (NFV) will be given as well as software defined networking (SDN). Legal and regulatory aspects will be introduced and aspects like network neutrality discfussed. Important players and stakeholders will be discussed, e.g. Google, Apple, Microsoft, Netflix and telecommunications service providers.
    Finally, local area networks will be discussed, home networking, smart homes, set-top-boxes, NAS, PLC, plastic optical fibres, MOCA and Wi-Fi introduced.

    The teaching form will be lectures and projects on IP communications will be worked. Students will write four papers on selected subjects and give presentations. 

    Face-to-face learning
    Prerequisites
  • EÐL201G
    Physics 2 V
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL605M
    Fundamentals of Ethical Hacking
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Ethical hacking is the discipline of attacker perspective security analysis. Using tools and techniques used by malicious hackers, ethical hackers gain unique and 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 cybersecurity server infrastructure.

    Face-to-face learning
    Prerequisites
  • Whole year courses
  • GKY001M
    Mentor in Sprettur
    Elective course
    5
    Free elective course within the programme
    5 ECTS, credits
    Course Description

    In the course, the student's task consists in being a mentor for participants that are upper secondary school students and university students in the project "Sprettur". Mentors' main role is to support and encourage participants in their studies and social life. As well as creating a constructive relationship with the participants, being a positive role model, and participating in events organized in Sprettur. The mentor role centers around building relationships and spending meaningful time together with the commitment to support participants. 

    Sprettur is a project that supports students with an immigrant or refugee background who come from families with little or no university education. The students in this course are mentors of the participants and are paired together based on a common field of interest. Each mentor is responsible for supporting two participants. Mentors plan activities with participants and spend three hours a month (from August to May) with Sprettur’s participants, three hours a month in a study group and attend five seminars that are spread over the school year. Students submit journal entries on Canvas in November and March. Diary entries are based on reading material and students' reflections on the mentorship. Compulsory attendance in events, study groups, and seminars. The course is taught in Icelandic and English. 

    Students must apply for a seat in the course. Applicants go through an interview process and 15-30 students are selected to participate. 

    See the digital application form. 

    More information about Sprettur can be found here: www.hi.is/sprettur  

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
    Attendance required in class
  • Fall
  • HBV507M
    Usable Privacy and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Survey of the field of usable security and privacy with an emphasis on emerging technologies. Topics include authentication, location privacy, social network privacy, behavioral advertising, - health privacy, anonymity, cryptocurrency, technical writing and ethical conduct of usable privacy and security research.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    HBV103M
    Software Maintenance
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in fall of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • Not taught this semester
    HBV502G
    Hackathon Project
    Elective course
    4
    Free elective course within the programme
    4 ECTS, credits
    Course Description

    This course aims to give students an opportunity for independent teamwork on a project of their own design under their own direction, developing it from inception to the demonstration of a prototype.

    The projects will proceed as part of the HealthTech Hackathon or FinTech Hackathon (Lausnarmót) in the context of Innovation Week 2021.

    Students interested in participating must first pitch their idea to the hackathon organizers in early August. A committee will review all submitted ideas and select those considered most innovative, realistic, and having the potential to solve future challenges.

    Selected teams will be announced in August. Only student teams with up to five members selected by the committee can sign up for this course and will have 4 weeks in September to work on their projects. Students are expected to work on their projects conscientiously over the 4-week period, expecting to dedicate 25-30 hours to the project each week. All teams will have access to regular mentoring sessions.

    Final presentations will take place in early October. All teams that participated consistently and gave a successful final presentation will receive a passing grade, independently of the hackathon jury’s ranking.

    Note that this course is mutually exclusive with the HBV004G and HBV603G internships and the HBV261L final project.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV505M
    Software Quality Management
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course is based on flipped-classroom style weekly reading, videos and assignments on software quality management-related aspects of the Software Development Life Cycle (SDLC) and by covering some parts of DevOps also Application Lifecycle Management (ALM). In parallel to theoretical concepts, the application of source code-centric tools relevant for quality management is trained by applying them to a codebase throughout the course using the ALM tool GitLab. The concepts and tools are independent from a particular software development process and cover:

    • Software Quality Foundations, Software Quality Models.
    • Configuration management (CM) and traceability:
      • Version management (e.g. Git),
      • Change management (e.g. issue tracker),
      • Build management (e.g. Maven),
      • Release management
    • Continuous integration (CI) (e.g. using GitLab pipelines).
    • Integrating testing into a CI pipeline (e.g. using JUnit and GitLab).
    • Reviews (e.g. tool-based code review)
    • Static analysis (e.g. SonarCloud)
    • Metrics for quality management (product and process metrics).
    • Quality standards:
      • Software Life Cycle Processes,
      • Software Process Improvement and maturity assessment (e.g. CMMI).
    • Using a Wiki to create a quality plan and other documentation.

    Students chose their own codebase (e.g. from the Software Project 1 or 2 course) to which they apply the concepts and tools tought in this course. While the teaching material and tools assumes Java as programming language, students are welcome to use a codebase in another programming language.

    Software quality in agile development processes is covered by student presentations at the end of the course.

    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 Java programming experience. Hence, you should have passed HBV501G Software Project 1, preferably even HBV601G Software Project 2.
    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 learning
    The course is taught if the specified conditions are met
    Prerequisites
  • IÐN301G
    Analysis of Processes and Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • IÐN510M
    Logistics & Environmental Engineering
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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,

    Face-to-face learning
    Prerequisites
  • REI503M
    Performance analysis of computer systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • REI504M
    Cloud Computing and Big Data
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI505M
    Machine Learning
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    An overview of some of the main concepts, techniques and algorithms in machine learning. Supervised learning and unsupervised learning. Data preprocessing and data visualization. Model evaluation and model selection. Linear regression, nearest neighbors, support vector machines, decision trees and ensemble methods. Deep learning. Cluster analysis and the k-means algorithm. The students implement simple algorithms in Python and learn how to use specialized software packages. At the end of the course the students work on a practical machine learning project.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    REI506M
    Machine Learning for Earth Observation powered by Supercomputers
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    STÆ532M
    Cryptocurrency
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will start by introducing the basic concepts of electronic currencies, such as wallets, addresses and transactions. The students will get to know encoding, transactions, blocks and blockchains. The cryptocurrency Smileycoin will be used as an example throughout the course.
    Students will compile their own wallets from source and dive deeply enough into the underlying algorithms to be able to put together their own transactions from the Linux command line and read typical wallet code written in C++.
    Students will learn how to call the wallet from other software, e.g. to analyse the flow of funds.
    Students will learn how to implement several additions to the traditional use of electronic currency such as encoded messages, running software to react to payments etc.
    Students will set up their own examples of addition and study how to set up atomic swaps between different currencies, using the Smileycoin for announcements.

    Homework will be individualised, selected from different formats (a) solutions based on the wallet on the command line, (2) documents to form handouts or other material in the tutor-web, (3) short programs (APIs) which respond to transactions being send to particular addresses or to a
    particular wallet, (4) programs which talk to exchanged and/or (5) new user interfaces which improve or add to the functionality of a wallet.

    All the material and assignments will be in English. Returned assignments will become a part of the open tutor-web educational system.

    The course may be taught as a reading course or self-study, but the exact implementation depends on participation.

    Face-to-face learning
    Prerequisites
  • TÖL029M
    Introduction to Information Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Þetta námskeið byggir grunn að skilningi á lykilatriðum sem tengjast verndun upplýsinga, ákvörðun á verndarstigi og viðbrögð við öryggisatvikum, og hönnun á samræmdu raunhæfu upplýsingaöryggiskerfi, með viðeigandi innbrotsskynjun og tilkynningum.  Tilgangur námskeiðsins er að veita nemandanum yfirsýn yfir svið upplýsingaöryggis og upplýsingatrygginga.  Nemendur munu sjá ýmsar gerðir öryggisaðgerða, aðferðafræða og verklags.  Umfjöllunin mun taka fyrir skoðun og vernd upplýsingaeigna, uppgötvun og viðbrögð við ógnum við upplýsingaeignir, verklagsreglur fyrir og eftir öryggisatvik, tæknileg og stjórnunarleg viðbrögð og yfirlit yfir skipulagningu upplýsingaöryggis og starfsmannahald.  Meðal efnis eru áhættumat, auðkenning, veföryggi, öryggi forrita, persónuvernd og gagnavernd, kynning á dulmálskóðun, öryggisarkitektúr, eldveggir og önnur tæki og netskipulag.

    Face-to-face learning
    Prerequisites
  • TÖL103M
    Programming Projects on Internet of Things
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL106M
    Security Engineering for Critical Information Infrastructures
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The overarching objective of this experimental course is to provide a practical technical and policy introduction for the foundations of the building and operating of dependable, complex distributed national information infrastructures.

    The course teaches university students how to model, design, implement, operate, and defend these national information infrastructures (NII) to withstand errors and attacks.

    We will introduce complementary engineering methodologies intended to assist NII policymakers, stewards, operators, and engineering professionals to implement protective initiatives to design and improve the survivability of NII systems, critical functions, and processes.

    The course will include cyber threat intelligence tradecraft and the experimental use of both open-source intelligence and an artificial intelligence tool i.e. ChatGPT

    Face-to-face learning
    Prerequisites
  • TÖL107G
    Web Programming 1
    Elective course
    8
    Free elective course within the programme
    8 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL107M
    Cyber Conflicts, Cyber Security Threats and Engineering, National Information Infrastructures (NII)
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    This interdisciplinary course examines underlying and emerging information technologies, cyber security engineering and policies associated with surveillance, cyber warfare, and cyber threats.

    The technological concepts reviewed in this course include but are not limited to National Information Infrastructures, the Internet, Dark Web, networks and sensors, and trends associated with our emerging Internet of Things.

    The course will review some salient cyber conflict history, international and national policies concerning cyber conflict and security engineering - secure by design, military/civilian doctrine, and some lessons learned from the use of cyber operations in past, present and future conflicts.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL305G
    Computer Networks and Security
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL308G
    Computer Game Programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    TÖL501G
    From an Idea to Reality
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • TÖL502M
    Human Computer Interaction
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL503M
    Distributed Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.)

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • TÖL506M
    Introduction to deep neural networks
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Spring 2
  • TÖL608M
    Algorithms in the real world
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The course will cover the design and analysis of algorithms, with emphasis on algorithms for large datasets and real world applications.

    The algorithms covered will be drawn from various subfields, e.g. data and text compression, error correcting codes, large scale text search and search engines, parallel programming, GPU programming, streaming algorithms, probabilistic algorithms, nearest neighbor search in high dimensional datasets.

    Face-to-face learning
    Prerequisites
  • HBV004G
    Internship
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    The aim of the internship is to train students to work under the guidance of specialists at companies and institutions. The projects must be related to one of the subjects taught in the Computer Science department and they must put to test the knowledge and skills that the student has acquired during studies.

    At the start of the internship, the student shall send an email to the supervisor listed here in UGLA in order to establish a contact.

    At the end of the internship, the student must return to the supervisor:

    • A report (ca. 3 pages) on the student's main project/main tasks and the connection to the studies in computer science / software engineering. The report shall also state what study goals the student set at the beginning of the internship and how they achieved them in the projects.
    • Diary kept by the student during working hours. The diary shall include a weekly overview stating what the tasks of the week were and how much time was spent on individual tasks.

    The internship is not considered completed until the supervisor of the company / institution has submitted confirmation of the student's involvement and work in the project and the supervisor from the Computer Science department has confirmed the submission.

    The grade is pass/fail.

    NOTE: Students can not register themselves for this course, but they are registered for the course when they have secured an internship position at a company or institution.

    All internships will be advertised separately on www.tengslatorg.hi.is  at the beginning of each semester and students will apply specifically for internships. An application together with a curriculum vitae and an introductory letter, in which students state why they are interested in getting an internship at the company in question, must be sent to von-starfsthjalfun@hi.is .

    Note that this course is mutually exclusive with the HBV502G and HBV603G internships and the HBV261L final project.

    Prerequisites
    Attendance required in class
  • HBV205M
    Software Testing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    Usually taught every second year (typically in spring of odd years, but this is subject to change in 2024).

    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.

    Face-to-face learning
    The course is taught if the specified conditions are met
    Prerequisites
  • Not taught this semester
    HBV261L
    Final project
    Elective course
    0
    Free elective course within the programme
    0 ECTS, credits
    Course Description

    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.

    Self-study
    Prerequisites
    Part of the total project/thesis credits
  • HBV403G
    Web Programming 2
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • HBV603G
    Internship in computer science and software engineering - undergraduate
    Elective course
    24
    Free elective course within the programme
    24 ECTS, credits
    Course Description

    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 6-month internship.
    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.
    • Job training is three to six months in full-time employment.
    • 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.

    Prerequisites
    Attendance required in class
  • IÐN201G
    Operations in Organizations
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    LVF601M
    Introduction to Systems Biology
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • REI202G
    Introduction to data science
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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:

    1. Introduction to the Python programming language.
    2. Data wrangling and data preprocessing.
    3. Exploratory data analysis and visualization.
    4. Optimization.
    5. Clustering and dimensionality reduction.
    6. 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 learning
    Prerequisites
  • REI204M
    High Performance Computing
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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

    Face-to-face learning
    Prerequisites
  • REI603M
    The AI lifecycle
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL028M
    Seminar on Machine Learning
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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. 

    Face-to-face learning
    Prerequisites
  • TÖL401G
    Operating Systems
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602G
    Computer Science Seminar for Undergraduates
    Elective course
    2
    Free elective course within the programme
    2 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Not taught this semester
    TÖL602M
    From an idea to reality II
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
    Attendance required in class
  • TÖL607G
    Competitive programming
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    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.

    Face-to-face learning
    Prerequisites
  • Year unspecified
  • TÖL213M
    Applied Cryptography
    Elective course
    6
    Free elective course within the programme
    6 ECTS, credits
    Course Description

    In this course, students will take a practical approach to understanding the building and breaking of cryptographic implementations. The first half of this module will involve programming tasks while the second half will involve two mini projects. 

    Starting from simplistic approaches used historically, such as the Caeser cipher, to modern day protocols used to secure telecommunications ubiquitously, such as AES and TLS. Students will also consider the role of cryptography in society more broadly by researching how contentious technologies such as end-to-end encryption and Tor impact justice and privacy, and distributed ledgers can enable the decentralisation of key societal systems. Finally, the course will conclude with a mini project demonstrating a practical attack against a cryptographic implementation using ethical hacking approaches e.g. WiFi cracking, password bruteforcing or man-in-the-middle attack of an encrypted connection to sniff traffic. 

    The course will encompass the following stages: 

    1) Building cryptographic primitives in a programming language of choice. 

    2) Application engineering best practices. 

    3) A research project in cryptography and society. 

    4) A practical project in ethical hacking approaches to demonstrating weaknesses in cryptography implementations. 

    Face-to-face learning
    Prerequisites
Additional information

The University of Iceland collaborates with over 400 universities worldwide. This provides a unique opportunity to pursue part of your studies at an international university thus gaining added experience and fresh insight into your field of study.

Students generally have the opportunity to join an exchange programme, internship, or summer courses. However, exchanges are always subject to faculty approval.

Students have the opportunity to have courses evaluated as part of their studies at the University of Iceland, so their stay does not have to affect the duration of their studies.

The BS degree does not confer any specific professional certification. To earn the right to use the title of engineer, you must also complete a Master's degree.

Software engineers work closely with people in a range of different fields to understand users' needs and design solutions. They are responsible for consulting with stakeholders, developing software and managing projects to ensure that software is delivered on time and within budget.

Software engineering graduates are highly sought after to manage departments, companies and institutions where software plays an important role.

Some examples:

  • Financial institutions
  • Manufacturing companies
  • Tourism companies
  • State institutions
  • Software and video game developers

This list is not exhaustive.

More about the UI student's social life

Students' comments
Fannar Steinn
I applied for a software engineering program because its curriculum aligns with my interests. I'm passionate about technology, but software engineering also involves teamwork, management, and innovation. The diverse career opportunities and limitless challenges in this field excite me. I encourage prospective students to consider software engineering for its many opportunities.
Helpful content
Aurora Cooperation

Study wheel

What interests you?

Aurora Cooperation

How to apply

Follow the path

Contact us

If you still have questions, feel free to contact us.

Engineering and Natural Sciences
Weekdays 9 am - 3:30 pm

School of Engineering and Natural Sciences has facilities both in Tæknigarður and Askja.

Follow us on:
Instagram Facebook Twitter
Youtube  Flickr

University of Iceland, Tæknigarður (Centre for Technical Innovation)

Share

Did this help?

Why wasn't this information helpful

Limit to 250 characters.