Fall 2020 (08/26/2020 - 12/20/2020)

The semester has 28 class meetings including a midterm exam but excluding the final exam. Clicking on a class day below, you should find the class module for the day including lecture notes, assignments, and others. The instructor releases the content for a class generally on the Monday before the class. However, the instructor often makes update to the module content after the initial release. You should check this page often for up-to-date content.

In case you encounter a problem when viewing class content, such as, a broken link, please report it to the instructor immediately.

Topics: overview of class organization (syllabus); preparing programming environment (JRE and JDK); preparing for synchronous online lecturing (process, CUNY Blackboard, Class Portal Site)

Course Objectives

to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to set up Java programming environment
(Module) to review the process of authoring a Java program
to use basic Unix command line operators to support Java programming;
(Module) to use basic UNIX and Windows command line operations

Lecture Notes

Exercises

Reading

Reviewing topics in CISC 1115

On Blackboard

Topics: Installing Git and Atom; Introduction to CodeLab; Introduction to journal submission method; UNIX command line operations; Authoring Java program from command line;

Course Objectives

to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to set up Java programming and working environment for the class
(Module) to review the process of authoring a Java program
to use basic Unix command line operators to support Java programming;
(Module) to use basic UNIX and Windows command line operations

Lecture Notes

CodeLab

Exercises

Reading

Reviewing topics in CISC 3115

On Blackboard

Topics: classes and data types; data fields (Instance and class variables); behavior (instance methods and class methods); constructors; default constructor; primitive types and reference types; accessing objects via reference variables; passing objects to methods; immutable objects; the this reference variable; Java package concept; visibility modifiers;

Course Objectives

to understand Java class definition, including the use of constructors and static members;
(Module) to define Java class with instance and class variables
(Module) to define Java class with instance and class methods
to understand Java objects, the concepts of state and behavior, and their realization in the Java programming language;
(Module) to use and override the default constructor
(Module) to create non-default constructors
(Module) to create and access Java objects
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java applications with multiple classes in multiple files

Lecture Notes

CodeLab

Exercises

Reading

Sections 9.1 - 9.5 of the textbook
Sections 9.6 - 9.9 of the textbook

On Blackboard

Topics: classes and data types; data fields (Instance and class variables); behavior (instance methods and class methods); constructors; default constructor; primitive types and reference types; accessing objects via reference variables; passing objects to methods; immutable objects; the this reference variable; Java package concept; visibility modifiers;

Course Objectives

to understand Java class definition, including the use of constructors and static members;
(Module) to define Java class with instance and class variables
(Module) to define Java class with instance and class methods
to understand Java objects, the concepts of state and behavior, and their realization in the Java programming language;
(Module) to use and override the default constructor
(Module) to create non-default constructors
(Module) to create and access Java objects
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java applications with multiple classes in multiple files

Lecture Notes

CodeLab

Exercises

Reading

Sections 9.1 - 9.5 of the textbook
Sections 9.6 - 9.9 of the textbook

On Blackboard

Topics: class versus object; class abstraction and encapsulation; relationship among classes and objects (message passing, client-server, UML class and sequence diagrams); aggregation; copying objects; wrapper classes; immutable objects; String, StringBuilder, and StringBuffer Classes; Java unit tests (on command line);

Course Objectives

to understand Java objects, the concepts of state and behavior, and their realization in the Java programming language;
(Module) to design methods with parameters of object type and pass object arguments to the methods
(Module) to create arrays of objects and to pass arrays of objects as arguments to methods
(Module) to declare and use variables with appropriate scope
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design classes with associative relationship (including composition and aggregation)
(Module) to use Java API wrapper classes (like Integer, Double) and immutable classes (such as, String)

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Individual Programming Assignment

Exercises

Reading

Sections 9.10 - 9.14 of the textbook
Section 3.9 of the textbook
Sections 10.1 - 10.3 of the textbook
Sections 10.4 - 10.6 of the textbook
Sections 10.7 - 10.11 of the textbook

On Blackboard

Topics: class versus object; class abstraction and encapsulation; relationship among classes and objects (message passing, client-server, UML class and sequence diagrams); aggregation; copying objects; wrapper classes; immutable objects; String, StringBuilder, and StringBuffer Classes; Java unit tests (on command line);

Course Objectives

to understand Java objects, the concepts of state and behavior, and their realization in the Java programming language;
(Module) to design methods with parameters of object type and pass object arguments to the methods
(Module) to create arrays of objects and to pass arrays of objects as arguments to methods
(Module) to declare and use variables with appropriate scope
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design classes with associative relationship (including composition and aggregation)
(Module) to use Java API wrapper classes (like Integer, Double) and immutable classes (such as, String)

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Individual Programming Assignment

Exercises

Reading

Sections 9.10 - 9.14 of the textbook
Section 3.9 of the textbook
Sections 10.1 - 10.3 of the textbook
Sections 10.4 - 10.6 of the textbook
Sections 10.7 - 10.11 of the textbook

On Blackboard

Topics: class versus object; class abstraction and encapsulation; relationship among classes and objects (message passing, client-server, UML class and sequence diagrams); aggregation; copying objects; wrapper classes; immutable objects; String, StringBuilder, and StringBuffer Classes; Java unit tests (on command line);

Course Objectives

to understand Java objects, the concepts of state and behavior, and their realization in the Java programming language;
(Module) to design methods with parameters of object type and pass object arguments to the methods
(Module) to create arrays of objects and to pass arrays of objects as arguments to methods
(Module) to declare and use variables with appropriate scope
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design classes with associative relationship (including composition and aggregation)
(Module) to use Java API wrapper classes (like Integer, Double) and immutable classes (such as, String)

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Individual Programming Assignment

Exercises

Reading

Sections 9.10 - 9.14 of the textbook
Section 3.9 of the textbook
Sections 10.1 - 10.3 of the textbook
Sections 10.4 - 10.6 of the textbook
Sections 10.7 - 10.11 of the textbook

On Blackboard

Topics: Inheritance; superclasses and subclasses (supertypes and subtypes); overriding and Overloading methods; constructors and default constructor; constructor chaining; polymorphism and polymorphism via inheritance; dynamic binding and polymorphism; visibility modifier (public, protected, no visibility modifier); the final modifier and inheritance;

Course Objectives

to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to design type hierarchy using inheritance
(Module) to understand polymorphism via inheritance
(Module) to design generic methods using type hierarchy and polymorphism
to understand Java class definition, including the use of constructors and static members;
(Module) to understand relationship of constructors of superclasses and those of subclasses
(Module) -> to design constructors using constructor chaining
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java classes with inheritance and association relationships
(Module) to use ArrayList and arrays in applications

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 11.1 - 11.5 of the textbook
Section 11.6 of the textbook
Sections 11.7 - 11.8 of the textbook
Sections 11.9 - 11.10 of the textbook
Sections 11.11 of the textbook

On Blackboard

Topics: Inheritance; superclasses and subclasses (supertypes and subtypes); overriding and Overloading methods; constructors and default constructor; constructor chaining; polymorphism and polymorphism via inheritance; dynamic binding and polymorphism; visibility modifier (public, protected, no visibility modifier); the final modifier and inheritance;

Course Objectives

to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to design type hierarchy using inheritance
(Module) to understand polymorphism via inheritance
(Module) to design generic methods using type hierarchy and polymorphism
to understand Java class definition, including the use of constructors and static members;
(Module) to understand relationship of constructors of superclasses and those of subclasses
(Module) -> to design constructors using constructor chaining
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java classes with inheritance and association relationships
(Module) to use ArrayList and arrays in applications

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 11.1 - 11.5 of the textbook
Section 11.6 of the textbook
Sections 11.7 - 11.8 of the textbook
Sections 11.9 - 11.10 of the textbook
Sections 11.11 of the textbook

On Blackboard

Notice: Classes follow Monday schedule

Topics: Inheritance; superclasses and subclasses (supertypes and subtypes); overriding and Overloading methods; constructors and default constructor; constructor chaining; polymorphism and polymorphism via inheritance; dynamic binding and polymorphism; visibility modifier (public, protected, no visibility modifier); the final modifier and inheritance;

Course Objectives

to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to design type hierarchy using inheritance
(Module) to understand polymorphism via inheritance
(Module) to design generic methods using type hierarchy and polymorphism
to understand Java class definition, including the use of constructors and static members;
(Module) to understand relationship of constructors of superclasses and those of subclasses
(Module) -> to design constructors using constructor chaining
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java classes with inheritance and association relationships
(Module) to use ArrayList and arrays in applications

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 11.1 - 11.5 of the textbook
Section 11.6 of the textbook
Sections 11.7 - 11.8 of the textbook
Sections 11.9 - 11.10 of the textbook
Sections 11.11 of the textbook

On Blackboard

Topics: Inheritance; superclasses and subclasses (supertypes and subtypes); overriding and Overloading methods; constructors and default constructor; constructor chaining; polymorphism and polymorphism via inheritance; dynamic binding and polymorphism; visibility modifier (public, protected, no visibility modifier); the final modifier and inheritance;

Course Objectives

to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to design type hierarchy using inheritance
(Module) to understand polymorphism via inheritance
(Module) to design generic methods using type hierarchy and polymorphism
to understand Java class definition, including the use of constructors and static members;
(Module) to understand relationship of constructors of superclasses and those of subclasses
(Module) -> to design constructors using constructor chaining
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java classes with inheritance and association relationships
(Module) to use ArrayList and arrays in applications

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 11.1 - 11.5 of the textbook
Section 11.6 of the textbook
Sections 11.7 - 11.8 of the textbook
Sections 11.9 - 11.10 of the textbook
Sections 11.11 of the textbook

On Blackboard

Topics: Inheritance; superclasses and subclasses (supertypes and subtypes); overriding and Overloading methods; constructors and default constructor; constructor chaining; polymorphism and polymorphism via inheritance; dynamic binding and polymorphism; visibility modifier (public, protected, no visibility modifier); the final modifier and inheritance;

Course Objectives

to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to design type hierarchy using inheritance
(Module) to understand polymorphism via inheritance
(Module) to design generic methods using type hierarchy and polymorphism
to understand Java class definition, including the use of constructors and static members;
(Module) to understand relationship of constructors of superclasses and those of subclasses
(Module) -> to design constructors using constructor chaining
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design Java classes with inheritance and association relationships
(Module) to use ArrayList and arrays in applications

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 11.1 - 11.5 of the textbook
Section 11.6 of the textbook
Sections 11.7 - 11.8 of the textbook
Sections 11.9 - 11.10 of the textbook
Sections 11.11 of the textbook

On Blackboard

Topics: Q & A for Midterm Exam.

Lecture Notes

Reading

all chapters discussed

Topics: The instructor will hold a midterm exam in class (via an online proctoring software if available).

Topics: Design with exceptions; try-catch blocks; throwing exceptions; exception types (including checked vs unchecked); polymorphism and dynamic binding with exceptions; stack trace; defining custom exception types; exceptions and text file I/O;

Course Objectives

to understand exception handling and apply it in Java application design;
(Module) to contrast approaches of error handling
(Module) to contrast Exception and Error in the Throwable class hierarchy
(Module) to contrast checked exception and unchecked exception
(Module) to design class and method to catch, throw, and rethrow exceptions
(Module) to design and use custom exceptions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to understand character encoding
(Module) to read and write text files

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 12.1 - 12.3 of the textbook
Section 12.4 of the textbook
Section 12.5 of the textbook
Section 12.6 of the textbook
Sections 12.7 - 12.8 of the textbook
Sections 12.9 - 12.10 of the textbook
Sections 12.11 - 12.13 of the textbook

Topics: Design with exceptions; try-catch blocks; throwing exceptions; exception types (including checked vs unchecked); polymorphism and dynamic binding with exceptions; stack trace; defining custom exception types; exceptions and text file I/O;

Course Objectives

to understand exception handling and apply it in Java application design;
(Module) to contrast approaches of error handling
(Module) to contrast Exception and Error in the Throwable class hierarchy
(Module) to contrast checked exception and unchecked exception
(Module) to design class and method to catch, throw, and rethrow exceptions
(Module) to design and use custom exceptions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to understand character encoding
(Module) to read and write text files

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 12.1 - 12.3 of the textbook
Section 12.4 of the textbook
Section 12.5 of the textbook
Section 12.6 of the textbook
Sections 12.7 - 12.8 of the textbook
Sections 12.9 - 12.10 of the textbook
Sections 12.11 - 12.13 of the textbook

Topics: Design with exceptions; try-catch blocks; throwing exceptions; exception types (including checked vs unchecked); polymorphism and dynamic binding with exceptions; stack trace; defining custom exception types; exceptions and text file I/O;

Course Objectives

to understand exception handling and apply it in Java application design;
(Module) to contrast approaches of error handling
(Module) to contrast Exception and Error in the Throwable class hierarchy
(Module) to contrast checked exception and unchecked exception
(Module) to design class and method to catch, throw, and rethrow exceptions
(Module) to design and use custom exceptions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to understand character encoding
(Module) to read and write text files

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 12.1 - 12.3 of the textbook
Section 12.4 of the textbook
Section 12.5 of the textbook
Section 12.6 of the textbook
Sections 12.7 - 12.8 of the textbook
Sections 12.9 - 12.10 of the textbook
Sections 12.11 - 12.13 of the textbook

Topics: Design with exceptions; try-catch blocks; throwing exceptions; exception types (including checked vs unchecked); polymorphism and dynamic binding with exceptions; stack trace; defining custom exception types; exceptions and text file I/O;

Course Objectives

to understand exception handling and apply it in Java application design;
(Module) to contrast approaches of error handling
(Module) to contrast Exception and Error in the Throwable class hierarchy
(Module) to contrast checked exception and unchecked exception
(Module) to design class and method to catch, throw, and rethrow exceptions
(Module) to design and use custom exceptions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to understand character encoding
(Module) to read and write text files

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Sections 12.1 - 12.3 of the textbook
Section 12.4 of the textbook
Section 12.5 of the textbook
Section 12.6 of the textbook
Sections 12.7 - 12.8 of the textbook
Sections 12.9 - 12.10 of the textbook
Sections 12.11 - 12.13 of the textbook

Topics: abstract class; abstract method; inheritance and abstract class;

Course Objectives

to understand Java class definition, including the use of constructors and static members;
(Module) to understand the concepts of abstract method and class
to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to override abstract methods
(Module) to design generic method using abstract method and class

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Exercises

Reading

Sections 13.1 - 13.4 of the textbook

Topics: interface; interface and hieritance; interface and polymorphism; designing with class and interface; selected interfaces in Java API;

Course Objectives

to understand the four principles of object-oriented programming, i.e., abstraction, encapsulation, inheritance, and polymorphism;
(Module) to understand the concept of Java interface
(Module) to design generic method using Java interface
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design applications with concrete class, abstract class, and interface
(Module) to use the Comparable, Comparator, and Cloneable interfaces

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Exercises

Reading

Chapter 13 of the textbook

Topics: Recursion; Designing for mathematical recursive functions (e.g. divide, factorial, Fibonacci numbers); Designing for problem solving using recursion

Course Objectives

to design and implement Java methods with recursion and iteration;
(Module) to understand the concept of recursion
(Module) to design recursive methods using mathematical recurrence functions
(Module) to design recursive methods using recursive helper functions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to apply recursion to problem solving including sorting, searching, and file I/O.

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Chapter 18 of the textbook

Topics: Recursion; Designing for mathematical recursive functions (e.g. divide, factorial, Fibonacci numbers); Designing for problem solving using recursion

Course Objectives

to design and implement Java methods with recursion and iteration;
(Module) to understand the concept of recursion
(Module) to design recursive methods using mathematical recurrence functions
(Module) to design recursive methods using recursive helper functions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to apply recursion to problem solving including sorting, searching, and file I/O.

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Chapter 18 of the textbook

Topics: Recursion; Designing for mathematical recursive functions (e.g. divide, factorial, Fibonacci numbers); Designing for problem solving using recursion

Course Objectives

to design and implement Java methods with recursion and iteration;
(Module) to understand the concept of recursion
(Module) to design recursive methods using mathematical recurrence functions
(Module) to design recursive methods using recursive helper functions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to apply recursion to problem solving including sorting, searching, and file I/O.

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Chapter 18 of the textbook

Topics: Recursion; Designing for mathematical recursive functions (e.g. divide, factorial, Fibonacci numbers); Designing for problem solving using recursion

Course Objectives

to design and implement Java methods with recursion and iteration;
(Module) to understand the concept of recursion
(Module) to design recursive methods using mathematical recurrence functions
(Module) to design recursive methods using recursive helper functions
to design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to apply recursion to problem solving including sorting, searching, and file I/O.

Lecture Notes

Recorded Video Lectures on Zoom

CodeLab

Group Project

Exercises

Reading

Chapter 18 of the textbook

Topics: Java Collection API; list (ArrayList, LinkedList); stack; queue; set; map; iterator; enhanced for loop; sorting and searching;

Course Objectives

to design and implement Java programs with Java's Collections API;
(Module) to understand the concepts of list, stack, queue, set, and map
(Module) to use implementations of list, stack, queue, set, and map in Java Collections API in applications

Lecture Notes

Recorded Video Lectures on Zoom

Exercises

Reading

Chapters 19, 20, and 21 of the textbook

Notice: College Closed

Topics: Java Collection API; list (ArrayList, LinkedList); stack; queue; set; map; iterator; enhanced for loop; sorting and searching;

Course Objectives

to design and implement Java programs with Java's Collections API;
(Module) to understand the concepts of list, stack, queue, set, and map
(Module) to use implementations of list, stack, queue, set, and map in Java Collections API in applications

Lecture Notes

Recorded Video Lectures on Zoom

Exercises

Reading

Chapters 19, 20, and 21 of the textbook

Topics: Java Collection API; list (ArrayList, LinkedList); stack; queue; set; map; iterator; enhanced for loop; sorting and searching;

Course Objectives

to design and implement Java programs with Java's Collections API;
(Module) to understand the concepts of list, stack, queue, set, and map
(Module) to use implementations of list, stack, queue, set, and map in Java Collections API in applications

Lecture Notes

Recorded Video Lectures on Zoom

Exercises

Reading

Chapters 19, 20, and 21 of the textbook

Topics: Java Map API. Q & A for Final Exam.

Lecture Notes

Recorded Video Lectures on Zoom

Reading

Relevant chapters in the textbook; lecture notes; all quizes; review guides and tests