Taught: Spring 2008, 2009, 2010, Fall 2010
We start this course by reinforcing the basics of Java programming (classes, types, objects, instances, variables and methods). Some laboratory sessions (containing exercises and quizzes) are conducted to apply these concepts. Object oriented designs such as inheritance, polymorphism and exception are covered in chapter 2. Chapter 3 containing arrays, linked lists and recursion are investigated thoroughly. We explore some analysis tools such as functions and complexity operations including as “Big-Oh” and “Big-Omega” that are necessary to study the asymptotic behavior of an algorithm in chapter 4. Stacks and queues data structures are introduced in chapter 5. We present the concept of tree for hierarchical storage of elements in chapter 7. Procedures for searching trees are explored in chapter 10. We show that storing and searching entries in a dictionary are made easy via this chapter. Sorting algorithms such as “Merge-Sort”, “Quick-Sort”, and their comparison are introduced in chapter 11. Finally, we finish this course by covering the concept of graphs laid in chapter 13. Abstract data structures for graphs, graph traversals, shortest path and minimum spanning trees are parts of this last chapter.
M. T. Goodrich, R. Tamassia, Data Structures and Algorithms in Java, 4th Edition, John Wiley and Sons, © 2005