Overview
This is a undergraduate level course in data structures. The course in intended for developing foundations in data structures with a focus on solving problems and building core data structures. The broader goal is to understand how data strucres are leveraged in problems and tasks that have a relevance to realistic situations. Throughout the course, large emphasis will be placed on tying data structure building techniques, their underlying concept and mathematical constructs to specific applications through hands-on experience.
Administrative details
If class is full or you are a non-CS major, please register as a waitlist student or UHCS undergraduate academic advisor to be added to the waitlist. Depending upon several admin factors if course enrollment is increased, students will be enrolled according to the initial wait list order.
Office hours
Instructor office hours: M 2.30 - 3.30 PM, MS Teams (please schedule and wait in queue) or by Appointment (please schedule at least 4 days in advance)
TA office hours: Sadat Shahriar (sshahria@CougarNet.UH.EDU) Thu 3-5 PM, Fri 3-4 PM; Navid Ayoobi (nayoobi@cougarnet.uh.edu) Wed 9-11 AM
Prerequisites
The course requires background in mathematics and sufficient programming skills. It expects the student has completed COSC 1430 with at least a C grade. Sufficient programming experience is required.
Reading Materials
Textbook:
Goodrich, M. T., Tamassia, R., Goldwasser, M. H. Data Structures and Algorithms in C++, Second Edition.
Required Reference Material:
Course materials (contains all Lecture notes, slides and a full length sample exam)
Syllabus
Competitive Programming Handbook for Data Structures (additional textbook)
Math Background for Data Structures [Chapters 1, 5, 6, 9]
Grading
Component | Contribution | Due date |
HW 1 | 15% | 9/11 |
HW 2 | 15% | 9/28 |
HW 3 | 15% | 10/16 |
HW 4 | 15% | 11/3 |
HW 5 | 15% | 11/24 |
EC Project - Building a Search Engine | 30% | 12/2 |
Exams 1, 2 | 15%, 15% | 10/18, TBA |
Classwork/Lab | 10% | - |
Attendance | 5% | - |
Schedule of topics
Topic(s) | Resources: Readings, Slides, Lecture notes, Papers, etc. |
Introduction
Course administrivia, semester plan, course goals C++ Primer Review of OOP Design Principles |
Required Readings: Chapter 1, 2
|
Fundamental Data Sturctures
The need for data strucutres Arrays Singly, Circularly, and Doubly Linked Lists |
Required Readings: Chapter 3 (3.1, 3.2, 3.3, 3.4)
|
Algorithm Analysis
Basic Concepts of Analysis Functional Growth Rates Asymptotic Analysis Comparitive Analysis |
Required Readings: Chapter 4 (4.1, 4.2, 4.3) |
Recursion
Basic Concepts and Examples of Recursion Analyzing and Designing Recursive Algorithms |
Required Readings: Chapter 5 (5.1, 5.2, 5.3, 5.4)
|
Stacks, Queues
Basic Concepts and Examples Analyzing and Designing Stacks and Queues |
Required Readings: Chapter 6 (6.1, 6.2)
|
Trees
General Trees Binary Trees Tree Traverals Binary Search Trees |
Required Readings: Chapter 8 (8.1, 8.2, 8.3), Chapter 11 (11.1)
|
Priority Queues
Priority Queues Heaps and Sorting |
Required Readings: Chapter 9 (9.1, 9.2, 9.3, 9.4)
|
Maps and Hash Tables
Maps Hash and Compression Functions |
Required Readings: Chapter 10 (10.1, 10.2)
|
Sorting and Selection
Basic Concepts behind Comparative Sorting Merge and Quick Sort |
Required Readings: Chapter 12 (12.1, 12.2, 12.3, 12.4)
|
Graph Algorithms
Basic Concepts and Data Structures for Graphs Traversals and Search Shortest Paths and Spanning Trees |
Required Readings: Chapter 14 (14.1, 14.2, 14.3, 14.6, 14.7)
|