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. Both programmes gives you a very sought-after IT-profile, and there are many job opportunities in Aarhus and abroad.
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.
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 https://bachelor.au.dk/en/computer-science or in the course calaogue.
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.
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.
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.
In this course, you'll learn how computers are built, how they run multiple tasks, and how they connect to the internet. You’ll start by exploring the basic building blocks of computers, including how they process instructions, using the x86 and ARM architectures as examples. Next, you'll dive into operating systems, discovering how they manage tasks like memory and file storage. Finally, you'll get an introduction to computer networks, learning how data moves between devices and the basics of internet communication.
Instructors: Peyman Afshani and Jean Pichon-Pharabod. Peyman has a background in computer systems and data structures, while Jean is a specialist in the interface between hardware architectures and operating systems.
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.
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.
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 https://bachelor.au.dk/en/it-product-development or in the course calaogue.
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.
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.
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.
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.
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.
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.
Every year, students from all over the world come to Aarhus to study in the master's programme in Computer Science. Here, we have gathered stories told by international alumni and current students to give you an insight into student life at the Department of Computer Science - and maybe a future life in Aarhus.