Dr. Zhijun Wang, Professor of Computer Science
♦   Welcome to CIS 321 — Data and File Structures   ♦
Weeks Topics | Resources | Suggested Readings | Special Days | Important Dates HAs | Projects | Exams
#1
1/8-1/12

1/08 Mon Add/Drop and Late Registration via RAIL or at Ikenberry Hall, 9:00 am-4:00 pm.

1/12 Fri Last Day to Add/Drop or Late Register via RAIL or at Ikenberry Hall, 9:00 am-4:00 pm.

Assignment 1

Example Solution. There are many ways to program this assignment.
#2
1/15-1/19
  • Classes and objects/instances.
  • Abstract classes, interfaces, and inheritance in Java.
  • Dynamic binding and polymorphism in Java.
  • Static members - attributes and methods.
  • String class and methods.
  • StringTokenizer, StringBuffer, and Character classes.
  • In-class exercise - Integer operations.
  • Readings - Related chapters of any Java textbook and/or chapter 1.

1/15 Mon Martin Luther King, Jr. Day – Holiday.

1/19 Fri Last Day for Instructor-Approved Late Adds via RAIL.

Assignment 2

Example Solution
#3
1/22-1/26
  • Array lists or vectors and their advantages. Insertion, deletion, update, search, and traversal operations.
  • ArrayList provides convenience with dynamic sizing and storing different types of objects.
  • Java ArrayList (or "deprecated" Vector) class. Operations/methods.
  • Iterators and ListIterator interface (especially next, previous, add, set, and remove methods).
  • Introduction to Java Collection Framework.
  • Generics and generic ArrayList.
  • "Sort the List" exercise. Example solution.
  • Implementation of an Integer-based ArrayList. Example solution.
  • Readings - Chapter 2.
#4
1/29-2/2
  • Efficiencies of operations/running times.
  • A brief introduction to algorithms and algorithm efficiency. Big O notation.
  • Single-linked, double-linked, circular lists, and their implementations.
  • Java LinkedList class.
  • Comparison of ArrayList and LinkedList.
  • Implementation of a String-based linked list. Example answer.
  • Readings - Chapter 2.

Exam 1 on Wednesday Morning. Covering weeks 1-3.

#5
2/5-2/9
  • Stacks: Applications, concepts, and basic operations: push, pop, and peek.
  • Java Stack class. Push, pop, peek, empty, and search methods.
  • Example stack applications - Finding palindromes and pairing parentheses.
  • Stack implementation.
    1. Array based stack.
    2. Linked (Array) list based stack.
    3. A linked stack implementation → Assignment 3.
  • Readings - Chapter 3.
Assignment 3

Example Solution
#6
2/12-2/16
  • Queues: Applications, concepts, and basic operations: enqueue and dequeue.
  • Java Queue interface.
  • Implementation methods of queues - array, list, or linked structure.
    1. Implementing a queue class using a LinkedList and a linked structure.
    2. Example solution - ListQueue.
    3. Example solution - LinkedQueue.
  • Concept of priority queue. Implementation - optional.
  • Readings - Chapter 4.
#7
2/19-2/23
  • Recursion review and examples.
  • Recursion exercises on lists. Sample solutions - ArrayList. LinkedList.
  • Concepts of trees. Nonlinear structure. One predecessor and multiple successors. Applications of tree structures.
  • Node, root, parent, child, ancestor, descendant, sibling, height, and level.
  • Binary trees. Full, complete, and perfect binary trees. Height of a perfect binary tree.
  • Readings - Chapters 5, 6.

Mid-term Exam Week.

2/23 Fri Last Day to Apply for August and December 2018 Graduation (Registrar’s Office).

Exam 2 on Wednesday Morning. Covering weeks 4-6.

#8
2/26-3/2
  • Binary search and binary search trees. Recursive definition.
  • Binary search using a sorted array or list.
  • Binary tree traversals: pre-order, in-order, and post-order.
  • Case study - Binary expression trees.
  • Exercises on traversal methods and expression trees.
  • Readings - Chapters 6.
Assignment 4 - TBP
#9
3/5-3/9
  • Java TreeSet class.
  • Implementation of generic binary trees. Example solution.
  • Heaps. Definition, basic operations with running times, and applications.
  • Readings - Chapters 6.

3/9 Fri Last Day to Withdraw from a Full Semester Class — See Advisor by Noon.

#10
3/12-3/16

Spring Break

#11
3/19-3/23
  • Implementation of an integer-based heap.
  • Implementing heap sort. Example solution.
  • “Comparable” interface and “compareTo” method.
  • Implementation of a generic heap.
  • Java PriorityQueue class.
  • Implementation of priority queues using heaps.
  • Readings - Chapters 6.

3/19 Mon First Day of Summer 2018 RAIL Registration for Continuing Students, 9:00 am-4:00 pm.

3/21 Wed First Day of Academic Advisement for Continuing Students for Fall 2018.

#12
3/26-3/30
  • Sets and Maps. HashSet and HashMap classes.
  • Readings - Chapters 7.

Exam 3 on Wednesday Morning. Covering weeks 7-11.

#13
4/2-4/6
  • Hash tables and Hashtable class.
  • Implement a hash table using open addressing and separate chaining.
  • Hash table implementation programs.
  • Comparison-based sorting methods.
  • Selection sort, bubble sort, and insertion sort.
  • Readings - Chapters 7, 8.

4/2 Mon First Day of Fall 2018 RAIL Registration for Continuing Students, 9:00 am-4:00 pm.

4/4 Wed Last Day of Academic Advisement for Continuing Students for Fall 2018.

#14
4/9-4/13
  • Implementation of quadratic sorting methods with nested loops.
  • Heap sort, merge sort, and quick sort.
  • Recursive definitions of merge sort and quick sort.
  • Implementation of quick sort.
  • Java Arrays.sort method.
  • Readings - Chapters 8.
#15
4/16-4/20
  • Basic graph concepts. Definition and representation of graphs.
  • Weighted and directed graphs.
  • Implementation of graphs. Adjacency matrix and lists.
  • Depth-first traversal and breadth-first traversal. Depth-first and breath-first traversal trees.
  • Algorithms for weighted graphs. Minimum spanning trees. Kruskal’s and Prim’s algorithms.
  • Final exam review.
  • Readings - Chapters 10.

4/20 Fri McMurran Scholars Convocation; Last Day of Classes; Last Day for Complete Withdrawal from Semester.

#16
4/23-4/27

Final Exam Week.

Final Exam -
12 – 2 pm,
4/25, Wednesday.