Exam 3 (IN-CLASS; on Nov. 29th @ 2.30 PM): OPEN NOTES. Reading List
Exam 2 (Take Home: Due on Nov. 8th) posted.
Projects 9-10 posted
Quiz 7 (Take Home) posted (Due on Nov. 15th, 11.59 PM)
—————————————————–
Lecture Slides
Lecture Code (C++)
Project Descriptions
Quizzes and Exams
Quiz, Exam and Project Schedules
Syllabus
Lecture Slides
Module 1:Asymptotic Time Complexity and Intro to Abstract Data Types
Module 2 – List ADT (Last updated: Sept. 4th)
Module 5 – Dictionary ADT: Hash tables
Module 7 – Binary Search Trees
Lecture Code (C++)
Module 2: List ADT
Code 1: Static List Implementation using Arrays
Code 2: Dynamic List Implementation using Arrays
Code 3: Singly Linked List
Code 4: Recursion and Random Number Generation
Code 5: Reversing a Singly Linked List
Code 6: Run Time Complexity Analysis
Module 3: Stack ADT
Code 1: Dynamic Array based Stack
Code 2: Doubly Linked List based Stack
Code 3: Example to Illustrate String Processing in C++
Code 4: Using Stack to Check for Parenthesis Balance
Code 5: Example to Illustrate String Tokenizing in C++
Code 6: Evaluation of an Expression in PostFix Format using Stack
Module 4: Queue ADT
Code 1: Dynamic Array based Queue
Code 2: Doubly Linked List based Queue
Module 5: Dictionary ADT: Hashtable
Code 1: Singly Linked List-based Implementation of Hashtable
Code 2: Use of Hashtable to Determine whether two Integer Sequences are Permutations of each other
Code 3: Use of Hashtable to Print the Unique Elements in an Array
Module 6: Binary Trees
Code 1: To Read Text from a File
Code 2: Implementation of Binary Trees
Code 3: Use of Breadth First Search to Determine the Depth of the Nodes in a Binary Tree
Code 4: Preorder Traversal of a Binary Tree
Module 7: Binary Search Trees
Code 1: Construction of a Binary Search Tree (Input: Sorted Array of Integers)
Code 2: Selection Sort
Code 3: Construction of a Binary Search Tree (Input: Randomly Generated Array of Integers)
Code 4: Searching for a Key in a Binary Search Tree
Lecture Code (Java)
Module 2: List ADT
Code 1: Static List Implementation using Arrays
Code 2: Dynamic List Implementation using Arrays
Code 3: Singly Linked List
Code 4: Recursion and Random Number Generation
Code 5: Reversing a Singly Linked List
Module 3: Stack ADT
Code 1: Dynamic Array based Stack
Code 2: Doubly Linked List based Stack
Code 3: Example to Illustrate String Processing in Java
Code 4: Using Stack to Check for Parenthesis Balance
Code 5: Example to Illustrate String Tokenizing in Java
Code 6: Evaluation of an Expression in PostFix Format using Stack
Module 4: Queue ADT
Code 1: Dynamic Array based Queue
Code 2: Doubly Linked List based Queue
Module 5: Dictionary ADT: Hashtable
Code 1: Singly Linked List-based Implementation of Hashtable
Code 2: Use of Hashtable to Determine whether two Integer Sequences are Permutations of each other
Code 3: Use of Hashtable to Print the Unique Elements in an Array
Module 6: Binary Trees
Code 1: To Read Text from a File
Code 2: Implementation of Binary Trees
Code 3: Use of Breadth First Search to Determine the Depth of the Nodes in a Binary Tree
Code 4: Preorder Traversal of a Binary Tree
Module 7: Binary Search Trees
Code 1: Construction of a Binary Search Tree (Input: Sorted Array of Integers)
Code 2: Selection Sort
Code 3: Construction of a Binary Search Tree (Input: Randomly Generated Array of Integers)
Code 4: Searching for a Key in a Binary Search Tree
Project Descriptions
Project 1 (Due on Sep. 11th, 11.59 PM): Algorithm Design and Time Complexity Analysis for Operations on the Dynamic Array Implementation of the List ADT
See Canvas for the code
Project 2 (Due on Sep. 18th, 11.59 PM): Implementation of the Merge List Function (for Merger of Unique Elements) for Singly Linked List and the Time Complexity Analysis
See Canvas for the code
Project 3 (Due on Sep. 25th, 11.59 PM): Implementation of the Stack ADT using Singly Linked List and the Time Complexity Analysis of the Push and Pop Operations
See Canvas for the code
Project 4 (Due on Oct. 8th, 11.59 PM): Design and Implementation of an Algorithm to Find the Next Greater Element of the Elements in an Array in Θ(n) Time
See Canvas for the code and a help video
Project 5 (Due on Oct. 9th, 11.59 PM): Stack-based Implementation of Queue
See Canvas for the code
Project 6 (Due on Oct. 16th, 11.59 PM): Hash table Tradeoff Analysis: Average Insertion Time vs. Load Imbalance Index
See Canvas for the code
Project 7 (Due on Oct. 23rd, 11.59 PM): Binary Tree: Checking for Complete Binary Tree and Binary Search Tree
See Canvas for the code
Project 8 (Due on Oct. 30th, 11.59 PM): Project 8: Binary Search Tree: Lowest Common Ancestor Node
See Canvas for the code
Project 9 (Due on Nov. 6th, 11.59 PM): Project 9: Binary Tree: Design and Implementation of an Iterative Algorithm (using the Stack ADT) to do a Preorder Traversal of the Vertices
See Canvas for the code
Project 10 (Due on Nov. 13th, 11.59 PM): Project 10: Degree Distribution of the Vertices in a Graph
See Canvas for the code
Quizzes and Exams
Quiz 2 (Due on Sep. 27th, 11.59 PM): Dynamic Array Implementation of the List ADT: Doubling the List Size vs. Incrementing the List Size by One: Memory and Run Time Analysis
See Canvas for the code
Exam-1 (Due on Oct. 4th, 11.59 PM)
See Canvas for the code
Quiz 3 (Due on Oct. 11th, 11.59 PM): Determination of Maximum Depth of Nested Parentheses in an Expression and Evaluation of an Expression in Pre-fix Format
See Canvas for the code
Quiz 4 (Due on Oct. 18th, 11.59 PM): Height-Balanced Binary Trees
See Canvas for the code
Quiz 5 (Due on Oct. 25th, 11.59 PM): Binary Search Tree: Average Number of Comparisons for a Successful Search
See Canvas for the code
Exam-2 (Due on Nov. 8th, 2.30 PM hardcopy to be submitted in-class)
Quiz 7 (Due on Nov. 15th, 11.59 PM): Quiz 7: Breadth First Search on a Graph: Test for Bipartivity
See Canvas for the code