- Future Students
- Academic Progams
- Undergraduate Program
- Current Semester CS Courses
- New Course Offerings
- Upcoming Semesters
- Previous Semesters
- Canonical Syllabi
- Course Access & Request Policy
- Academic Integrity Policy
- Grad Student Registration
- Variable Title Courses
- Study Abroad
- Professional Practice
- Co-Op Professional Practice
- Non-Co-Op Professional Practice
- ISS Application Process for International Students (CPT, OPT, RCL, Program Extension, COEL)
- Pass/Not Pass Spring 2020
CS 251: Data Structures
Revised June 13, 2016
Prerequisite:
CS 18200 (Foundations of Computer Science)
CS 24000 (Programming in C)
Detailed Syllabus:
- Running time analysis of algorithms and their implementations
- Review of proof methods and mathematics concepts
- Mathematical induction and recursion
- Experimental running time analysis
- Benchmarking, counting instructions
- Importance of constants
- Asymptotic running time analysis
- Big-O and Theta notations
- Best, expected, worst case running times.
- Comparison of log n vs. constants, linear vs. quadratic vs. exponential running times.
- Review of basic data structures
- Abstract data types (ADTs) and common operations
- 1- and 2-dimensional arrays; dynamic arrays
- Linked lists
- Stacks, queues
- Comparison of different implementations of stacks and queues
- Abstract data types (ADTs) and common operations
- Trees
- Trees
- Definitions, ADTs
- Pointer-based implementations
- Different traversals and tree explorations
- Binary trees
- Properties of binary trees, ADTs
- Traversals
- Representing and manipulating arithmetic expressions
- Trees
- Searching and Sorting
- Binary search
- Basic sorting algorithms: Bubble sort, Selection sort, Insertion sort
- Sorting Algorithms with a good performance: Mergesort, Qucksort
- Sorting algorithms not based on comparisons: Bucket and Counting sort, Radix sort
- Heaps
- Definition, properties, ADTs
- Array implementation of heaps
- Priority queue operations: Insertion and min/max extraction
- Building a heap (insertions versus bottom-up heap construction)
- Heapsort
- Binary search trees
- Binary search trees
- Properties, performance, ADTs
- Basic operations: search, insert, delete
- Balanced search trees
- Properties, performance, ADTs
- Red-black trees, 2-3 trees
- Keeping a search tree balanced under insertions and deletions
- Binary search trees
- Hashing
- ADTs and implementations
- Hash functions
- Collision handling schemas (open hashing, linear probing, double hashing)
- Impact of hash table size and load factors on performance
- Other data structures
- Data structures for Union-Find operations
- Spatial data structures and spatial queries
- Strings
- Tries
- Representations, operations
- Variations: ternary and suffix tries
- Data compression, generating Huffman codes
- Substring searches and other operations on string
- Simple algorithms
- Boyer-Moore, Knuth-Morris-Pratt
- Tries
- Introduction to graphs
- Definitions, terminology, properties, ADTs
- Implementations: Edge list, Adjacency list, Adjacency matrix
- Undirected graphs
- Depth-first search
- Breadth-first search
- Finding connected components
- Directed graphs
- Depth- and breadth-first search revisited
- Topological sorting and its applications
- Strongly-connected components (optional)
- Selected graph algorithms
- Shortest paths (Dijkstra and Bellman Ford)
- Minimum-cost spanning trees (Prim and Kruskal)
Last Updated: Feb 25, 2019 10:13 AM