Programming and Problem Solving II
Revised: August, 2018
A course on data structures and object-oriented programming. Object-oriented concepts
covered will include: exceptions, inheritance, encapsulation, composition, and interfaces.
Data structures covered will include lists, queues, stacks, binary trees, and binary
search trees. Algorithms considered will include traversing, iterating, inserting,
removing, and searching. Recursion will be emphasized. Big-O notation will be introduced.
Frank M. Carrano and Timothy N. Henry, Data Structures and Abstractions with Java , Fourth Edition, Pearson, 2015.
Grading procedures and factors influencing course grade are left to the discretion
of individual instructors, subject to general university policy.
Attendance policy is left to the discretion of individual instructors, subject to
general university policy.
- Brief Java Review
Several key Java concepts will be re-introduced within the framework of a brief review
of CS 150.
- Inheritance, Interfaces and Related Topics
Discussion of Java inheritance, method overloading/overriding, class hierarchies,
generic types, dynamic and static typed variables, exceptions, polymorphism, abstract
classes, Java Interfaces.
- ADTs and Related Topics
The List Abstract Data Type (ADT) and its implementation using array-based data and
linked-based data structures; iterators as objects used to traverse collections of
- Recursion and Algorithm Efficiency
A discussion of recursive algorithms and how they compare to iterative algorithms.
How recursion is accomplished; a discussion of stacks and heaps; a brief overview
of algorithm efficiency focusing on Big-Oh notation.
- More Topics Related to the ADTs
A brief introduction to sorting; sorted lists; inheritance and lists; mutable, immutable,
and cloneable objects; sequential search versus binary search.
- The ADTs in Detail
The Discussion of various ADTs. Examples, may include Stacks, Queues, Maps, Dictionaries,
or others; Included ADTs are at the discretion of the instructor.
- The Tree ADT (Time Permitting)
General trees and binary trees; tree traversals; implementation of the Binary Tree
ADT; binary search trees.