Course Details

Course Information Package

Course Unit TitleDATA STRUCTURES
Course Unit CodeACSC288
Course Unit DetailsBSc Computer Engineering (Required Courses) - BSc Computer Science (Required Courses) -
Number of ECTS credits allocated5
Learning Outcomes of the course unitBy the end of the course, the students should be able to:
  1. Recognize the limitations of static data structures, compare and discuss the differences in memory allocation of static and dynamic data and construct programs that can handle, create, manipulate, and destroy dynamic data.
  2. Demonstrate the ability to implement linear abstract data types such as lists (single/double linked, circular), stacks and queues programmatically (C++). Identify how such structures can be applied in Computer Science, distinguish the use of each and effectively employ them.
  3. Describe and explain how tree data structures can be developed and implemented, discriminate between the different tree types (generic, binary) and identify where they can be used. Evaluate tree traversal methods and be able of designing and constructing core tree operations using recursive functions. Examine implementation approaches for special tree structures such as priority queues.
  4. Define and describe data structure classes available in the standard template library in C++, employ them for solving relevant problems and develop the necessary conceptual understanding that would help them adapt to similar programmatic environments (e.g. Collections in Java).
  5. Recognize the importance of algorithmic time and space complexity. Evaluate the complexity of basic algorithms and explaining the concept of big O notation as well as terms such as NP-complete and intractability. Select, experiment, and programmatically develop appropriate data structures and algorithms for handling the searching and sorting problems and judge the advantages.
Mode of DeliveryFace-to-face
PrerequisitesACSC183Co-requisitesNONE
Recommended optional program componentsNONE
Course Contents

Part 1: Data representation under imperative programming.

Data, data representation and data storage. Static data types. Memory requirements and implications.

Part 2: Dynamic Data and pointer programming

Pointer programming. Construction of dynamic data in C - new and delete operators. Persistence of dynamic memory. Memory Deallocation. Dynamic (vectors) vs static arrays.

Part 3: Dynamic Linked Lists

Development of dynamic linked lists. Basic list operations (append, delete, insert, etc). Implementation of linked lists and performance issues. Comparison with arrays. Types of linked lists: circular linked lists, double linked lists.

Part 4: Linear Abstract Data Types

Implementing abstract types. Stacks and Queues. Dynamic and static implementations and performance considerations. Applications of stacks and queues.

Part 5: Multidimensional Data Structures

Two-dimensional linked lists. Trees: Implementation of generic trees and applications. Binary trees and implementations. Special binary trees: Heaps, Binary search trees. Hash tables.

Part 6: Introduction to Algorithmic Complexity

What is algorithmic complexity. Tractability. Investigation of performance on general problems such as sorting and searching. Investigation of ADTs provided by the Standard Template Library (vector, maps, multimaps, valarray, sets, etc).
Recommended and/or required reading:
Textbooks
  • No specific textbook used.
References
  • Kely Loudon, Mastering Algorithms with C
  • Robert Sedgewick, Algorithms in C++ Part 1-4
  • Mark Allen Weiss, Data Structures and Algorithms in C++
  • Pothering J. G., Naps T., Introduction to Data Structures and Algorithm Analysis with C++
  • The INTERNET
Planned learning activities and teaching methods

The module will combine theoretical understanding with practical skill acquisition. Delivery will be based on 2 period lecturing and 2 laboratory periods. Every one or two weeks tutorial exercises will be provided to students that cover the concepts addressed. Laboratory work is based on programming using the C programming language.

The course material (notes, exercises, forum, etc) is maintained on the university’s e-learning platform
Assessment methods and criteria
Assignments16%
Test12%
Lab work12%
Final Exam60%
Language of instructionEnglish
Work placement(s)NO

 Εκτύπωση  Ηλεκτρονικό ταχυδρομείο