Evi Papaioannou
Department of Cultural Heritage Management and New Technologies, University of Patras
Home › Introduction to Algorithms › Course description

# Introduction to Algorithms

Course description

Course ID: Υ204
Semester: 2nd

An algorithm can be considered as an exact "recipe" that determines the sequence of steps required to solve a problem. The aim of this course is to let students have an introductory experience with fundamental algorithms and basic - yet powerful - problem solving methods and techniques. In particular:

• Have you, perhaps, searched in billions of documents in the web, choosing a couple of them that are most relevant to your needs?

• Have you stored or transmitted extremely large amounts of information, without making a single mistake, in presence of electromagnetic interference that affects all electronic devices?

• Did you successfully complete an online bank transaction, even though many thousands of other customers were simultaneously using the same server?

• Did you communicate some confidential information (e.g., your credit card number) securely over wires that can be actually “seen” by many other computers?

• Did you use compression to reduce a picture of several megabytes to a more manageable size for sending it by e-mail?

• Or did you, without even thinking about it, exploit the artificial intelligence in a hand-held device that self-corrects your typing on its tiny keyboard?

In the background of all these - rather routine - activities there exist simple, fascinating "ideas", i.e., "algorithms"!

The objectives of this course include (1) the description and analysis of fundamental ideas (i.e., algorithms) that modern computers use many times every day while we hardly realize it, and (2) an introduction to the formal analysis of algorithms (correctness and performance issues).

Summing up, it is worth emphasizing the necessity and usefulness of inclusion of courses focusing on the design and analysis of algorithms in undergraduate and graduate curricula. Why?

Donald Knuth, one of the most prominent computer scientists in the history of algorithmics, put it as follows:

"A person well-trained in computer science knows how to deal with algorithms: how to construct them, manipulate them, understand them, analyze them. This knowledge is preparation for much more than writing good computer programs; it is a general-purpose mental tool that will be a definite aid to the understanding of other subjects, whether they be chemistry, linguistics, or music, etc. The reason for this may be understood in the following way: It has often been said that a person does not really understand something until after teaching it to someone else. Actually, a person does not really understand something until after teaching it to a computer, i.e., expressing it as an algorithm . . . An attempt to formalize things as algorithms leads to a much deeper understanding than if we simply try to comprehend things in the traditional way."