Lesson plan /

Lesson Information

Course Credit
Course ECTS Credit
Teaching Language of Instruction İngilizce
Level of Course Bachelor's Degree, TYYÇ: Level 6, EQF-LLL: Level 6, QF-EHEA: First Cycle
Type of Course
Mode of Delivery Face-to-face
Does the course require compulsory or optional work experience?
Course Coordinator Prof. Dr. RAFET AKDENİZ
Instructor (s)
Course Assistant

Purpose and Content

The aim of the course This core course covers good principles of algorithm design, elementary analysis of algorithms, and fundamental data structures. The emphasis is on choosing appropriate data structures and designing correct and efficient algorithms to operate on these data structures.
Course Content Program costs: time and space. Worst case and average case analysis. Asymptotics and "big O" notation. Polynomial and exponential growth. Asymptotic estimates of costs for simple algorithms. Use of induction and generating functions. Algorithm design strategies: top down design, divide and conquer. Application to sorting and searching and to matrix algorithms. Solution of relevant recurrence relations. Data structures and their representations: arrays, lists, stacks, queues, trees, heaps, priority queues, graphs. Introduction to discrete optimisation algorithms: dynamic programming, greedy algorithms, shortest path problems. Graph algorithms: examples of depth-first and breadth-first search algorithms. Topological sorting, connected components.

Weekly Course Subjects

1Introduction o What is an algorithm? o Notation for programs o Proof techniques o Basics review: Sets - Functions - Limits - Simple series
2Fundamentals o Instances and problems - Elementary operations. o Efficiency o Average and worst-case analysis o Examples
3Asymptotic notation o Introduction o A notation for "the order of" o The omega notation o The theta notation o The conditional asymptotic notation
4Analysis of algorithms o Analyzing control structures o Using a barometer o Amortized analysis o Solving recurrences
5Data structures o Arrays, stacks and queues o Records and pointers o Lists, graphs, trees and associative tables o Heaps o Disjoint set structures
6Greedy algorithms o Making change o General characteristics of Greedy algorithms o Graphs MST - Kruskal's and Prims's algorithms o Graphs: shortest paths o Knapsack problem o Scheduling
7Divide - and - Conquer o Multiplying large integers o Binary search o Sorting by: merging and quicksort o Finding the median o Matrix multiplication o Exponentiation o Quick look at cryptography
8Midterm Exam
9Dynamic programming o Making change
10o Principles of optimality o The knapsack problem
11o Shortest paths - Floyd's algorithm o Chained matrix multiplication
12Introduction to probabilistic algorithms - Parallel algorithms
13Introduction to computational complexity
14Introduction to computational complexity

Resources

T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein. Introduction to Algorithms, 3rd edition, MIT Press, 2009 (2nd edition [2001] or 1st edition, [1990] can be used as well). This is the main text book for this lecture course.
M. T. Goodrich and R. Tommassia. Algorithm Design, Wiley, 2002.
S. Dasgupta, C. Papadimitriou, and U. Vazirani. Algorithms. McGraw-Hill Higher Education. 2006