Download M211 (ITC450 earlier)

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

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

Algorithm wikipedia , lookup

Pattern recognition wikipedia , lookup

Genetic algorithm wikipedia , lookup

Theoretical computer science wikipedia , lookup

Corecursion 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