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.

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

Spring semester's web page 2008 - 2009