* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download M211 (ITC450 earlier)
Survey
Document related concepts
Factorization of polynomials over finite fields wikipedia , lookup
Machine learning wikipedia , lookup
Data analysis wikipedia , lookup
Computational phylogenetics wikipedia , lookup
Algorithm characterizations wikipedia , lookup
Fast Fourier transform wikipedia , lookup
Cluster analysis wikipedia , lookup
Binary search algorithm wikipedia , lookup
K-nearest neighbors algorithm wikipedia , lookup
Data assimilation wikipedia , lookup
Selection algorithm wikipedia , lookup
Recursion (computer science) wikipedia , lookup
Time complexity wikipedia , lookup
Pattern recognition wikipedia , lookup
Genetic algorithm wikipedia , lookup
Transcript
Arab Open University ITC Program The calendar of M211 course Data Structures Using C++ Summer-2011 --------------------------------------------------------------------------------------Why this course? When developing software it is important to know how to solve problems in a computationally efficient way. Algorithms describe methods for solving problems under the constraints of the computers resources. Often the goal is to compute a solution as fast as possible, using as few resources as possible. To solve a problem efficiently it may be necessary to use data structures tailored for the particular problem(s) at hand. A data structure is a specific way of organizing data that supports efficient performance of the relevant operations on that data. For instance there are data structures for organizing large numbers of records where records already present can be quickly found and/or deleted, and new records can be inserted and found fast. Goal: The goal of the course is to give a basic understanding of how common computational problems can be solved efficiently on a computer. The goal of the course is to give the student a basic understanding of fundamental algorithms and data structures so that the student: Is able to describe the basic data structures, algorithms and programming techniques, including lists, stack, queues, search trees, hash tables, different sorting algorithms, search algorithms for graphs, and dynamic programming. Can apply the techniques from the course when solving programming/algorithm problems. These techniques include methods for sorting and searching, basic graph algorithms, recursion, dynamic programming, and time and space analysis of programs, both basic techniques and amortized analysis. Is able to select the best algorithm and/or data structure when solving a given programming problem. Is able to analyse time and space required for the execution of a program, as well as the correctness of a program. Is able to formulate a given programming task as an algorithmic problem, in order to select the best method for solving it. M211_Calendar_Summer_2011 Arab Open University –ITC program Page 1 Is able to combine and modify algorithms and data structures, in order to design an efficient program. All in all this course teaches you how to write fast programs, how to design them, and how to analyze them. After the course the student has the algorithmic competences required to meet the prerequisites for advanced courses such as "Advanced Algorithms", "Programming Languages, Interpreters, and Compilers", and "Advanced Database Technology". Contents: The course takes its cue from different problems, which will be solved by using selected basic algorithm/advanced programming techniques. Subjects which we will cover: Methods to sort and search, including Merge sort, Quick sort, balanced search trees, and hashing. Methods to store large data sets for efficient access and manipulation, e.g. UnionFind data structures. Methods to analyse how time/space efficient a program is, including Big-Oh analysis. Methods to use recursion in programming. Programming methods like dynamic programming. This will include e.g.: Stacks, queues, sequence, trees. Priority queues, search trees, dictionaries. General Objectives: Analysis of algorithms – iterative algorithms recursive algorithms Searching algorithms sequential search binary search Sorting algorithms selection sort insertion sort bubble sort merge-sort quick-sort Data structures arrays lists stacks queues Binary Trees M211_Calendar_Summer_2011 Arab Open University –ITC program Page 2 Text Books: D. S. Malik. “Data Structures using C++ “, Course Technology, 2008 or later. Course Assessments: The assessment of this course consists of one quiz, one TMA and a final examination. The breakdown of marks is as follows: 1. Quiz : 30% 2. TMA : 20% 3. Final Exam : 50% Lecture Outline: Twice a week as per schedule. Lecture Week 1 2 3 Date 25 June 2011 2 July 2011 9 July 2011 Text Book Chapter 1: Page (1-64) Subject Introduction, Data Structures, Importance of Data Structures and Algorithm Analysis, Definitions of algorithms, Introduction to Abstract Data Structures/Types, Software Life Cycle, ObjectOriented Design (OOD), Algorithm Analysis: The Big-O Notation Types of statements, Classes, Arrays, Strings, UML Diagram Example, Constructors, Destructors and Structs, Information Hiding. Programming Example: Candy Machine Chapter 3: Page (133-159) Pointer Data Types and Pointer Variables What is analysis of algorithms? Summary of preceding diagrams, Classes, Structs, Pointer Variables, operator new, operator delete, Operations on pointer variables, Functions and Pointers, Pointers and Function Return Pointers, Shallow Versus Deep Copy and Pointers, Classes and Pointers, Destructor Chapter 5: Page (273-366) LEARN ABOUT LINKED LISTS, BECOME AWARE OF THE BASIC PROPERTIES OF LINKED LISTS, EXPLORE THE INSERTION AND DELETION OPERATIONS ON LINKED LISTS, DISCOVER HOW TO BUILD AND MANIPULATE A LINKED LIST, LEARN HOW TO CONSTRUCT A DOUBLY LINKED LIST, LEARN ABOUT LINKED LISTS WITH HEADER AND TRAILER NODES, BECOME AWARE OF CIRCULAR LINKED LISTS. M211_Calendar_Summer_2011 Arab Open University –ITC program Page 3 4 16 July 2011 Chapter 6 & 7: Page (367-468) Learn about recursive definitions, Explore the base case and the general case of a recursive definition, Discover recursive algorithms, Learn about recursive functions, Explore how to use recursive functions to implement recursive algorithms, Learn about recursion and backtracking, Learn about stacks, Examine various stack operations, Learn how to implement a stack as an array, Learn how to implement a stack as a linked list, Discover stack applications, Learn to use a stack to remove recursion 5 23 July 2011 Chapter 8 & 9: Page(469-558) Learn about queues, Examine various queue operations, Learn how to implement a queue as an array, Learn how to implement a queue as a linked list, Learn the various search algorithms, Explore how to implement the sequential and binary search algorithms, Discover how the sequential and binary search algorithms perform, Become aware of the lower bound on comparison-based search algorithms, Learn about hashing TMA01 (20%) 6 30 July 2011 Meetings 1 to 4 MTA (30%) 7 6 August 2011 8 13 August 2011 Learn the various sorting algorithms, Explore how to implement the selection, insertion, quick, merge, and heap sorting algorithms, Discover how the sorting algorithms discussed in this chapter perform, Learn how priority queues are Chapter 10 & 11: implemented, Learn about binary trees, Explore Page (559-717) various binary tree traversal algorithms, Learn how to organize data in a binary search tree, Discover how to insert and delete items in a binary search tree, Explore non-recursive binary tree traversal algorithms Learn about AVL (height-balanced) trees M211_Calendar_Summer_2011 Final Exams (50%) Arab Open University –ITC program Page 4