Course Outline

Algorithms are arguably the most fundamental concept in Computer Science, in fact the concept of algorithm predates the discipline of Computer Science by may hundreds (or dare I way, thousands) of years. In this course we will go into the theory of computer algorithms.

The first part of the course is dedicated to the analysis of algorithms. We will see how to define the efficiency of an algorithm, hot to measure such an efficiency, and therefore how to improve it. In the second part of the course we will discuss different techniques for writing algorithms. We will conclude with a brief incursion into the area of “difficult” (or NP-complete) problems. Consequently we base the course on the following however tentative schedule (note in particular that the order of topics is subject to change):

The course, like the discipline of algorithm design and analysis will be purely theoretical. Algorithms will be described in pseudocode. The amount of programming will be minimal at best. However, the course has a significant mathematical content and assumes that the participants have already taken Data Structures as well as Discrete Math. Linear Algebra is also recommended.