Skip to main content

CSC 228 Data Structures and Algorithms (12 PM class), Spring 2018

Exam 3 – Take Home Part (Due on April 25th, Wednesday, at 9 AM, submit a hardcopy in-class)

Exam 3 – Reading List for In-class Part

Exam 3 (In-class Part) will be on April 25th, Wednesday, from 9 AM to 10.50 AM; OPEN notes

Projects 7-10 posted. Check in Canvas

Quiz 7-8 posted. All Take Home. Check in Canvas.

Exam 2 – Reading List

—————————————————-

Syllabus
Lecture Slides
Lecture Code (C++)

Project Descriptions
Quizzes and Exams
Quiz, Exam and Project Schedules

 

Syllabus

CSC228 Syllabus (12 PM class), Spring 2018

Lecture Slides

Module 1:Asymptotic Time Complexity and Intro to Abstract Data Types

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

Project Descriptions

Project 1 (Due on Feb. 7th, 12 PM): Algorithm Design and Time Complexity Analysis for Operations on the Dynamic Array Implementation of the List ADT
   
cpp code:In a Word Document
Also, check Canvas for the code

Project 2 (Due on Feb. 14th, 12 PM): Implementation of the Merge List Function (for Merger of Unique Elements) for Singly Linked List and the Time Complexity Analysis
   
cpp code:In a Word Document
Also, check Canvas for the code

Project 3 (Due on Feb. 21st, 12 PM): Implementation of the Stack ADT using Singly Linked List and the Time Complexity Analysis of the Push and Pop Operations
Check in Canvas for the code

Project 4 (Due on Feb. 28th, 12 PM): Design and Implementation of an Algorithm to Find the Next Greater Element of the Elements in an Array in Θ(n) Time
Check in Canvas for the code

Project 5 (Due on March 7th, 11.59 PM): Stack-based Implementation of Queue
Check in Canvas for the code

Project 6 (Due on March 21st, 11.59 PM): Binary Tree: Checking for Complete Binary Tree and Binary Search Tree
Check in Canvas for the code

Project 7 (Due on March 28th, 11.59 PM): Binary Tree: Design and Implementation of an Iterative Algorithm (using the Stack ADT) to do a Preorder Traversal of the Vertices
Check in Canvas for the code and text files

Project 8 (Due on April 4th, 11.59 PM): Binary Search Tree: Average Number of Comparisons for a Successful Search
Check in Canvas for the code and text files

Project 9 (Due on April 11th, 11.59 PM): Checking whether a Binary Tree is a Max Heap
Check in Canvas for the code and text files

Project 10 (Due on April 18th, 11.59 PM): Degree Distribution of the Vertices in a Graph
Check in Canvas for the code and text files

Quizzes and Exams

Exam 3 – Take Home Part (Due on April 25th, Wednesday, at 9 AM, submit a hardcopy in-class)

Quiz 2: Take Home (Due on Feb. 9th, 12 PM): Dynamic Array Implementation of the List ADT: Doubling the List Size vs. Incrementing the List Size by One: Memory and Run Time Analysis
   
cpp code:In a Word Document

The code is also available in Canvas

Quiz 3: Take Home (Due on Feb. 16th, 12 PM): Linked List vs. Dynamic Array Implementation of the List ADT: Impact of Insertion Index, Data Size and List Size: Memory and Run Time Analysis
   
cpp code:In a Word Document

The code is also available in Canvas

Exam 1: Take Home (Due on Feb. 23rd, 11.59 PM): Covers Modules 2 and 3     Check Canvas for Code

Exam 1: Take Home (Due on Feb. 23rd, 11.59 PM): Covers Modules 2 and 3     Check Canvas for Code

Quiz 4: Take Home (Due on March 2nd, 11.59 PM): Determination of Maximum Depth of Nested Parentheses in an Expression and Evaluation of an Expression in Pre-fix Format     Check Canvas for Code

Quiz 5: Take Home (Due on March 9th, 11.59 PM): Hash table Tradeoff Analysis: Average Insertion Time vs. Load Imbalance Index     Check Canvas for Code

Quiz 6: Take Home (Due on March 23rd, 11.59 PM): Height-Balanced Binary Trees     Check Canvas for Code

Quiz 7: Take Home (Due on April 13th, 11.59 PM): Binary Search Tree: Lowest Common Ancestor Node     Check Canvas for Code

Quiz 8: Take Home (Due on April 20th, 11.59 PM): Breadth First Search on a Graph: Test for Bipartivity     Check Canvas for Code

 

 

 

Quiz, Exam and Project Schedules