**Assignments 4 (02/25), 5 (02/27), 6 (03/03) and 7 (03/05) are posted. Check Canvas**

**Exam 1 (Due 02/20) is posted. Check Canvas**

**-----------------------------------------------------**

** **

###
**Syllabus**

###
**TA Information**

**Amanuel Gebre: Mondays, Fridays: 10 AM to 3 PM; Wednesdays: 11 AM to 3 PM**

**Office:** John A. Peoples Building, Room 218

**E-mail:** J00801049@students.jsums.edu** **

###
**Lecture Slides**

**Module 1:Asymptotic Time Complexity and Intro to Abstract Data Types, C++ Code Review**

**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

###
**Assignments**

**Assignment 1 (Programming): Dynamic Array Implementation of the List ADT: Doubling the List Size vs. Incrementing the List Size by One: Memory and Run Time Analysis. Due on Feb. 6th, 11.59 PM**

Check Canvas for the code

**Assignment 2 (Programming): Design and Implementation of a Sorted List ADT. Due on Feb. 11th, 11.59 PM**

Check Canvas for the code

**Assignment 3 (Programming): Design and Implementation of a Θ(n) Algorithm to Delete all the Occurrences of an Element in a List ADT. Due on Feb. 13th, 11.59 PM**

Check Canvas for the code

**Assignment 4 (Programming): Maximum Depth of Nested Parentheses in an Expression . Due on Feb. 25th, 11.59 PM**

Check Canvas for the code

**Assignment 5 (Programming): Evaluation of an Expression in Prefix Forma**t**. **Due on Feb. 27th, 11.59 PM

Check Canvas for the code

**Assignment 6 (Programming): Implementation of the Queue ADT using a Stack Object and Performance Comparison of the EnqueueCostly and the DequeueCostly Approaches . Due on March 3rd, 11.59 PM**

Check Canvas for the code

**Assignment 7 (Programming): Using a Hashtable to Determine the Common Elements in all the Lists . Due on March 5th, 11.59 PM**

Check Canvas for the code

###
**Exams**

**Exam 1 (Take Home). Due on Feb. 20th, 11.59 PM**

Check Canvas for the code