General Information
Professor: | Panagiota Fatourou |
Office: | 215 (White Building 1st floor) |
Office hours: | Wendesday: 11:00-13:00, Thursday: 15:00 – 17:00 |
Email address: | ![]() |
Telephone number: | +30 2810 393549 |
TAs: | Drossis Giannis, Zwgrafistou Dimitra, Papathanasiou Vagelis, Petsas Thanasis, Gewrgalis Giannis, Kazepis Nikolas, Sfakianakis Andreas. |
TAs' office: | Graduates' lab, White building sub level |
TAs' office hours: | Mondey, 19:00-20:00. |
Course email address: | ![]() |
Class Information
Tuesday, 15:00-17:00, classroom Λ202. Thursday, 15:00-17:00, classroom Λ202.Assisting Class Information
Friday, 15:00-17:00, classroom Λ202.Course Summary
The course focuses on the study of basic data structures, i.e. arrays, stacks, queues, lists, trees, etc., as well as on more complex data structures such as balanced trees, graphs and others. In addition, the technique of hashing will be taught, as well as data structures for the implementation of dynamic dictionaries, simple sets and sets with special operations. Selected topics on sorting and basic techniques of algorithm design will be also taught.
Books
The course uses more than one books (and mainly the english-written books mentioned below). Any of the above books covers most of the material that will be taught. Additionally, students should study carefully the course slides as well as any other material handed out throughout the semester.
- Harry Lewis and Larry Denenberg, Data Structures and Their Algorithms, Harper Collins Publishers, Inc., New York, 1991.
- Μιchael T. Goodrich and Roberto Tamassia, Data Structures and Algorithms in Java, John Wiley & Sons, Inc., (4th edition).
- Michael T. Goodrich, Roberto Tamassia, and David M. Mount, Data Structures and Algorithms in C++, John Wiley & Sons, Inc.
- Παναγιώτης Μποζάνης, Δομές δεδομένων, 960-418-010-Χ, Τζιόλας, 2003.
- Sahni, Δομές Δεδομένων, Αλγόριθμοι και Εφαρμογές στη C++, Μετάφραση: Γιάννης Θεοδωρίδης & Γιάννης Μανωλόπουλος, Εκδόσεις Τζιόλα, 2004.
- Γεώργιος Φ. Γεωργακόπουλος, Δομές Δεδομένων: Έννοιες, Τεχνικές, Αλγόριθμοι, Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2002.
- Cormen, Leiserson and Rivest, Introduction to Algorithms, MIT Press, 1990. Το 1ο μέρος του βιβλίου κυκλοφορεί μεταφρασμένο από τις Πανεπιστημιακές Εκδόσεις Κρήτης.
Program
Week | Subject |
---|---|
1st | Introduction - Basic concepts of algorithms and data structures |
2nd | Time complexity - Amortized cost, recursive algorithms and recursive relations - Arrays |
3rd | Basic data structures: Lists, stacks, queues |
4th | Lists |
5th | Trees |
6th | Trees |
7th | Balanced Trees: Implementation of dynamic dictionaries |
8th | Hashing |
9th | Hashing - Sets with special operations |
10th | Priority queues - Graphs |
11th | Graphs |
12th | Sorting |
13th | Techniques of algorithm design |
Assignments and Marking
Throughout the semester, five sets of theoretical assignments and a project will be handed out. Every assignment must be turned in before the given deadline. Late turn-ins will be accepted only up to three days after the deadline with a penalty of 1 point (out of 10) per day. Solutions to the assignments will be given in class by the TAs after the deadline. Exceptionally good assignments can be marked with grades greater than 10.
The project is divided in three parts, each of which has a different deadline. Every part must be submitted before the given deadline. The same algorithm as for the theoretical assignments will be used for late submissions. All parts of the project will be orally examined (see the calendar for details). Students can select either C or JAVA for their programming tasks. Despite the fact that different parts of the project have a different deadline and will be marked seperately, the final grade of the project will be determined after the final submission. Students will be given the chance to improve the first two parts of their project based on feedback provided by the TAs during the oral exams. The final grade of the first two parts of the project will be determined as follows:.
0,3*B1 + 0,7*B2, where B1 is the original mark of each part and B2 is its mark after the final submission where all improvements have been taken into consideration.
Attention: The possibility of improving the third part will not be given.
It is important that every student understands the given problem and outlines a possible solution by him/herself (although s/he can ask the course assistants for any questions or problems he or she has concerning the project (e.g., code compilation or running problems). The code should be carefully written to simplify the task of correcting it. The marks given to each part of the project will reflect the completeness and correctness of the provided solution as well as the provision of explanatory comments on the submitted source code. Any non-academic behaviour (close colaboration or cheating) will be punished with grade deduction or nullification. It is best for a student to submit an incomplete project than an altered copy of another student's work. Students can contact the course TAs or the instructor for questions during the course office hours.
Although students can create their programs on any type of computer or operating system, the examination of the project will be performed on the Department's UNIX machines. So stundents must ensure that their submitted code can be compiled and run on these machines.
Students are responsible for the misuse of their electronic account. They must ensure that their password remains secret and nobody has access to their account. Moreover, the folders under which they keep their assignments/project should not have read (or even worse write) permision by others (you may find command "chmod" useful for this purpose).
During the final exam students can use their book or the lecture slides. Other notes are forbidden. The use of mobile phones is forbidden during the final exam and students should have some kind of document that verifies their identity (like paso, identification card, driving license, passport, etc.) with them.
The final grade will be derived according to the weights described below:
Theoretical assignments: 15%
Project: 20%
Final Exam: 65%
Students with score lower than four (out of ten) on the final exam will fail.
Course Emailing-list & Electronic Account
The course uses an emailing list for the efficient communication of the instructor and the TAs with the students. Subscription to the emailing list is performed by sending an email to the following address:

with empty subject and the following line as the email body:

Students are obliged to subscribe to the emailing list by October 10, 2009. The address of the emailing list is:

All emails sent to this address will be forwarded to all members (students, instructor, TAs) of the list. It is a strong recommendation to the students to read email regularly (e.g., once a day).
The address of the electronic account of the course is the following:

Students may send any questions concerning the course to this address.
Attendance
Attendance is strongly recommended. Students are expected to know the material presented in class. Part of the material that will be taught is not covered by Greek books or it is presented in a different order.
Prerequisities
CS100 (Introduction in Computer Science) and CS150 (Programming) are prerequisite courses for this course. Successful completion of CS118 (Discreet Mathematics) will be also helpful. Students that have not succeeded on the courses mentioned above, do not have the required background to attend the course.
Related Bibliography
- K. Mehlhorn and S. Näher, “LEDA”, Cambridge University Press, 1999.
- C. J. Van Wyk, “Data Structures and C Programs”, Addison-Wesley Publishing Company, 1988.
- Mark Allen Weiss, Data Structures & Algorithm Analysis in Java, Addison-Wesley, 1999, 0-201-35754-2
- William Collins, Data Structures and the Java Collections Framework, 2nd ed., McGraw-Hill, 2005, ISBN: 0-07-282379-8.
- Leendert Ammeraal, «Προγραμματισμός και Δομές Δεδομένων στη C», Μ. Γκιούρδας, 1989.
- Niklaus Wirth, «Αλγόριθμοι & Δομές Δεδομένων», Κλειδάριθμος, 1990.
- Gregory Rawlins, Αλγόριθμοι: Ανάλυση και Σύγκριση, Κριτική, 2004, 960-218-350-0 (στην πρώτυπη αγγλική έκδοση: Compared to What, Computer Science Press, 1992, ISBN: 0-7167-8243-X).
- Anany Levitin, Εισαγωγή στην Ανάλυση & Σχεδίαση Αλγορίθμων, 978-960-418-143-8, Τζιόλας, 2008 (στην πρώτυπη αγγλική έκδοση: The Design & Analysis of Algorithms, 2nd ed, Pearson, 2007).
- Robert Sedgewick, Algoritmhs in Java, 3rd ed, Addison-Wesley, 2003, ISBN: 0-201-36120-5, Volume A: Fundamentals, Data Structures, Sorting, Searching
Spring semester's web page 2008 - 2009