Course Information

About

The subject matter of this course concerns fundamental algorithms in computer science. The course is structured around key topics including analysis of algorithms, sorting, searching, graph algorithms, string processing, dynamic programming, combinatorial search and NP-completeness.

The goal of this course is to teach students how to develop algorithms in order to solve the complex problems in the most efficient way. The students are expected to develop a foundational understanding and knowledge of key concepts that underlies important algorithms in use on computers today. The students will also be expected to gain hand-on experience via a set of programming assignments supplied in the complementary BBM 204 Software Practicum.

Time and Location

BBM202

Section 1: Friday at 09:40-12:30@D8
Section 2: Friday at 09:40-12:30@D10
Section 3: Wednesday at 13:40-16:30@D8

BBM204

Friday at 16:40-18:30@D1-D2

Instructors

         

Adnan Ozsoy (Section 1) · adnan.ozsoy@hacettepe.edu.tr
Erkut Erdem (Section 2) · erkut@cs.hacettepe.edu.tr
Hacer Yalim Keles (Section 3) · hacerkeles@cs.hacettepe.edu.tr

Teaching Assistants

    

Hikmet Can Doganci · XXX@cs.hacettepe.edu.tr

Sümeyye Meryem Taşyürek · meryemtasyurek@cs.hacettepe.edu.tr

Student Assistants

Communication

The course webpage will be updated regularly throughout the semester with lecture notes, programming and reading assignments and important deadlines. All other course related communications will be carried out through Piazza. Please enroll it by following the link:

https://piazza.com/hacettepe.edu.tr/spring2025/bbm202
https://piazza.com/hacettepe.edu.tr/spring2025/bbm204

Course Requirements and Grading

Grading for BBM202 will be based on

  • a midterm exam (40%), and
  • a final exam (60%)

In BBM204, the grading will be based on

  • four quizzes (5% each),
  • four programming assignments (done individually) (20% each).

Policies

A student must submit at least three (3) non-zero assignments not to fail from BBM204 with an F1 grade. You are responsible for all material presented in lectures. Some of the course material might not be covered in the textbook.

All work on assignments must be done individually unless stated otherwise. You are encouraged to discuss with your classmates about the given assignments, but these discussions should be carried out in an abstract way. That is, discussions related to a particular solution to a specific problem (either in actual code or in the pseudocode) will not be tolerated.

In short, turning in someone else’s work, in whole or in part, as your own will be considered as a violation of academic integrity. Please note that the former condition also holds for the material found on the web as everything on the web has been written by someone else.

Text Books

  • Algorithms, 4th Edition, R. Sedgewick and K. Wayne, Addison-Wesley Professional, 2011
  • Algorithm Design, Jon Kleinberg and Eva Tardos, Addison-Wesley Professional, 2005

Schedule (Tentative)

Week Date Topic Notes
1 Feb 19/21 Course Introduction, Undecidability, Analysis of Algorithms Reading: SW 1.4
Reading: Turing Machines, Universality, Halting Problem
2 Feb 26/28 Elementary Sorting Algorithms,

Mergesort
Reading: SW 2.1, 2.2
3 Mar 5/7 Quicksort, Heapsort Reading: SW 2.3, 2.4
PA1 out
4 Mar 12/14 Dynamic Programming Reading: KT 6.1-6.7
5 Mar 19/21 Greedy Programming Reading: KT 4.1-4.3
PA1 due
6 Mar 26/28 Undirected Graphs, Directed Graphs Reading: SW 4.1, 4.2
7 Apr 2/4 Minimum Spanning Trees Reading: SW 4.3
PA2 out
8 Apr 11 Midterm Exam
9 Apr 16/18 Shortest Path Reading: SW 4.4
PA2 due, PA3 out
10 Apr 23/25 Maxflows and Mincuts Reading: SW 6.4
11 Apr 30/May 2 Substring Search, Regular Expressions Reading: SW 5.3, 5.4
PA3 due, PA4 out
12 May 7/9 String Sorting Reading: SW 5.1
13 May 14/16 Data Compression Reading: SW 5.5
PA4 due
14 May 21/23 Reductions, Intractability Reading: SW 6.5, 6.6

Previous editions