Fall 2022 (08/25/2022 - 12/21/2022)

The semester has 15 class meetings including 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); classes and data types; data fields (Instance and class variables); behavior (instance methods and class methods);

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
to use basic Unix command line operators to support Java programming;
(Module) to use basic UNIX and Windows command line operations

Lecture Notes

CodeLab

Reading

Reviewing topics in CISC 1115
Sections 9.1 - 9.5 of the textbook
Sections 9.6 - 9.9 of the textbook

Topics: constructors; default constructor; primitive types and reference types; accessing objects via reference variables; Java package concept; visibility modifiers; Java API classes -- Date, Random, Math, and Point2D;

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

Individual Programming Project

Reading

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

Topics: accessing objects via reference variables; passing objects to methods; scope of variables; immutable objects; the this reference variable;

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 use Java API wrapper classes (like Integer, Double) and immutable classes (such as, String)
(Module) to design classes with associative relationship (including composition and aggregation)

Lecture Notes

CodeLab

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

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 design and implement applications with multiple Java classes, interfaces, and objects;
(Module) to design classes with associative relationship (including composition and aggregation)

Lecture Notes

CodeLab

Individual Programming Project

Reading

Sections 10.1 - 10.3 of the textbook
Sections 10.4 - 10.6 of the textbook
Sections 10.7 - 10.11 of the textbook

Topics: Inheritance; superclasses and subclasses (supertypes and subtypes); overriding and Overloading methods; constructors and default constructor; constructor chaining; polymorphism and polymorphism via 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

Individual Programming Project

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

Notice: No classes scheduled

Topics: Q & A for Midterm Exam; 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

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

Topics: The instructor will hold a midterm exam in class

Topics: ArrayList; Midterm recap.

Course Objectives

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

Individual Programming Project

Reading

Sections 11.11 of the textbook

Topics: ArrayList; 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;

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

Lecture Notes

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: 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

Lecture Notes

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; 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 override abstract methods
(Module) to design generic method using abstract method and class
(Module) to understand the concept of Java interface
(Module) to design generic method using Java interface
to understand Java class definition, including the use of constructors and static members;
(Module) to understand the concepts of abstract method and class
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

Individual Programming Project

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

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

Reading

Chapters 19, 20, and 21 of the textbook

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

Lecture Notes

Reading

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

Topics: The final exam is scheduled at IH-2143, 6:00 -- 8:00 PM Wednesday, December 21, 2022