In this course, you will develop basic skills and knowledge to create and reason about efficient algorithms to solve computational problems. To be able to reason about algorithms efficiently we first consider the structure and textual form of formal proofs. We then explore different basic algorithms and data structures for frequently appearing problems, using the proving techniques learned to show their correctness. We consider basic algorithm design techniques, correctness analysis, and efficiency analysis of algorithms.

This course covers fundamental concepts and theory in the fields of
Automata Theory, Formal Language Theory, and Complexity Theory,
including regular languages, context-free languages, and decidable
languages and their computational models, viz. NFAs, PDAs, and TMs. In
addition NP-completeness is treated. The
above corresponds roughly with Chapters 1 to 7 of the textbook for
this course.

This course covers fundamental concepts and theory in the fields of
Automata Theory, Formal Language Theory, and Complexity Theory,
including regular languages, context-free languages, and decidable
languages and their computational models, viz. NFAs, PDAs, and TMs. In
addition NP-completeness is treated. The
above is covered by Chapters 2 to 10 of the textbook for
this course, further details of the course are given in https://www.win.tue.nl/~hzantema/altc.html.

Generic Engineering course planned for Q3 in 2017-2018; trial in Q2

Artificial Intelligence (AI) is an expanding field with goals related to studying, understanding, designing and developing intelligent solutions which can replace or enhance human intelligence. This course introduces students to the foundations of artificial intelligence, from its initial developments to the current state of the art. It gives an understanding and vision of what is and what is not achievable with existing AI techniques. The course covers historical facts and AI developments, AI limitations and complexity, common knowledge representation techniques in AI, reasoning, inferences and decision making.

Many aspects of Data Science rely on computers to do the heavy lifting for handling data, computing results, running simulations, etc. To effectively use the computer as a tool, this course provides the fundamental concepts to reason about what computers can and cannot compute. For certain problems exact solutions can be computed by algorithms, and we need methods to establish that an algorithm is correct, and to analyze its efficiency.

In this course we will cover basic discrete mathematical structures that occur in many contexts in computer science. You will learn the basic skills and knowledge to formally reason about these structures. Among others we will cover relations and ordering, counting arguments, and graphs and trees.