Course Title : Data Structures and Algorithms Course Code : DCO20105 Semester Hours (SH) : 4 SH in Sem A : 4 Credit Unit : 3 Level : 2 Pre-requisites : DCO10105 Object-Oriented Programming and Design Pre-cursor : Nil Semester A : Lectures Laboratories Total Hours (Group Size) : Lectures 26 Laboratories/Tutorial Teaching pattern 1. Aims and Objectives 1.1 Aims 26 26 26 (20) The aims of this course are: 1.2 (a) Gain an awareness of the dependence of execution time, bandwidth and memory requirements on the data structures and algorithms chosen; (b) Be able to reason informally about algorithm and data structure correctness and complexity; (c) Demonstrate intelligent selection of algorithms and representations; and (d) Demonstrate programming using an O-O language and its library. Objectives On completion of this course, students should be able to: (a) Show knowledge of the basic abstract data types and algorithms for storing, retrieval, and searching; (b) design and implement linear and tree structures, as classes by choosing the appropriate classes supported by the language’s library; (c) understand and analyse different sorting methods and their usage; (d) perform execution measurement and performance evaluation with asymptotic notation; and (e) apply and select the appropriate abstract data types for different applications. 2. Syllabus 2.1 Abstract Data types (ADTs) of basic containers. Linear ADT: Array/Vector, List, Deque, Stack, and Queue. Others: Tree with a focus on the BST, Hash Map, Priority Queue (Heap) and Red-Black Tree. 2.2. The design and implementation of the ADTs. Defining Deque, Stack, and Queue with library’s vector and list. Implementing BST by pointer and reference structures. Design of implementation concerns: Object vs Reference, Constant Reference, Member function vs Non-Member function, Function Object. Applications on the basic ADTs. 2.3. Algorithms and their performance analysis Basic of Algorithm. Algorithm vs Container and Iterator. Execution Time Analysis and Measurement with Asymptotic notation. Complexity of Sorting and Container Access: Traversal, Insertion, Searching, and Removal. Decision on choosing a container and an algorithm. 3. Teaching Methods This course will emphasise both implementation skills and analytical techniques for the basic abstract data types. Lectures are for the concept presentation and explanation of details of some of the abstract data types’ implementation. Tutorials and labs will be weighed different as the course progress. Tutorials are for students to better understand in order to perform discussion and analysis. Hands-on practice of program implementation will be provided during laboratory sessions. Students are expected to carry out exercises involving class design and implementation. Students are also expected to have a small application to integrate the concepts and skills presented in the class Demonstrations and explanations of programming language and quizzes will be arranged during the lectures/tutorials where deemed appropriate. 4. Assessment Coursework Examination 30% (Lab/Tutorial exercises and an assignment) 70% (Quizzes, tests, and a 2-hour final exam) Examination includes continued assessments and a two-hour final exam. Continued assessments may be quizzes and/or the mid-term exam arranged by the instructor throughout the progression of the course. The total contribution of the continued assessments will be weighted not more than 40% of the examination. 5. Booklist Ford, W. & Topp. W.: Data Structures with C++ using STL, 2nd Edition, Prentice Hall, 2002 Weiss, M.A.: Data Structures and Algorithm Analysis in C++, 2nd Edition, Addison-Wesley, 1999. Collins, W.J.: Data Structures and the Standard Template Library, international Edition, McGraw-Hill, 2003. Sahni, S.: Data Structures, Algorithms, and Applications in C++, international Edition, McGraw-Hill, 2000. Josuttis, N.M..: The C++ Standard Library: A Tutorial and Reference, Addison-Wesley, 1999.