|   Requirements   |    ECTS   |  
  |   1:  Imperative/Object-Oriented/Functional Programming (you must meet this requirement)   |    30   |  
  |   You must have a medium level of ability to program in an imperative/OOP programming language. Additionally, you must have been exposed to a mainstream functional programming language. These requirements are usually met by taking an introductory course on programming and working on a medium-sized project.  Course example: Introduction to Programming BSGRPRO1KU (15 ECTS) + First Year Project: Map of Denmark. Visualization, Navigation, Searching and Route Planning BSFDVNS1KU (15 ECTS) + Functional Programming BSFUPRO1KU (7.5 ECTS)   |           |  
  |   2: Discrete Mathematics (you must meet this requirement)   |    5   |  
  |   You must have taken an introductory course on discrete math. The course must include most of the following: propositional and predicate logics, induction principles, basic counting, discrete probability, sets, functions, graphs, trees.  Course example:  Foundations of Computing: Discrete Mathematics BSFOCDM1KU (7.5 ECTS)   |           |  
  |   3: Algorithms and Data Structures (you must meet this requirement)   |    5   |  
  |   You must have taken an introductory course on algorithms, which includes most of the following: big-O notation, basic analysis of algorithm correctness and complexity, hashing, basic data structures, quicksort, mergesort, DFS, BFS, Dijkstra, Kruskal, Prims (MST), priority queues, binary search trees, red-black trees, tries, union-find.   Course example:  Algorithms and Data Structures 1408001U (7.5 ECTS)    |           |  
  |   4: Databases (you must meet this requirement)   |    5   |  
  |   Basic concepts of databases, relational databases, basic data analytics.  Course example:  Introduction to Database Systems BSINDBS1KU (7.5 ECTS)   |           |  
  |   5: Software Engineering (you must meet this requirement)   |    5   |  
  |   Introductory course on software engineering. The course must include most of the following: software processes, requirements, software architecture, testing, version control, development tools.    Course example:  Software Development and Software Engineering BSSODSE1KU (7.5 ECTS)   |           |  
  |   6: Computer Security (you must meet two of requirements 6 to 8)   |    5   |  
  |   You must have some basic knowledge of computer security. This must include most of the following: adversarial environments, security principles, basic methods for preventing cyberattacks, including cryptography, authentication, authorization.  Course example:  Security 1 BSSECU11KU (7.5 ECTS)    |           |  
  |   7: Programming Language Design and Implementation (you must meet two of requirements 6 to 8)   |    5   |  
  |   The prerequisite includes most of the following: regular expressions, finite state machines, parsing techniques, type checking and inference, garbage collection techniques.  Course example:  Programs as Data BSPRDAT1KU (7.5 ECTS)   |           |  
  |   8: Operating Systems (you must meet two of requirements 6 to 8)   |    5   |  
  |   You must have some knowledge of how operating systems work. This includes most of the following: some knowledge of a low level programming language such as C, basic system programming concepts (I/Os, network programming, concurrent programming), reflect on the impact of hardware, operating system and compilation process on application programs.  Course example:  Operating Systems and C BSOPSYC1KU (7.5 ECTS)   |        |