CS Department Module Descriptions 2010 University of Kufa Faculty Mathematics and Computer Science Computer Science Department Academic Year 2010/2011 Course Information Course Name: Data Structures Prerequisite: ح201 Course Code: Level: 1 Lecturer Information Name: Hind Rostom Mohmmed Office Hours: Academic rank: Office No: Email:hind_restem@yahoo.com ح102 Credit Hours:3 Course module description This course tends to give the student the concepts and applications of the data structures, including Stacks, Queues, Linked List, Trees, Graphs, and the main Sorting techniques and indexing. Object Oriented Programming Language (C++) is used to implement the required data structures. Course module objectives: The choice of appropriate data structures is key in the development of efficient algorithms. In fact, it is virtually impossible to create efficient algorithms without a good understanding of a number of fundamental data structures. This module aims 1. To learn how the choice of data structures and algorithm design methods impacts the performance of programs. 2. To learn object-oriented programming principles. 3. To study specific data structures such as linked lists, stacks, queues, hash tables, binary trees, binary search trees, and graphs. 4. To study specific algorithm design method : divide and conquer 5. To gain experience writing programs in C++. Course/ module components Text Books (title , author (s), publisher, year of publication) Mark Allen Weiss, “Data Structures and Algorithm Analysis in C++”, AddisonWesley,2006. Teaching methods: Duration: 30 weeks in first semester, 60 hours in total Lectures: 30 hours, 2 per week Labs: 30 hours Learning outcomes: Knowledge and understanding understand basic ideas about algorithms and time complexity. understand the concepts of time and space complexity, worst case, average case and best case complexities and the big-O notation know and understand the principles searching and sorting algorithms 1 University of Kufa /Faculty of Mathematics and CS- CS Department CS Department Module Descriptions 2010 Understand the principles of stacks, queues, linked list, trees, graphs, hashing Cognitive skills (thinking and analysis). be able to develop efficient algorithms for simple computational tasks understand the concepts of time and space complexity, worst case, average case and best case complexities and the big-O notation be able to compute complexity measures of algorithms, including recursive algorithms using recurrence relations be able to construct and use the data structures such as stacks, queues, linked lists, trees, and hash tables. know and understand the principles searching and sorting algorithms Communication skills (personal and academic). Practical and subject specific skills (Transferable Skills). be able to construct and use the data structures such as stacks, queues, linked lists, trees, and hash tables. know and understand the principles searching and sorting algorithms be able to write advanced programs in C++. Assessment instruments Short reports and/ or presentations, and/ or Short research projects: One report after 10th week of the semester, 5 marks Quizzes. Two quizzes, 5 marks total. Home works: Five home works during the semester Final examination: 50 marks Allocation of Marks Assessment Instruments Mark First examination 15% Second examination 20% Final examination: 50 marks 50% Reports, research projects, Quizzes, Home 15% works, Projects Total 100% Course/module academic calendar 2 University of Kufa /Faculty of Mathematics and CS- CS Department CS Department Module Descriptions 2010 week (1) Basic and support material to be covered Trees : Binary search tree, binary expression tree, and heap tree Trees :Binary search tree, binary expression tree, and (2,3) heap tree Graph ADT (4,5) (6) First Exam (8,9) Sorting : Bubble sort, selection sort, insertion sort, Shell sort Assignment: binary search of a Page 521,522,523 given element in a list of numbers represented by a binary search tree. Tutorial : Implementation of the Page 526,527,528 Page 580,581,582,583,584 Assignment : Depth first search and breadth first search Tutorial :Write a program to sort Page 644,645,646 a list of numbers using a Bubble sort. A report to be prepared by Page 647,648,649 groups of three students about the different sorting techniques. Assignment : Use sequential and Page 650 binary search techniques to store employees information Searching: Sequential (12,13) Second Exam (14) (15) Page 518,519,520 A report to be prepared by Page 647,648,649 groups of three students about the different sorting techniques. Sorting : Heap sort (10,11) Tutorial: Implementation of the binary tree ADT using a class Homework binary tree ADT using a class Sorting : Quick sort (7) Homework/reports and their due dates search, Binary Search Hashing : hash function Specimen exam (Optional) Revision and applications Final Exam Tutorial : hash function Page 651 examples Applications on Data Structures Expected workload: On average students need to spend 3 hours of study and preparation for each 50-minute lecture/tutorial. Attendance policy: Absence from lectures and/or tutorials shall not exceed 10%. Students who exceed the 10% limit without a medical or emergency excuse acceptable to and approved by the Dean of the relevant college/faculty shall not be allowed to take the final examination and shall receive a mark of zero for the course. If the excuse is approved by the Dean, the student shall be considered to have withdrawn from the course. Module references Books 3 University of Kufa /Faculty of Mathematics and CS- CS Department CS Department Module Descriptions 2010 1. Robert L. Kruse and Alexander J. Ryba, “Data Structure and Programming Design in C++”, Prentice Hall, 2005. 2. A. Michael Berman, “Data Structure via C++”, Oxford University Press, 1997. 3. N .Wirth, "Algorithms and data structures", prentice Nell dale," C++ plus data structures", prentice hall,2003. 4. Robert L. Kruse and Alexander J. Ryba, “Data Structure and Programming Design in C++”, Prentice Hall, 2005. 5. T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein. , Introduction to Algorithms (3rd edition),2009. 6. Sandeep Sen1,Lecture Notes for Algorithm Analysis and Design, October 8, 2009, 1Department of Computer Science and Engineering, IIT Delhi, New Delhi 110016, India. 7. 4- A. Michael Berman, “Data Structure via C++”, Oxford University Press, 1997. 8. Web page: http://www.win.tue.nl/~speckman/2IL05.html http://www.cs.unt.edu/~rada/CSCE3110 Journals Websites www.cplusplus.com 4 University of Kufa /Faculty of Mathematics and CS- CS Department