Syllabus

**__ Course Objectives __**
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 JAVA.

· Object-Oriented Programming Techniques · Logic and Discrete Structures
 * Prerequisite Courses ** :

 · Data Structures using java by Robert Lafore · // Data Structures // in //Java// by Thomas A. Standish.
 * Text Books **

 · Data Structures and Algorithms in Java (4th edition) by [|Michael T. Goodrich] and [|Roberto Tamassia]  · Data Structures with Java by William H. Ford · // Data Structures // and Algorithms in //Java// (2nd Edition) · Data Structure by Robert Sedgwick · Java : How to program, Deitel and Deitel
 * References Books **

Midterm Exam ............... 30% Final Exam ..................... 40% Quizzes ........................... 5% Assignments.................... 10% Term Project ................... 15%
 * Grading Policy: **

**Course Outline**
1. Introduction 2. Programming Strategies 3. Arrays 4. Asymptotic Analysis (big-O notation) 5. Lists a) Singly link lists b) Doubly link lists c) Circular link lists 1st Midterm

6. Stacks and its applications 7. Queues a) Simple queues b) Priority queues c) Circular queues 8. Recursion  a) Linear recursion b) Binary recursion

9. Trees and tree traversal 10. Huffman Encoding 11. Searching a) Sequential search b) Binary search c) Tree search d) Hashing 12. Sorting a) Bubble sort b) Insertion sort c) Selection sort d) Quick sort e) Heap sort f) Shell sort g) Merge sort h) Radix sort

2nd Midterm

13. General n-array trees 14. Balanced Binary trees a) B-trees b) Red-Black trees c) AVL trees

More Topics (Optional)

 1. Text Processing  a) String operations  b) Pattern matching algorithms  2. [|Dynamic Algorithms]  a) [|Matrix Chain Multiplication]  3. [|Graphs]   a) Depth-first search  b) Breath-first search  c) [|Minimum Spanning Tree]  d) [|Dijkstra's Algorithm]  4. [|Hard or Intractable Problems]   a) [|Eulerian and Hamiltonian Paths] [|Travelling Salesman's Problem]


 * Final Exam **