Public View

You are viewing the public version of the syllabus. If you have a SUNet account, you can view the richer version of the syllabus after logging in.

CS 301
Algorithms

Faculty Faculty of Engineering and Natural Sciences
Semester Spring 2025-2026
Course CS 301 - Algorithms
Time/Place
Time
Week Day
Place
Date
16:40-17:30
Wed
FENS-G077
Feb 16-May 22, 2026
14:40-16:30
Fri
FENS-G077
Feb 16-May 22, 2026
Level of course Undergraduate
Course Credits SU Credit:3, ECTS:6, Basic:1, Engineering:5
Prerequisites ( MATH 204 and CS 300)
Corequisites CS 301R
Course Type Lecture

Instructor(s) Information

Hüsnü Yenigün

Course Information

Catalog Course Description
This course will cover algorithms for a variety of problems, as well as general algorithm design and analysis techniques such as divide-and-conquer, dynamic programming, and greedy algorithms. Specific topics include algorithm analysis, recurrences and asymptotic analysis, searching, sorting, order-statistics, shortest path problems, and network-flows. An introduction to the computational complexity classes (such as P, NP, NP- hard, NP-complete, PSPACE) together with approximation algorithms and the performance evaluation of algorithm implementations in practice are also covered in the course.
Course Learning Outcomes:
1. The students are expected to be able to analyse algorithms' resource usage by using asymptotic analysis and asymptotic notations.
2. The students are expected to be able identify the algorithm design technique used by a given algorithm such as divide-and-conquer, dynamic programming, greedy, etc.).
3. The students are expected to be able to use these algorithm design techniques to develop new algorithms for simple computational problems.
4. The students are expected to be aware of some common computational problems and some known algorithms for these problems.
5. The students are expected to know that there are limits of algorithmic approaches to the computational problems.
6. The students are expected to be able to design tests to analyse the correctness and the performance of practical implementations of algorithms.
Course Objective
To prepare students 1) to analyze an algorithm's performance by asymptotic analysis methods, 2) to understand the role of data structures and programming paradigms on the performance of algorithms, and 3) to design efficient algorithms taking into account these important factors.
-

Course Materials

Resources:
TEXTBOOK:
Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein

Lecture slides will be provided.
Technology Requirements:

Policies