Data Structures and Algorithms I Syllabus
Data Structures and Algorithms I Syllabus
CMP 338: Data Structures and Algorithms I. 4 hours, 4 credits. Abstract characterizations as well as the design and
implementation of data structures such as arrays, stacks, queues, linked lists, binary search trees, heaps, and graphs
along with algorithms that make use of such structures including algorithms for sorting, searching, and memory
management, will be studied. Algorithms will be analyzed for their asymptotic behavior in terms of time complexity and
space requirements will be considered as well. Implementation issues will be considered and students will write
programs that embody these data structures and algorithms.
Prerequisites:
CMP 326 – In this course we will do extensive programming in Java. It is assumed that all students are capable of
reading and writing object oriented Java code.
CMP 232 – In this course we will demonstrate correctness and efficiency of many of the algorithms presented via
mathematical arguments and proofs. It is assumed that students are capable of following the logic of
such when presented.
Instructor: Your instructor will provide contact information, office hours and meeting times for your section.
Grading Policy
Expectations: Students are expected to learn both the material covered in class and from the textbook and any other
assigned reading. Students must write readable and complete programs that execute correctly. Completing
homework is part of the learning experience. Students should review material from prior courses as needed using old
notes and textbooks.
Homework: In addition to explicitly assigned problems, students should implement each data structure and algorithm
that is covered in class.
Exams: There will be a midterm and a final exam.
Grades: The precise grading policy for your section will be determined by your instructor.
Course Objectives
At the end of the course students should:
Recursion
Topics:
Abstract Data Types (ADTs)
Stacks
The Stack ADT
Application: Evaluation of Arithmetic Expressions
Array Implementations: Fixed size and resizable.
Linked List Implementation
Comparisons of efficiency for Array and Linked List implementations under various scenarios
Queues
The Queue ADT
Array Implementations: Fixed size and resizable and their shortcomings
Circular Array Implementation
Linked List Implementation
Linked Lists
A simple List ADT
Implementing a List
Implementation Issues
The use of dummy nodes
Heaps
Definitions of Max-Heaps and Min-Heaps
Implementing a Heap
Using a Heap to Implement Heapsort
Graphs
Graph ADT and Definitions
Data Structures and Implementation issues for Graphs
Graph Traversal: Breadth First and Depth First Traversal
Greedy Algorithms
Shortest Path: Dijkstra’s Algorithm
For each algorithm, verification of its correctness and analysis of its efficiency will be considered.