Required:

Text:

The required text is:

Data Structures Outside In with Java, 1st Edition.
Sesh Venugopal
Prentice-Hall, 2006. ISBN 978-0131986190.

The programs in the textbook are in dsoi_progs_src.zip. The HTML documentation for all the programs is in dsoi_progs_doc.zip. These are attached at the end of the syllabus.

Pre-requisite Reading

You will be expected to hit the ground running with all the topics you learned in 111 - strings, arrays, searching, sorting, recursion, Big O, objects. In order to review objects and Big O in particular, you are urged to read the following from the text:

Chapter 1: Object-Oriented Programming in Java - Sections 1.1 and 1.2

Chapter 3: Efficiency of Algorithms - Entire chapter, all sections

Eclipse

You will be using Eclipse for all assignments in this class. If you don't know how to use Eclipse, read the "Eclipse" page in this site - see the link in the navigation bar on the left.

Part I: Linear Structures

In this first part, you will study linked lists (and a couple of variations of the basic linked lists), exceptions, array lists, stacks and queues. Stacks and queues are specialized structures that can be built out of either arrays or linked lists, or "smart arrays", which are arrays that grow automatically on demand.

You will learn how to analyze the time and space efficiency of the stack and queue, and compare them across various implementations.

We will discuss the following specific topics. Each topic is listed with references to reading in the textbook:

  1. Linked Lists
  2. Exceptions [1.5]
  3. Generic Types
  4. ArrayList
  5. Complexity Order/Running Time and Space
  6. Stack
  7. Queue

Part II: Search Structures

Starting with arrays and linked lists, you will learn increasingly specialized and sophisticated structures that are tailored for efficient searching. The emphasis is on understanding the connection between the design of the structure and the speed of search.

When speaking of search structures, we are concerned not only with searching, but also with adding (inserting) and removing (deleting) data from the structure. So, the speed of inserts and deletes becomes important as well.

  1. Array and Linked List: Sequential Search
  2. Sorted Array: Binary Search
  3. Binary Search Tree (BST)
  4. Height-balanced BST: AVL Tree
  5. Hash table

Part III: Binary Tree and Applications

 

  1. Traverals
  2. Huffman Coding
  3. Heap

Part IV: Graphs

  1. Types of Graphs and Representation
  2. Graph Traversals
  3. Graph algorithms

Part V: Sorting

  1. Insertion sort [Sec 13.1, skip average analysis)]
  2. Quicksort [Sec 13.2.1]
  3. Mergesort [Sec 13.2.2]
  4. Heap sort [Sec 13.3]