Announcements

  1. (Dec 24) Rules of conduct for Final exam
  2. (Dec 21) Quiz 5 is this week
  3. (Dec 7) HW 4 is out
  4. (Dec 7) Quiz 4 is this week
  5. (Dec 7) Read Chapter 18 of Carrano
  6. (Nov 30) Read Chapter 19 of Carrano
  7. (Nov 23) Quiz 3 is this week
  8. (Nov 17) HW 3 is out
  9. (Nov 16) Read Chapter 17 of Carrano
  10. (Nov 2) HW 2 was postponed til after the midterm exam period to Nov 17th
  11. (Nov 2) Rubric for quizzes
  12. (Oct 26) HW 2 is out
  13. (Oct 26) Quiz 2 is this week
  14. (Oct 19) Read Chapter 16 of Carrano
  15. (Oct 12) Read Chapter 15 of Carrano
  16. (Oct 9) HW 1 is out
  17. (Oct 5) Quiz 1 is this week
  18. (Sep 28) Read Chapter 11 of Carrano
  19. (Sep 21) Read Chapter 10 of Carrano
  20. (Sep 14) Remarks on distance learning
  21. (Sep 7) Course page is online
  22. Please check this course page regularly

Course Description

The course picks up from where CS 201 left by discussing concepts related to algorithmic efficiency on basic abstract data types and some sorting algorithms that utilize recursion. Then, the course introduces the abstract data types of trees, tables, priority queues, and graphs, and shows how one can implement them in C++ using fundamental data structures by emphasizing run-time complexity analysis.

Section 1

Instructor: Ugur Dogrusoz (Office: EA 522, Email: )
Lectures: Tue 9:30-10:20 (B-Z01), Thu 17:30-19:20 (B-Z01)

Teaching Assistants

Graders

Office Hours

Texts

  1. Frank M. Carrano and Timothy Henry, Data Abstraction and Problem Solving with C++: Walls and Mirrors, 7th edition, Pearson, 2013. (textbook, ebook)
  2. Frank M. Carrano and Timothy Henry, Data Abstraction and Problem Solving with C++: Walls and Mirrors, 6th edition, Pearson, 2013. (old version)
  3. Mark A. Weiss, Data Structures & Algorithm Analysis in C++, 3rd edition, Addison Wesley, 2006. (recommended)
  4. Harvey M. Deitel and Paul J. Deitel, C++ How to Program, 8th edition, Prentice Hall, 2011. (recommended)

Lectures

Topics

Contents

Algorithm Analysis

[ Slides ]

  • Measuring the Efficiency of Algorithms (Ch. 10 of Carrano-Henry)
  • 1 week

Sorting

[ Slides ]

  • Sorting Algorithms and Their Efficiency (Ch. 11 of Carrano-Henry)
  • Sorting animation
  • 2 weeks

Trees

[ Slides ]

  • Binary Search Trees (Ch. 15, 16 of Carrano-Henry)
  • 2 weeks

Heaps

[ Slides ]

  • Heaps (Ch. 17 of Carrano-Henry)
  • 2 weeks

Balanced Search Trees

[ Slides: Part 1 | Part 2 ]

  • AVL, 2-3, 2-3-4, Red-Black Trees (Ch. 19 of Carrano-Henry)
  • 3 weeks

Hashing

[ Slides ]

  • Hashing (Ch. 18 of Carrano-Henry)
  • 1 week

Graphs

[ Slides ]

  • Graphs (Ch. 20 of Carrano-Henry)
  • 3 weeks

Exams

Exams will be a closed-book and closed-notes exam. No A4 sheet will be allowed.

Homeworks

Please make sure that you are aware of the homework grading policy that is explained in the rubric for homeworks.

  1. Assignment 1: Due 23:55 on Oct 19, 2020
  2. Assignment 2: Due 23:55 on Nov 17, 2020
  3. Assignment 3: Due 23:55 on Nov 30, 2020
  4. Assignment 4 Due 23:55 on Dec 22, 2020

Homework assignments will be posted on this page about 10 days before their due date. Assignments are expected to be turned in by 23:55 on the due date. You should upload your solutions to the homework assignments using Moodle before the deadline. Please contact the instructors or the TAs for the late submission policy.

Please make sure you fully understand the Bilkent University Policy on Academic Honesty (in Turkish) and the Rules and Regulations of the Higher Education Council (YOK) (in Turkish). Cheating and plagiarism on exams, quizzes, and homework assignments will be punished according to these regulations.

Quizzes

Quizzes will be done periodically, announced at least a couple of days before the quiz using these guidelines. Here is the rubric for quizzes

Grading Policy

Attendance:6%
Quiz:10%
Homework:24%
Midterm exam:30%
Final exam:30%

In order to be able to take the final exam, a student must

Otherwise, the student will receive the FZ grade.

Advice

When you are in doubt, ask. Use office hours. If you cannot visit us during office hours, you can always ask questions or arrange meetings by e-mail. Study regularly for the course and attend classes. Do your assignments on time and pay attention to the instructions for submitting assignments. Always make sure that the code you submitted does compile and run correctly.

Related Links