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.

Algorithms
CS 301

Faculty: Faculty of Engineering and Natural Sciences
Semester: Fall 2025-2026
Course: Algorithms - CS 301
Classroom: FENS-G077,FMAN-G071
Level of course: Undergraduate
Course Credits: SU Credit:3.000, ECTS:6, Basic:1, Engineering:5
Prerequisites: ( MATH 204 and CS 300)
Corequisites: CS 301R
Course Type: Lecture

Instructor(s) Information

Esra Erdem

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:
``Introduction to Algorithms'' (3rd edition) by Cormen, Leiserson, Rivest and Stein.
Technology Requirements: