# DAT158 Machine Learning Engineering and Advanced Algorithms

## Course description for academic year 2022/2023

### Contents and structure

The course has two parts, 5 credits each.

Machine learning engineering:

Over the past few years the field of artificial intelligence has gone through a dramatic development. Computer's abilities to recognize objects in images have gone from rarely resulting in useful systems to forming a fundamental component of many widespread technologies; from limited ability to understand and synthesize text and speech to wide use of personal digital assistants; from amateur level at chess, poker, Go and Dota to beating world champions; from driving assistance to self-driving cars.

What's behind these advances are breakthroughs in machine learning. This is an important field with a long history, consisting of a set of techniques enabling computers to uncover complicated patterns and connections in large data sets. There have been several interesting applications of machine learning over the years, but today it's more pervasive than ever, appearing throughout modern technology, science and software.

The course provides a practical, project-based, engineering-oriented, hands-on exploration of the fundamentals of machine learning engineering, focusing on solving real-life problems.

By the end of the course you will have a solid understanding of the main algorithms and ideas in machine learning, including good practical intuitions. You'll have experience with tackling real-world problems using standard workflows and modern tools and frameworks from data analysis, software engineering and machine learning. You'll also be familiar with the limitations of machine learning, when it's applicable, and how it relates to the ultimate objectives in artificial intelligence.

Advanced algorithms:

In the course one will get an introduction to advanced and well-known algorithms within different fields. Different types of problem solving and recursive thinking will also be given in the lectures. In addition, different aspects of complexity theory with emphasis on the classes P and NP together with approximate solutions based on NP-complete problems.

Examples of algorithms are evolutionary algorithms and simulation of them, split and conquer algorithms and dynamic programming, approximate algorithms, randomized algorithms, graph algorithms, heuristic algorithms and algorithms for text processing.

### Learning Outcome

Knowledge:

- Able to explain fundamental machine learning concepts and algorithms, and their implementation
- Able to explain how machine learning can be used to solve practical problems from a wide variety of domains, and how it can be used to build "intelligent" applications
- Understand how practical machine learning relates to software engineering more broadly, and how it can be considered an engineering discipline (
*machine learning engineering*and*MLOps*) - Be able to explain how selected advanced algorithms work
- Explain how theory of Advanced Algorithms may be used within computer science and engineering
- Explain how Advanced algorithms may be used to solve practical problems of different types

Skills:

- Develop solutions that can solve concrete, practical problems using machine learning
- Can develop, find and use modern, state-of-the-art software tools and frameworks for data analysis, visualization and reporting
- Design, develop and deploy machine learning-based applications
- Design and develop applications how theory for advanced algorithms may be used to build more intelligent applications
- Design effective algorithms for algorithmic problems

General competence:

- Ability to formulate and complete a machine learning project
- Ability to present their work, both in writing and orally
- Ability to work in teams
- Be able to handle complex algorithmic problems, by either design an exact or an approximation algorithm, or making a heuristic solution
- Be able to compare different algorithmic solutions

### Entry requirements

None

### Recommended previous knowledge

Recommended prerequisites: Basic knowledge of programming and mathematics as covered by the first year of studies in the computing and information technology programs. In addition, you should have background in algorithms equivalent to DAT102 Algorithms and data structures. Knowledge of Python, Numpy and Pandas is a plus. The course will give a quick introduction to Python, and several online resources for acquiring the recommended background knowledge will be provided at the start of the course.

### Teaching methods

Lectures, labs, e-learning material.

### Compulsory learning activities

To get access to the exam, four obligatory assignments must be completed and approved by set deadlines. Graded as pass/fail.

Approved exercises also give access to postponed examination the following semester. However, before a new postponed exam can be taken (the next time the subject is taught), new exercises must be delivered.

### Assessment

Oral examination, but with more than 50 students the exam may be a 4 hour written exam.

Grading scale is A-F where F is fail.

### Examination support material

None

More about examination support material### Course reductions

- DAT157 - Nevrale nett og avanserte algoritmar - Reduction: 5 studypoints
- DAT801 - Maskinlæring for forretningsutvikling - Reduction: 5 studypoints