Skip to main content

CSC 228 Data Structures and Algorithms, Spring 2020

Assignments 12 (04/21) and 13 (04/23) are posted. Check Canvas

Exam 4 (Due 04/28, by 11.59 PM) is posted. Check Canvas

—————————————————–

Syllabus

TA Information

Lecture Slides

Lecture Code (C++)

Assignments

Exams

Assignment and Exam Schedules

 

Syllabus

CSC228 Syllabus, Spring 2020

 

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 2 – List ADT

Module 3 – Stack ADT

Module 4 – Queue ADT

Module 5 – Dictionary ADT: Hash tables

Module 6 – Binary Trees

Module 7: Binary Search Trees

Module 8 – Heap

Module 9 – Graphs

 

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

Code 4: Use of Hashtable to Determine the Union (with unique elements) of Two Linked Lists (that may have duplicates)

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

Code 4: Use of Hashtable to Determine the Union (with unique elements) of Two Linked Lists (that may have duplicates)

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 Format. 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

 

Assignment 8 (Programming): Height-Balanced Binary Trees, Due on March 31st, 11.59 PM

Check Canvas for the code

 

Assignment 9 (Programming): Binary Tree: Design and Implementation of an Iterative Algorithm (using the Stack ADT) to do a Preorder Traversal of the Vertices, Due on April 2nd, 11.59 PM

Check Canvas for the code

 

Assignment 10 (Programming): Determining the Average Number of Comparisons for a Successful Search and an Unsuccessful Search in a Binary Search Tree based on its Structure Only, Due on April 7th, 11.59 PM

Check Canvas for the code

 

Assignment 11 (Programming): Setting the Data for the Nodes in a Binary Tree to Satisfy the Property of a Binary Search Tree without Changing the Structure of the Binary Tree, Due on April 9th, 11.59 PM

Check Canvas for the code

 

Assignment 12 (Programming): Checking whether a Binary Tree is a Max Heap, Due on April 21st, 11.59 PM

Check Canvas for the code

 

Assignment 13 (Programming): Performance Comparison of the Max heap vs. Min heap-based Heap Sort Algorithm to Sort an Array of Integers in the Increasing Order of the Values, Due on April 23rd, 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

 

Exam 2 (Take Home). Due on March 26th, 11.59 PM

Check Canvas for the code

 

Exam 3 (Take Home). Due on April 16th, 11.59 PM

Submit in Canvas

 

Exam 4 (Take Home). Due on April 28th, 11.59 PM

Submit in Canvas

 

Assignment and Exam Schedules