S11_CSE246_Data_Structures_and_Algorithms

=////= = = =//Recommended Format for Course Outlines://= //Following is the recommended format for all course outlines. You should change the content accordingly://

=CSE246: Data Structures and Algorithms=

Program:
BS(CS)

Semester:
Spring 2011

Instructor:
Quratulain Rajput

**Course Lead:**
Quratulain Rajput

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

Prerequisite(s):
CSE142, MTS201

Course Description:
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.

Course Objectives:
After the completion of this course students have:
 * Understanding of different data structures for different problems.
 * Understanding of problem solving paradigm.
 * Understanding of the design and analysis of algorithms based of different data structures.
 * Understand the complexity of algorithms for iterative as well as for recursive approaches.
 * Be able to implement data structures and algorithms.
 * understanding of how common computational problems can be solved efficiently on a computer.

URLs (Optional):
http://cse246ds-spring2011.wikispaces.com/lectures

Books:

 * Text books **
 * Data Structures & problem solving using JAVA by Mark Allen Weiss
 * Data Structures using java by Robert Lafore
 * Reference 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
 * <span style="color: black; font-family: "Tahoma","sans-serif"; font-size: 13px;">Java: How to program, Deiteland Deitel


 * <span style="font-family: "Times New Roman","serif"; font-size: 18px;">Tools/Languages: **
 * <span style="font-family: "times new roman","serif"; font-size: 16px;">Data structure animation ( []<span style="font-family: "Times New Roman","serif"; font-size: 16px;">)
 * <span style="font-family: "Times New Roman","serif"; font-size: 16px;">JAVA programming language
 * <span style="font-family: "Times New Roman","serif"; font-size: 16px;">Eclipse Editor for Java Programming
 * <span style="font-family: "Times New Roman","serif"; font-size: 16px;">Netbeans Editor (optional)

Web Resources:
Any web resources that may be used during the course.

Grading Policy:
<span style="color: #000000; font-family: tahoma,sans-serif; font-size: 13px;">Midterm Exams ............... 30% <span style="color: #000000; font-family: tahoma,sans-serif; font-size: 13px;">Final Exam ..................... 40% <span style="color: #000000; font-family: tahoma,sans-serif; font-size: 13px;">Quizzes ........................... 5% <span style="color: #000000; font-family: tahoma,sans-serif; font-size: 13px;">Assignments .................... 10% <span style="color: #000000; font-family: tahoma,sans-serif; font-size: 13px;">Term Project ................... 15%

Uploaded Reference Course Outline:
Uploaded a course outline.

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


 * ||  ||   || ==**<span style="font-family: Arial,sans-serif;">Topics Covered in the Course **== ||
 * Lec.no. || Day || Date || Topics ||
 * 1. || Monday || 14 Feb, 2011 || Course introduction ||
 * 2. || Thursday || 17 Feb, 2011 || Introduction to Data structures and Algorithms, List data structure, Arrays and Dynamic Arrays with basic operations. Analysis of list operations ||
 * 3. || Monday || 21 Feb, 2011 || Operation on Dynamic array ||
 * 4. || Thursday || 24 Feb, 2011 || Linked list: Motivation and its understanding ||
 * 5. || Monday || 28 Feb, 2011 || Basic operations on linked list and their implementation ||
 * 6 || Thursday || 3 Mar, 2011 || Doubly Linked list ||
 * 7 || Monday || 7 Mar, 2011 || Circular Linked list ||
 * 8 || Thursday || 10 Mar, 2011 || Searching Algorithms: Linear search and binary search ||
 * 9 || Monday || 14 Mar, 2011 || Algorithm Analysis and Big O notation ||
 * || Thurdsay || 17 Mar, 2011 || canceled ||
 * 10 || Monday || 21 Mar, 2011 || Stack using array and linked list ||
 * ||  ||   || Mid term week ||
 * || Thursday || 31 Mar, 2011 || Mid term exam extend 1 day due to world cup holiday ||
 * || Monday || 4 April, 2011 || Bhutto Holiday ||
 * 11 || Thursday || 7 April, 2011 || Stack Application, infix to postfix ||
 * 12 || Friday || 8 April, 2011 || Stack Application, Postfix Evaluation ||
 * 13 || Sunday || 10 April, 2011 || Queues (Simple queue using array), circular queue ||
 * 14 || Monday || 11 April, 2011 || Queues (queue using linked list), priority queue ||
 * 15 || Thursday || 14 April, 2011 || Recursion ||
 * 16 || Monday || 18 April, 2011 || Recursion ||
 * 17 || Thursday || 21 April, 2011 || Binary search tree, creation, properties ||
 * 18 || Monday || 25 April, 2011 || binary search tree, traversal, deletion ||
 * 19 || Thursday || 28 April, 2011 || Binary tree Analysis, application of binary tree( Huffman coding) ||
 * 20 || Monday || 2 May, 2011 || Balance trees: 2-3-4 tree, 2-3 tree, B-tree and performance Analysis ||
 * 21 || Thursday || 12 May, 2011 || bubble sort, selection sort, insertion sort ||
 * 22 || Monday || 16 May, 2011 || Quick Sort, Heap sort ||
 * || Thursday ||  || Cancel ||
 * 23 || Monday || 23 May, 2011 || Hashing ||
 * 24 || Thursday || 26 May, 2011 || Merge Sort ||
 * 25 || Monday || 30 May, 2011 || Shell Sort ||
 * 26 || Monday || 30 May, 2011 || Radix Sort, Bucket Sort ||
 * 27 || Thursday || 2 Jun, 2011 || Revision ||
 * 28 || Thursday || 2 Jun, 2011 || Project discussion ||
 * 29 || Friday || 3 Jun, 2011 ||


 * S.no. || Day || Date || Topic ||
 * 1 || Monday || 14 Feb, 2011 || Introduction ||
 * 2 || Thursday || 17 Feb, 2011 || Dynamic Array ||
 * 3 || Monday || 21 Feb, 2011 ||  ||
 * 4 || Thursday || 24 Feb || Linked list create and insert method implementation ||
 * 5 || Monday || 28 Feb, 2011 || Implementation of linked list using generic types ||
 * 6 || Thursday || 3 Mar, 2011 || Doubly linked list ||
 * 7 || Monday || 7 Mar, 2011 || Circular Linked List: Solution of Josephus problem ||
 * 8 || Thursday || 10 Mar, 2011 || linear search and binary search ||
 * 9 || Monday || 14 March, 2011 || Comparison of searching algorithms ||
 * || Thursday || 17 March, 2011 || Canceled ||
 * 10 || Monday || 21 March, 2011 || use of Stack in parenthesis validation ||
 * ||  ||   || Midterm week ||
 * ||  ||   || holiday announced due to worldcup ||
 * ||  ||   || Bhutto holiday ||
 * 11 || Thursday || April 7, 2011 || midterm solution discussed ||
 * 12 || Sunday || April 10, 2011 || Stack: infix to postfix and postfix evaluation ||
 * 13 || Monday || April 11, 2011 || implementation of queues using array and linked list ||
 * 14 || Thursday || April 14, 2011 || Recursion ||
 * 15 || Monday || April 18, 2011 || binary recursion ||
 * 16 || Thursday || April 21, 2011 || binary search tree, creation using linklist ||
 * 17 || Monday || April 25, 2011 || Binary search tree using array ||
 * 18 || Thursday || April 28, 2011 || Deletion in Binary tree ||
 * 19 || Monday || May 2, 2011 || B-tree (discuss theory) ||
 * 20 || Thursday || May 12, 2011 || bubble, selection and insertion sort ||
 * 21 || Monday || May 16, 2011 || Heap data structure, min and max heap, heap sort (discuss theory) ||
 * 22 || Monday || May 23, 2011 || Hashing ||
 * 23 || Thursday || May 26, 2011 || Merge Sort ||
 * 24 || Monday || May 30, 2011 || Merge Sort ||
 * 25 || Monday || May 30, 2011 || understanding of merge sort using recursion ||
 * 26 || Thursday || Jun 2, 2011 || Quick Sort ||
 * 27 || Thursday || Jun 2, 2011 || - ||
 * 28 || Friday || Jun 3, 2011 || Lab exam ||