F11_CSE_246_Data_Structures_and_Algorithms

=CSE246: Data Structures and Algorithms=

Program:
BS(CS)

Semester:
Fall 2011

Instructor:
Muhammad Saeed muhammadsaeed@iba.edu.pk / saeed@uok.edu.pk

**Credit Hours:**
4 (3 credit hours for theory + 1 credit hour for lab)

Prerequisite(s):
CSE141, CSE145, MTS201

Course Description:
The purpose of this course is to provide the students with solid foundation in the programming logic, data structures and algorithms. 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 organising data that supports efficient performance of the rekevant operations on that data. This course will cover all aspects of taking Input, Processing and producing Output in an efficient and optimal way. This course include Multi-dimensional arrays, dynamic linked list, ADTs, stack, queue their applications, complexity analysis, sorting, searching, hashing, trees, binary search tree, expression tree, priority queue/binay heap tree, graph theory algorithms (topological sorting,shortest path and minimum spanning tree). Students are allowed to work in any language but C/C++ coding will be used for teaching during theory/lab sessions.

Course Objectives:
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.**
 * **Is able to combine and modify algorithms and data structures, in order to design an efficient program.**

URLs:
[]

Books:
1. Data Structures and Algorithm Analysis in C/C++ “Mark Allen Weiss” 2. E-Book “Data Structures and Algorithms with Object-Oriented Design Patterns in C#” 3. Pointers in C

Web Resources:
[|www.google.com] with efficient query

Grading Policy:
Hourly Exams ................ 10%+10% Final Exam & Final Lab ... 40+10% Quiz ............................. 10% Assignments ................. 10% Term Project ................. 10%

Uploaded Reference Course Outline:
You may also upload a course outline here.

Class Time Spent On (In Credit Hours):
Theory: 1.5 Problem Analysis: 1 Solution Design: 1.5

fields ||  || data types || Books: Let us C Pointers in C || functions(append,display, search) ||  || implementation ||  || expression evaluation ||  || implementation ||  || Tree Traversal (Inorder,Post-order,Pre-order,Level order) ||  ||
 * ==**Topics Covered in the Course **== ||
 * S.No || Date of the lecture || Topic of Lecture || Additional Reference Material ||
 * 1 || Session 1 || Course Overview: What/Why is Data Structures and link with other
 * 2 || Session 2 || review of programming concepts, memory management for
 * 3 || Session 3 || Arrays: Static & Dynamic Arrays, Multi dimensional Arrays. ||  ||
 * 4 || Session 4 || Arrays: Row and Column Major memory arrangements. ||  ||
 * 5 || Session 5 || Linked List: review of pointers, basic conepts of dynamic linked list,
 * 6 || Session 6 || Linked List: functions (insert, remove) ||  ||
 * 7 || Session 7 || Stack: Basic Concepts and functions, array and linked list
 * 8 || Session 8 || Stack: Expression parser, infix to postfix conversion,
 * 9 || Session 9 || Queue: basic concepts and functions, array & linked list
 * 10 || Session 10 || Queue:Applications, level order tree traversal ||  ||
 * 11 || Session 11 || Complexity Analysis: Time and space complexity, Big O ||  ||
 * 12 || Session 12 || Complexity Analysis: Omega, Theta and small o ||  ||
 * 13 || Session 13 || Tree: Basic concepts, N-ARY Tree,
 * 14 || Session 14 || Tree: Expression Tree ||  ||
 * 15 || Session 15 || Binary Search Tree: Concepts, Adding/Searching Data ||  ||
 * 16 || Session 16 || Binary Search Tree:Removing Data, Complexity Analisys ||  ||
 * 17 || Session 17 || Tree Balancing: AVL Tree, Complexity Analysis ||  ||
 * 18 || Session 18 || Tree Balancing AVL: Single/Double Left/Right Rotation ||  ||
 * 19 || Session 19 || Heap Tree: Binary Heap, Min/Max Order Tree, ||  ||
 * 20 || Session 20 || Priority Queue: Enqueue,Dequeue in Priority Queue ||  ||
 * 21 || Session 21 || Hashing: Basic Concepts, Close Hashing ||  ||
 * 22 || Session 22 || Hashing: Open Hashing, Complexity Analysis ||  ||
 * 23 || Session 23 || Graphs: Basic Concepts ||  ||
 * 24 || Session 24 || Graphs: Basic Concepts ||  ||
 * 25 || Session 25 || Graphs: DAG, Topological Sorting ||  ||
 * 26 || Session 26 || Graphs: Shortest Path Algorithms (Dijkstra) ||  ||
 * 27 || Session 27 || Minimum Spanning Tree Algorithms(Kruskal's) ||  ||
 * 28 || Session 28 || Minimum Spanning Tree Algorithms (Prim's) ||  ||


 * ==**Laboratory Projects/Experiments Covered in the Course (optional) **== ||
 * S.No || Date of the Lab || Topic of the Lab || Additional Reference Material ||
 * 1 || week 1 || review of C/C++ Programming concepts || Book: Let us C ||
 * 2 || week 2 || review of Pointers (call by value,reference,pointer) || Book: Pointers in C ||
 * 3 || week 3 || Multi dimensional arrays (Row & Column Major) through dynamic arrays ||  ||
 * 4 || week 4 || Linked List functions (append,display,search,insert,remove) ||  ||
 * 5 || week 5 || Stack and Queue functions by using Arrays & Linked List ||  ||
 * 6 || week 6 || Expression Parser (Infox to postfix conversion and expression evaluation) ||  ||
 * 7 || week 7 || N-ARY Tree, Binary Tree, Expression Tree ||  ||
 * 8 || week 8 || Binary Search Tree (add,search,remove data) ||  ||
 * 9 || week 9 || Priority Queue: Binary Heap, Min/Max Tree, Enqueue/Dequeue functions ||  ||
 * 10 || week 10 || Hashing: Open Hashing, Closed Hashing ||  ||
 * 11 || week 11 || ReHashing: ||  ||
 * 12 || week 12 || Searching & Sorting of numerical and alpha-numeric data ||  ||
 * 13 || week 13 || Graph: Adjacency Matrix/list, Indegree/Outdegree ||  ||
 * 14 || week 14 || Graph: Shorest Path Algorithm (Dijkstra) ||  ||