Aarhus University Seal

Bachelor programmes

Intro

At the Department of Computer Science, you can pursue two different undergraduate programmes - Computer Science and IT Product Development. An undergraduate programme takes three years, after which you have the option to apply for the master's programme. We engage in both theoretical and practical work, including software development, interaction design, artificial intelligence, and machine learning - and you will learn it all from scratch. Therefore, it's not necessary for you to have experience with programming, before you start. There are many ways to learn all the new material. For instance, we have lectures in auditoriums, exercises in smaller groups, and a study café where you can get help from our teaching assistants.

Courses in year one – Computer Science

In the first year of Computer Science, you will take the following courses. You can expand the boxes to read more about each course.

You can find an overview of all courses in the bachelor's programme at bachelor.au.dk/datalogi or in the course calaogue.

Introduction to Programming

In this course, you'll learn basic concepts and techniques necessary for programming, testing your program, and debugging any errors. We use the programming language Java and the programming environment BlueJ, which allows you to quickly get started writing and running programs. The concepts and principles you learn are general and relevant to all types of programming languages. Programming is learned through practice, so the course includes many assignments where you write small programs.

Instructor: Professor Kurt Jensen. Kurt has researched languages and techniques for modeling and analyzing systems where computers, mobile phones, and other devices communicate with each other. Additionally, he has been the head of the Department of Computer Science for almost twenty years but now focuses solely on teaching.

Algorithms and Data Structures

In this course, we focus on structuring calculations and organizing data to solve efficiently/quickly. The techniques in the course are discussed independently of a specific programming language, but there are some assignments where you'll need to translate the theoretical techniques from the course into concrete Java code. This takes advantage of concurrently following the Introduction to Programming course.

Instructor: Professor Gerth Stølting Brodal.

Gerth does research in algorithms and data structures and has been awarded the title Educator of the Year at the Department of Computer Science three times. In 2022, he was honored with Aarhus University's Anniversary Foundation Teaching Prize. Additionally, he has won the student association TÅGEKAMMERET's event (with the ironic title) "The World's Most Boring Lecture" three times.

Introduction to Mathematics and Optimization

In this course, mathematics is introduced with a focus on precise mathematical language usage in terms of logic and sets. The mantra is that mathematics is the ultimate programming language. Most of the course deals with applications such as linear equations, matrices, vectors, and optimization theory. The mathematics in the course is supported by small pieces of code in Python and the Sage overlay.

Instructor: Associate Professor Niels Lauritzen. Niels researches algebraic geometry with a penchant for anything related to programming. He has published two international textbooks (Cambridge University Press and World Scientific), but lately, he has become convinced that interactive textbooks are the future.

Programming Languages

Programming is an essential part of computer science. In this course, you'll gain a solid understanding of the fundamental mechanisms in modern programming languages. This is crucial for developing advanced and error-free software. The course covers the theory of syntax and semantics in programming languages. The theory is supplemented by practical programming assignments, including constructing an interpreter and a compiler.

Instructor: Professor Anders Møller.

Anders has received the Danish EliteForsk Prize for his research in programming and methods for analyzing the correctness of programs.

Database Systems

In this course you will learn how to store and work with information in databases. We start out with the basics of how to design and implement a database application and construct queries to retrieve data. Then we move on to principles of effective database design, and advanced topics including how to index data for quick access, how a database system can recover from a sudden shutdown or failure, and how many users can access the same database at the same time without causing errors.

This course makes use of skills you gain elsewhere, including in programming and logic, and also trains you on how to translate real-world requirements into a design a computer understands, and vice versa.

Underviser: Professor Ira Assent. Ira heads the research group Data-Intensive Systems, focusing on databases, analysis of large datasets, and machine learning.

Implementing and Utilizing Databases

In this course, we build upon the Database Systems course, delving even deeper into database systems. You'll learn how to ensure good data quality even when the system crashes or when many users access data in the same database simultaneously. Additionally, you'll explore various applications for databases, such as in large-scale systems where multiple computers are connected (distributed systems) or in the context of data analysis (data mining).

Instructor: Professor Ira Assent. Ira heads the research group Data-Intensive Systems, focusing on databases, analysis of large datasets, and machine learning.

Calculations and Logic

What can actually be computed? In this course, we explore models of automatic machines. We will prove that there are some mathematical problems that fundamentally cannot be computed. The proof is independent of the choice of computer technology or programming language.

The course provides you with an understanding of the fundamental limitations within computer science. You will also be introduced to both simple and complex logic and learn how logic can be used to prove that a program is correct. Additionally, you will learn the difference between mathematical truth and provability.

Instructor: Jaco van de Pol.

Courses in year one – IT Product Development

In the first year of IT Product Development, you will take the following courses. You can expand the boxes to read more about each course.

You can find an overview of all courses in the bachelor's programme at bachelor.au.dk/datalogi or in the course calaogue.

Introduction to Programming

In this course, you'll learn basic concepts and techniques necessary for programming, testing your program, and debugging any errors. We use the programming language Java and the programming environment BlueJ, which allows you to quickly get started writing and running programs. The concepts and principles you learn are general and relevant to all types of programming languages. Programming is learned through practice, so the course includes many assignments where you write small programs.

Instructor: Professor Kurt Jensen. Kurt has researched languages and techniques for modeling and analyzing systems where computers, mobile phones, and other devices communicate with each other. Additionally, he has been the head of the Department of Computer Science for almost twenty years but now focuses solely on teaching.

Fundamental IT Product Design

A growing number of physical products surrounding us are being equipped with electronics, batteries, and internet connectivity - commonly referred to as the Internet of Things (IoT). With this course, you will gain the fundamental skills to design the future's physical IoT products and consider how they can integrate into society and everyday life.

The course combines design of physical products and software programming, and you will be introduced to reading and understanding research literature. You will learn to conduct user studies and be able to create sketches in drawing, physical models, and video, as well as build and program simple circuits.

In mini projects, you will learn to combine these skills with theoretical knowledge so that you can understand your own and others' design ideas with new perspectives.

Instructor: Peter Gall Krogh.

Calculus Alpha

In this course, some of the most fundamental mathematical tools for solving scientific and technological problems are introduced. We will specifically focus on solving problems that depend on many variables, such as solving systems of linear equations and maximization problems. The course aims for students to gain familiarity with mathematical concepts through working on a wide range of concrete tasks.

Instructors: Professor Andreas Basse-O’Connor and Assistant Professor Henrik Garde.

Andreas' research aims to "find order in chaos"; that is, to reveal the characteristic structures of a wide range of problems that initially seem entirely random. Henrik's research focuses on developing new methods to determine the internal structures of objects based on measurements taken on their surface.

The Web of Things

In this course, you will learn about Web of Things and Internet of Things (IoT). We start by developing simple web pages, and later you will develop web servers with interactive and database-driven websites yourself. You will also learn about development on small devices and how to connect them with servers so they can be integrated with web pages. Such small devices can serve as sensor platforms and for interaction.

Throughout the course, professional programming environments and tools like Microsoft Visual Studio Code and Git are used, and we use Linux servers to host our programs in the cloud. The course runs parallel to the "Database Systems" course, providing an opportunity to apply knowledge from there in practical systems in this course. Similarly, what you learn in this course can be applied in the concurrent and subsequent course "IT Product Design Project."

Instructor: Niels Olof Bouvin researches the Internet of Things, hypermedia, and the Web. He was named the educator of the year at the Department of Computer Science in 2015 and received the ST Faculty Education Award in 2016.

Database Systems

In this course you will learn how to store and work with information in databases. We start out with the basics of how to design and implement a database application and construct queries to retrieve data. Then we move on to principles of effective database design, and advanced topics including how to index data for quick access, how a database system can recover from a sudden shutdown or failure, and how many users can access the same database at the same time without causing errors.

This course makes use of skills you gain elsewhere, including in programming and logic, and also trains you on how to translate real-world requirements into a design a computer understands, and vice versa.

Underviser: Professor Ira Assent. Ira heads the research group Data-Intensive Systems, focusing on databases, analysis of large datasets, and machine learning.

IT Product Design project

The IT Product Design Project concludes your first year, where you will apply everything you have learned in the various courses so far in a larger final project (commonly referred to as "IT-PDP").

In this project course, you will work together with your group to develop a prototype based on a specific problem within areas such as health, sports, or smart buildings. Throughout the project, you will be taught relevant theory and methods, and you will gain experience in field studies, modeling, brainstorming, design, 3D printing, laser cutting, sensor and actuator usage, cloud connectivity of products, user evaluation, and more.

The course culminates in a public exhibition of all the completed prototypes, where you will present your project to visitors through posters and a pitch.

Instructors: Professor Kaj Grønbæk, lab coordinator Simon Hoggan Christensen, and assistant professor Minna Pakanen.

Kaj's research focuses on Human-Computer Interaction (HCI), and he has been involved in developing the IT Product Development program. Kaj has extensive experience in research that can be translated into solutions for societal issues, such as the use of wearables in healthcare or augmented reality for industry.