/DMA1

Discrete Mathematics and Algorithms - Class exercises, handins

Primary LanguageJava

Discrete Mathematics and Algorithms 1 - Exercises, handins

It was the first time they offered this course, so sometimes it felt like they still weren't sure what to do with it exactly, but basically it teaches the neccessary math foundation for programming and introduces some data structures and algorithm design.

ECTS: 5

Personal review:

DMA1 was one of my favourite course in the first semester. It was quite interesting, especially the time complexity analysis part.

Lesson 4

We covered modular arithmetics and RSA encryption, I made a small exercise for them.

Lesson 6

The topic was sequences and recursion, so a few lines of code calculated some sums.

Lesson 7

A bit of matrix multiplication and more about time complexity.

Lesson 8

Some recursion and Fibonacci numbers.

Assignments

I've added the descriptions for the assignments, they covered many topics.

Course description

Main purpose

The aim of the course is to train students in the mathematical concepts and process of algorithmic thinking, allowing them to build simpler, more efficient solutions to real-world computational problems by building on the principles of mathematics.

The course will enable the student to apply a wide range of existing algorithms and data structures for fundamental problems, as well as general methods for developing new algorithms and mathematical tools for analyzing the correctness and efficiency of algorithms. This is of paramount importance for the ability to develop efficient software, and is central to the understanding of upper and lower bounds for computational problems.

In relation to the competence profile of the Software Technology programme it is the explicit focus of the course to:
• Give the competence to apply new variants of central algorithms and data structures developed within software technology.
• Give skills to analyse pros and cons of algorithms, in particular with respect to the use of resources.
• Give knowledge and understanding of a selection of core algorithms and data structures developed within software technology.

Knowledge

Upon completion of this course, students will be able to:
• Describe fundamental concepts in number theory and modular arithmetic
• Outline the basic principles of different sorting algorithms
• Summarize key aspects of various data structures

Skills

Upon completion of this course, students will be able to:
• Give precise arguments for the correctness or incorrectness of an algorithm
• Use key concepts of discrete mathematics for solving programming problems resourcefully
• Analyze and compare the time and space usage of algorithms and data structures

Competences

Upon completion of this course, students will be able to:
• Adapt known algorithms and data structures to special cases of known problems or new problems
• Design and implement small programs, using algorithms and data structures taught in the course.
• Evaluate the performance of Java code with the objective of designing and implementing algorithms that optimise the code