The course is created for a first year students on Computer Science and Technology. The course emphasis is on designing and analyzing of algorithms. Also fundamental data structures and its implementations are considered. The course forms knowledge and skills in the fields of correct and efficient programs and algorithms synthesis. It covers a range of important programming techniques and abstract data types (ADT). At the end of the course, students understand date structures. They know how to use them, how to implement them several ways. The students can reason about efficiency with a big-O analysis and argue for the correctness of their implementations by referring to the invariant of the ADT. Another important effect of the course is the specification, design, and implementation experience.
Main issues of the syllabus content:
- Algorithms and its basic features, definitions, efficiency, correctness and so on.
- Methods and approaches for algorithm's and program's design (such as structure programming, object oriented programming, recursion, backtracking, "divide and conquer" approach and so on).
- Structures of data, static and dynamic, linear and non-linear (such as stack, queues, double ended queues, lists, trees and graphs).
- Well-known classical algorithms. This part of the course includes such topics as algorithms for sorting, searching and hashing, heuristic and greedy algorithms, probabilistic and randomized algorithms, genetic algorithms etc.