CS 201: Fundamental Structures of Computer Science I

Spring 2020


Ercüment Çiçek (Section 1)
Engineering Building, EA-514, x6941
cicek at cs.bilkent.edu.tr
Office Hours: by appointment

Aynur Dayanık (Section 2)
Engineering Building, EA-426, x3441
adayanik at cs.bilkent.edu.tr
Office Hours: by appointment


Mete Han Kahraman, Alper Kagan Kayalı, Aydamir Mirzayev (see the syllabus for their office hours and contact information)


  1. (Jan 30) Please check out the syllabus.
  2. (Jan 30) Please register to the Moodle system: You will submit your assignments using Moodle.
  3. (Jan 30) Course page is online: Welcome to the class.
  4. (Feb 10) TA office hours and contact information are updated on the syllabus.
  5. (Mar 12) Homework 1 is posted (see below and use Bilkent VPN to dowload).
  6. (Mar 26) Homework 1 due date has been extended to April 12, 2020, 23:55.
  7. (Apr 4) Please check out the updated syllabus. (It has been updated due to the coronavirus outbreak.)
  8. (Apr 9) Homework 2 is posted (see below and use Bilkent VPN to dowload, or find it on Moodle).
  9. (Apr 24) Homework 3 is posted (see below and use Bilkent VPN to dowload, or find it on Moodle).
  10. (May 6) Homework 4 is posted (see below and use Bilkent VPN to dowload, or find it on Moodle).

Course Description:

This course introduces the abstract data types of lists, stacks and queues, and shows how one can implement them in C++ using fundamental data structures. It also introduces recursion and algorithm analysis.

Moodle page of the course for homework submissions:

Homework submissions must be done on the Moodle page of the course CS 201.


  1. Frank M. Carrano and Timothy Henry, Data Abstraction and Problem Solving with C++: Walls and Mirrors, any edition, Pearson, 2013 or newer (required)
  2. Harvey M. Deitel and Paul J. Deitel, C++ How to Program, any edition, Prentice Hall, 2011 or newer (recommended)

Course Outline:


[ Slides ]


[ Slides ]

  • Ch.6 (Deitel)

Pointers & Arrays

[ Slides ]

Case Study

[ Slides ]

  • Ch.9, Ch. 10 (Deitel)

Multidimensional Arrays

[ Slides ]

  • Ch.8 (Deitel)


[ Slides ]

  • Ch.2 (Carrano)

Algorithm Analysis

[ Slides ]

Linked Lists

[ Slides: Part 1 | Part 2 ]

  • Ch.8, Ch.9 (Carrano)


[ Slides ]

  • Ch.6, Ch.7 (Carrano)


[ Slides ]

  • Sec.13-1, Sec.13-2, Sec.13-4, Sec. 14-1 (Carrano)



Homework assignments will be posted on this page. Assignments are expected to be turned in by 23:55 on the due date. You should upload your solutions to the homework assignments on Moodle before the deadline.

For the late assignments, each student will be given three grace days for each homework assignment. If no submission is received in three days after the homework deadline, no submission will be accepted for that homework.

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 and homework assignments will be punished according to these regulations.

Grading Policy (updated due to the coronavirus outbreak):

Due to the YOK (Higher Education Council) regulations, we are taking attendance and will report it to the Department at the end of the semester.

Minimum requirements to qualify for the final exam (updated due to the coronavirus outbreak):

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

  1. must submit Part A of the 1st homework and must get at least half of the points for this part, and
  2. must submit the 2nd homework and must get at least 30 points (out of 100), and
  3. must submit the 3rd homework and must get at least 20 points (out of 100).
Otherwise the student will receive the FZ grade.

The instructors also reserve the right to set other thresholds for passing grades.


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: