CSC17: Fundamentals of Computer Science III, Spring 2020

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)

Office Hours: Check ZOOM OFFICE HOURS folder on blackboard page, email me for hours if you're not in this class with me

Course Syllabus

Online Resources:

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

Astar project (lab 10) files:

  1. (study carefully).
  2. (study carefully) RELOAD FOR UPDATE.
  3. (subclass of astar that you'll have to write)
  4. HeapValue interface for my FlexQueue, also needs BinHeap (in case you don't trust your own lab4 solution)
  7. (contains main and graphics code) RELOAD FOR LATEST.
  8. man15.gif, gem1.gif, boat.gif, dragon.gif. (animated gifs)
  9. grass1.gif, Water.gif, flames.jpeg. (terrain textures - make sure windows doesn't change file name)

Supporting files for lab 9: Tree interface, Bst2020 class (original version here), BstGraph drawing program
Alternate, more advanced version of lab 9
BstComm tree communication program
Lab 9b Quiz

DNA files for lab 8b: arman.dna, artyan.dna, mother.dna, father.dna
FSM diagram for lab 7: CAT FSM diagram, Finite state machine abstract class, with sample state machine subclass (and diagram). Additional sample machine for matching parentheses (and diagram).

Lab 4 support files:,,

Submit all programming assignments on blackboard, CSC 17

Sample C++ program and corresponding Java program
More basic examples of classes and objects in Java with REQUIRED EXERCISE
Notes on Pointers, Stack and Heap. (MUST READ)
Sorting algorithms compared (includes mergesort and quicksort). Updated (Read notes about Lambda Expressions)
Fibonacci functions, from best to worst
Triangle fractal (with and without recursion)
Condensed Notes on Interfaces, Inheritance and Generics. (REQUIRED READING)
How to implement a Queue: Linked List, Circular Queue, and comparing their performance
How to implement a Priority Queue as a Binary Heap (also requires HeapValue interface and graphical display program)
Notes and examples of polymorphism and notes on Lambda Expressions. (BOTH REQUIRED READING)
Infinite sets using predicates and lambda expressions. This version is slightly different from one in video lecture.
team sports simulation with subclass. This is a sample solution to part of lab 1b, further illustrates inheritance, dynamic dispatch.
Abstract Class and Example and (examples of oop). example of the Observer Design Pattern
Program with notes explaining where dynamic dispatch occurs
Non-polymorphic closed hash map, Polymorphic hashmap as an abstract class (CHMap) and sample non-abstract subclass (Idmap). Stand-alone polymorphic hashmap (HMap) with linear-probing rehash.
Finite state machine abstract class, with sample state machine subclass (and diagram). Additional sample machine for matching parentheses (and diagram).
Dynamic programming notes and simple example (routes)
Dynamic programming and the Knapsack Problem, with sample input files shopping list and packing for flight
Subtle points about type casting
traditional and modern implementations of (unbalanced) binary search trees, with Tree interface and graphical display for the modern version
Notes on Exceptions and Serializable data structures.
Notes on Dijkstra's algorithm and Algorithm A* (background for lab 10), with additional example: 8-puzzle program (application of algorithm Astar) and its graphical animation


Final exam Wednesday 5/13 at 10:30am. Study guide with sample problems and solutions.

Midterm Exam Wednesday 4/1. Use the Exam Study Guide, which contains practice problems and sample solutions. DFA diagram for one of the problems.

Sample solution to Lab 4, Lab 5 and lab 6

There may be unannounced short quizzes on Mondays.