ÒùÆÞÉç

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Ìý