Module Description:
The purpose of this course is to provide the students with solid foundations in the basic concepts of programming data structures and algorithms. The main objective of the course is to teach the students how to select and design data structures and algorithms that are appropriate for problems that they might encounter. This course is also about comparing algorithms and studying their correctness and computational complexity. This course offers the students a mixture of theoretical knowledge and practical experience using C++. Major topics: Introduction of Data structures, Algorithm Analysis, Arrays, Recursion, Linked Lists, Stacks, Queues, Trees, Tables (Hashing), Sorting, Searching, Graphs.
Module Aims:
· Understanding of different data structures that are suitable for problems to be solved efficiently
· Understanding of problem solving paradigm
· Understanding of the design and analysis of algorithms based of different data structures
· Understanding of the algorithms complexity for both iterative as well as for recursive approaches
· Understanding of sorting and searching techniques
· Implementing of data structures and algorithms
· Understanding of how common computational problems can be solved efficiently on a computer.
Learning Outcomes:
· To recognize the efficiency trade-offs of using arrays, hash tables, linked lists, heaps, and trees.
· To recognize when a general collection, stack, queue, priority queue, or graph structure is required to solve a problem.
· To be able to implement the insert, delete, and search operations on all the structures presented.
· To code sufficiently well to do the work required in the Computer Architecture, Software Engineering, Networking, and Operating Systems Internals courses.
. To be able for each data structure presented, to state in big O notation the running times.
Textbook:
Data Structures and Other Objects Using C++ , Third Edition, Michael Main and Walter Savitch, Prentice Hall, 4th edition, 2010