BIL231 Algorithms/Algoritmalar

Course Schedule: Turkish: Monday(2 PM) B312; English: Thursday(3 PM) B314
Course TA(s): TBD
Course webpage:
Source Codes:
Course Description: This course teaches general understanding about algorithms, techniques to measure and compare algorithm performances, well-known data structures and their algorithms, and algorithm design principles.
Prerequisite(s): A passing grade at BIL111-Programming, BIL122-Data Structures is highly recommended.
Note(s): You should have a Linux (preferably Ubuntu) running laptop with you.
Credit Hours: 3
ECTS Credits: 5
Textbook: Introduction to Algorithms, 3rd Edition, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein; ISBN-13: 978-0262033848
Supplementary Textbook(s): Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching, 3rd Edition, Robert Sedgewick; ISBN-13: 978-0201350883

Course Objectives:
At the completion of this course, students will be able to:

  1. Analyze asymptotic performance of algorithms.
  2. Demonstrate a familiarity with major algorithms and data structures.
  3. Apply important algorithmic design paradigms and methods of analysis.
  4. Apply efficient algorithms in common engineering design situations.

Grade Distribution:

Assignments 20%
Midterm Exam 40%
Final Exam 40%

Letter Grade Distribution:

>= 90.00 AA 50.00 – 59.99 CC
80.00 – 89.99 BA 45.00 – 49.99 DC
70.00 – 79.99 BB 40.00 – 44.99 DF
60.00 – 69.99 CB <= 39.99 F

Course Policies:

  • General
    • You must have your computer with you in all sessions.
    • Quizzes and exams are closed book, closed notes.
    • No makeup quizzes or exams will be given.
  • Grades
    • Grades in the C range represent performance that meets expectations; Grades in the B range represent performance that is substantially better than the expectations; Grades in the A range represent work that is excellent.
    • Grades will be maintained in OBS. Students are responsible for tracking their progress by referring to the online gradebook.
  • Labs and Assignments
    • Students are expected to work independently. Offering and accepting solutions from others are an act of plagiarism, which is a serious offense and all involved parties will be penalized according to the Academic Honesty Policy. Discussion amongst students is encouraged, but when in doubt, direct your questions to the professor, tutor, or lab assistant. No late assignments will be accepted under any circumstances.
  • Attendance and Absences
    • According to the University rules, regulations, and guidelines (Chapter Four, Section related to the attendance, Item 25, first clause [in Turkish]), all students should attend at least 70% of the lectures throughout the semester of interest. Students who do not meet the attendance criterion will fail with the letter grade “IA”. It is students’ responsibility to follow up with their intermittent attendance status throughout the semester. The instructor will not announce and/or disseminate the attendance status of the students.
    • Students are responsible for all missed work, regardless of the reason for absence. It is also the absentee’s responsibility to get all missing notes and/or materials.

Academic Honesty Policy:

See Academic Honesty page.

Tentative Course Outline:

The weekly coverage might change as it depends on the progress of the class. However, you must keep up with the reading assignments.

Week 1

  • History of algorithms
  • Analyzing algorithms
  • Asymptotic notation

Week 2

  • Arrays
  • Strings
  • Linked Lists

Week 3

  • Dynamic Arrays
  • Stacks
  • Queues

Week 4

  • Sets
  • Hashing
  • Maps

Week 5

  • Graphs

Week 6

  • Trees

Week 7

  • String Matching

Week 8

  • Midterm Exam

Week 9

  • Selection sort
  • Insertion sort

Week 10

  • Buble sort
  • Quick sort

Week 11

  • Merge sort
  • Heap sort

Week 12

  • Dynamic programming

Week 13

  • Greedy algorithms

Week 14

  • Amortized analysis