Course Title : Data Structures
Code Course
Type
Regular
Semester
Lecture
(hours/week)
Seminar
(hours/week)
Lab
(hours/week)
Credits ECTS
CMP 115-1 A -1 3 1 0 3.50 5
Lecturer and Office Hours
Teaching Assistant and Office Hours
Language
Course Level
Description The "Data Structure" course provides general knowledge on the main data structures and algorithms used to manipulate them. Algorithms and Data Structures are the two essential pillars to build an efficient applications, regardless of the tools used for their implementation. In this context, through this course students will be able to understand the importance and impact that Data Structures have. This course will first address the main types of Data Structures, the advantages and disadvantages of these structures compared to each other and how to implement them. It will also address main searching and sorting algorithms based on these structures.
Objectives This course aims to: 1. Familiarize students with main Data Structures. 2. To introduce students with the analysis of the efficiency of any Data Structure. 3. To make aware of students with the way of organizing and implementing the main data structures. 4. To enable students to implement these structures using search and sorting algorithms, but not only 5. Explain the importance and influence of Data Structures in designing and building an application as efficient as possible. 6. Explain the integration of Data Structures with algorithms. 7. Develop students' critical thinking in analyzing different types of Data Structures and different Algorithms which can be used to manipulate them.
Course Outline
WeekTopics
1Introduction to Data Structures This topic provides an overview of the course by addressing in general terms algorithms and main data structures. The topic deals with the concept of algorithm, its history, its importance in programming and makes a general presentation of search and sorting algorithms. In this topic are treated in general Arrays, Linked Lists, Stacks and Queues Data Structures. (Pg. 5-26)
2Memory, Abstract Data Types and Addresses Explaining main concepts and mechanisms that are constituent elements and on which all data structures are built will help students understand and implement previous topics. This topic takes a look at computer memory, memory reservation, memory addresses, and abstract data types. Also in this topic are treated the concepts of variables and pointers, their declaration and initialization, the creation of new types of data by the user and the declaration of various objects. (Pg. 27 – 45)
3Arrays and Strings This topic deals with one, two and multi-dimensional arrays, their importance, array operations, implementation and the analysis of the time efficiency of each operation. This topic also addresses Strings, changes in implementation compared to other Arrays, and finally addresses the advantages and disadvantages of the Array data structure. (Pg. 46-102)
4Algorithms Analysis This topic addresses what is algorithm analysis, its importance in building an algorithm, classifying the growth rate of the algorithm, the Big-O, Theta and Omega notions, analyzing the efficiency of algorithms by case and comparing them in different examples. (Pg. 103-131)
5Linked Lists This topic deals with the standard structure of the simple linked list, its main components, the differences of the simple linked structure once from double linked structure, the implementation and operations done to linked lists. Also this topic examines circular, double circular and multi-lists data structures. (Pg. 174 – 267)
6Linked Lists This topic deals with the standard structure of the simple linked list, its main components, the differences of the simple linked structure once from double linked structure, the implementation and operations done to linked lists. Also this topic examines circular, double circular and multi-lists data structures. (Pg. 174 – 267)
7Stacks and Queues This topic deals with Stack and Queues, properties and operations of Stacks and Queues, their implementation through arrays and linked lists, error states, Queue types, implementation in computer science and Advantages and Drawbacks of Stack and Queues (Pg. 141 – 173)
8Midterm Exam
9Stacks and Queues This topic deals with Stack and Queues, properties and operations of Stacks and Queues, their implementation through arrays and linked lists, error states, Queue types, implementation in computer science and Advantages and Drawbacks of Stack and Queues (Pg. 141 – 173)
10Recursion This topic addresses recursion, its implementation through the example of factorial and its advantages and disadvantages. The main recursive algorithms and divide and counter algorithms are also treated. (Pg. 268 – 301)
11Trees This topic deals with trees (Trees), their mathematical features, tree traversal, tree search according to the techniques "depth first search" and "width first search", implementation of recursive algorithms through trees. Binary trees, its elements, research in them and their implementation are also treated. (Pg. 304 – 367)
12Graphs This topic deals with graphs, undirected graph representation, matrix and neighborhood list, algorithms for undirected graphs, traversing them using “depth first” and “width first” techniques, minimum tree traversal, Dijkstra- prim algorithms, Kruska and the shortest stack algorithm via Dijkstra's. (Pg. 457 – 496)
13Searching Algorithms This topic deals with sequential and binary search algorithms, binary search algorithm analysis, string joining algorithm, prime numbers, Eratostene sieve, implementation of these algorithms by means of various examples, and analysis of their complexity. (Pg. 497 – 515)
14Sorting Algorithms This topic deals with Bubble Sort, Selection Sort, Insertion Sort, Quick Sort, and Merge Sort algorithms. The ways of implementation and analysis of efficiency of these sorting algorithms are also addressed (Pg. 516 – 547)
15General Review
16Final Exam
Prerequisites
Textbook
Other References
Laboratory Work
Computer Usage
Other
Learning Outcomes and Competences
1Students will be able to understand principles in organizing flowcharts and algorithms.
2Students will be able to handle data structures.
3Students will learn the most important concepts of data structures and algorithms.
4Students will be able to understand the importance of data structures and algorithms in building an efficient application.
5Students will be able to implement these data structures in any programming language.
6Students will be provided with sufficient technical terminology to proceed with other subsequent courses.
Course Evaluation Methods
In-term studies Quantity Percentage
Midterms140
Quizzes00
Projects00
Term Projects00
Laboratory00
Attendance110
Contribution of in-term studies to overall grade50
Contribution of final examination to overall grade50
Total100
ECTS (Allocated Based on Student) Workload
Activities Quantity Duration
(hours)
Total Workload
(hours)
Course Duration (Including the exam week : 16 x Total course hours) 16464
Hours for off-the-classroom study (Pre-study, practice) 14342
Assignments 000
Midterms 188
Final examination 11212
Other 000
Total Work Load 126
Total Work Load / 25 (hours) 5.04
ECTS 5

Get Syllabus PDF (Albanian) Get Syllabus PDF (English)