CSC17: Fundamentals of Computer Science III, Spring 2019

Dr. Chuck C. Liang
Professor of Computer Science, Hofstra University .

Office Address:
102 Adams Hall
Hofstra University
Hempstead, NY 11550
Office Phone: (516 463) 5559

Email: (<- click to send me mail)

Official Office Hours: MW 2-3:30pm

Course Syllabus

Online Resources:

lab 1, lab 1b, lab 2, lab 3, lab 4, lab 4b, lab 5, lab 6, lab 7, lab 8, lab 9

Astar project (lab 9) files:

  1. (study carefully).
  2. (study carefully).
  3. (subclass of astar that you'll have to write)
  4. HeapVal interface for Position Correcting Heap (in case you don't trust your own)
  6. (contains main and graphics code).
  7. man15.gif, gem1.gif, boat.gif, dragon.gif. (animated gifs)
  8. grass1.gif, Water.gif, flames.jpeg. (terrain textures - make sure windows doesn't change file name)

Files pertaining to lab 8: (interface), (classes),
Files associated with lab 6: Abstract finite state machine and sample finite automaton (additional automaton for matching parentheses). CAT FSM diagram
Lab 4 support files: PriorityQ superclass, HeapVal interface, graphical display program

Submit all programming assignments on blackboard, CSC 17

Sample C++ program and corresponding Java program
Some examples of recursion
Recursive algorithm triangles fractal, contains both versions with and without recursion.
More basic examples of classes in Java with REQUIRED EXERCISE
Condensed Notes on Interfaces, Inheritance and Generics. (REQUIRED READING)
QuickSort implementation, with and without recursion
Linked List implementation (
Circular Queue, implements Iterable interface
Priority Queue (base class for lab 4)
Notes and examples of polymorphism. (REQUIRED READING)
team sports simulation with subclass further illustrates inheritance, importance of dynamic dispatch.
Abstract Class and Example and (examples of oop).
Program with notes explaining where dynamic dispatch occurs
non-polymorphic hash table (code from 3/11 class), abstract version, association array version example of the observer design pattern
Notes on Lambda Expressions
Infinite sets using predicates
Dynamic programming notes and simple example (routes)
Dynamic programming and the Knapsack Problem
Subtle points about type casting
traditional and modern implementations of (unbalanced) binary search trees, with graphical display for the modern version
Notes on Dijkstra's algorithm, with additional example: 8-puzzle program (application of algorithm Astar) and its graphical animation
Notes on use of exceptions and various forms of IO


Final Exam Friday 5/17, 10:30am-12:30pm, Adams 204: study guide with practice problems and solutions

lab1b and extra exercise sample solutions.

Please note that Friday Lab session of this class will also be in Adams 204 (change from Adams 208).