Electrical Engineering and Computer Science

EECS 2510 - Nonlinear Data Structures Course Syllabus

Credits/Contact Hours
4 credit hours & 3 50-minute lecture contact hours per week.

Textbook
The required textbook for this course is a web-based interactive zyBook

Other Related textbooks: 

  • Anany Levitin. Introduction to the Design and Analysis of Algorithms, 3rd edition, Pearson, 2012. ISBN 13: 978-0137541133.  
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,. Introduction to algorithms, 3rd edition, MIT Press, 2009. ISBN-13: 978-0262033848 
  • Pat Morin, Open Data Structures: An Introduction (C++ edition). Freely available in HTML and PDF formats at https://opendatastructures.org/. This textbook is open source and comes with C++ source code (beta version). 


Course Information
The data structures introduced in EECS 2500 are extended to include trees (binary, balanced, and n-ary), graphs, and advanced sorting techniques. In addition, the C++ language is used as the main vehicle and is introduced in the course. Students are expected to have a strong background in Java prior to this course.
Prerequisites:

Undergraduate level EECS 2500 (Linear Data Structures): Minimum grade of C- 

Undergraduate level EECS 2520 (Discrete Structures): Maybe taken concurrently – with a minimum grade of C-

Required course for CSE program

Specific Goals - Student Learning Objectives (SLOs)

Upon successful completion of this course, the student will be able to: 

  1. Use an IDE. 
  2. Learn how to construct and apply a binary (and n-ary) tree to the storage, organization, and lookup of data using C++. 
  3. Learn how to implement special cases of binary trees, such as parse trees, height-balanced trees, and B-trees to solve problems. 
  4. Learn how to apply O(nlogn) and O(n) sorting methods to data. 
  5. Learn the fundamentals of input and output using streams in C++. 
  6. Learn how to use pointers in C++ effectively. 
  7. Learn how to solve a limited class of recurrence relations. 
  8. Learn how to apply graphs and their related algorithms including single source, all-pairs shortest paths, and minimum spanning tree algorithms to solve practical problems. 
  9. Learn how to implement heaps and its use in priority queues. 

Topics

  1. Data structures 
  2. Introduction to algorithms 
  3. Relation between data structures and algorithms 
  4. Abstract data types (ADTs) 
  5. Algorithm efficiency 
  6. Searching and algorithms 
  7. Binary search 
  8. Growth of functions and complexity 
  9. O notation 
  10. Algorithm analysis 
  11. Analyzing the time complexity of recursive algorithms 
  12. Sorting algorithms 
  13. Bucket sort 
  14. Radix sort 
  15. Overview of fast sorting algorithms 
  16. List abstract data type (ADT) 
  17. Linked lists 
  18. Hash tables 
  19. Common hash functions 
  20. Direct hashing 
  21. Binary trees 
  22. Application of trees 
  23. Binary search trees 
  24. BST search algorithm  
  25. BST insert algorithm 
  26. BST remove algorithm 
  27. BST height and insertion order 
  28. BST parent node pointers 
  29. BST: recursion 
  30. AVL: A balanced tree 
  31. Red-black tree: A balanced tree 
  32. Heaps and Heap sort 
  33. Priority queue abstract data type (ADT) 
  34. Treaps 
  35. Graphs: Introduction 
  36. Applications of graphs 
  37. Graph representations: Adjacency lists 
  38. Graph representations: Adjacency matrices 
  39. Directed graphs 
  40. Weighted graphs 
  41. Graphs: Breadth-first search 
  42. Graphs: Depth-first search 
  43. Algorithm: Dijkstra’s shortest path 
  44. Algorithm: Bellman-Ford’s shortest path 
  45. Topological sort 
  46. Minimum spanning tree (MST) 
  47. Algorithm: Kruskal’s MST 
  48. Algorithm: Prim’s MST 
  49. All pairs shortest path 
  50. Algorithm: Floyd-Warshall’s all-pair shortest path 
  51. Huffman compression 
  52. Heuristics 
  53. Greedy algorithms 
  54. Dynamic programming 
  55. B-trees 
  56. 2-3-4 tree search algorithm 
  57. 2-3-4 tree insert algorithm 
  58. 2-3-4 tree rotations and fusion 
  59. 2-3-4 tree removal 
Last Updated: 6/14/23