Table of Content

Acknowledgement

This review guide is adopted from Professor Gerald Weiss and Professor Ira Rudowsky and CISC 1115 instructional team with revision.

Structure of Exams

  • For all topics, you should be able to trace, analyze, and write Java code.
    • Questions will for the most part consist of,
      • presenting you with a piece of code and asking you what is output — or what the value of one or more variables are — once the code is executed
      • presenting you with a problem description and asking you to write the corresponding code
      • asking you what is wrong with a piece of code and/or asking you to repair it
      • presenting you with a piece of code and asking you to trace the value of one or more variables as the code is executed
    • There may also be some multiple-choice and short answer questions.
  • Although you will not be asked for definitions of terms, you should know them as they will be used in the text of the questions.
  • While the book is a good supplement, you are only responsible for topics and material in the lecture notes and the various exercises and assignments. These are a great way for you to prepare yourself for the exam.

Topics in CISC 1115.

  1. Arithmetic calculations
  2. Strings and Boolean and logical operations
  3. Static methods
  4. Method overloading
  5. Control structures
    1. Branching (if, if-else, if-else if-else, and nested)
    2. Loops/iterations (for loop, while loop, do-while loop)
    3. Application of loops: Input loops (with Scanner)
    4. Nested loops
  6. Arrays
    1. Basics
    2. Traversals
    3. Array-array operations (see algorithms)
    4. Searching (see algorithms)
    5. Sorting (see algorithms)
  7. Files
  8. Using Java API documentations
  9. Numerical Algorithms
    1. Absolute value; Toggling: 0<-->1 and -1<-->1; parity; divisibility; primality)
    2. Square root finding (binary search and Newton's algorithm)
    3. Histogram construction
  10. Logical Algorithms
    1. Toggling true <--> false
  11. String Algorithms
    1. Forming initials from String variables or an array, variations on separator
    2. picking out tokens from whitespace
    3. finding the nth word in a String
    4. Counting substrings
    5. Replacement
  12. Data input algorithms
    1. Organized data with header (count prefix)
    2. End of data (e.g., using sentinel, i.e., trailing token)
    3. Nested input sequences (either header or sentinel based)
  13. Ordered Type Algorithms (numerical and String), e.g.,
    1. Maximum (minimum) of two
    2. Maximum (minimum) of three
    3. Checking for ascending (descending) order of two
    4. Checking for ascending (descending) order of three
  14. Sequence of Input and Array/ArrayList Traversal Algorithms
    1. Counting items having a common property
    2. Accumulations. addition, multiplication, conjunction, disjunction
    3. Checking for ascending (descending)
    4. Finding extremes (maximum, minimum)
    5. Determination of all/some/none of the items having a common property
  15. Adjacency algorithms
    1. identifying runs (e.g., of consecutive numbers)
    2. counting or eliminating duplicates
  16. Single array modification
    1. Element shifting
    2. Reversing elements
    3. Frequency counts
  17. Multiple array algorithms
    1. element-to-element arithmetic, comparison, string operations
    2. copying, selecting
    3. Sorting and Searching
    4. Selection sort
    5. Sequential search
    6. Binary search

Topics in CISC 3115. Part I

  1. Programming environment
  2. Java language idiom
  3. Defining classes
    1. Data fields (variables; instance vs. class variables)
    2. Behavior (methods; instance vs. class methods)
    3. Constructors (default constructor, parameterized contructors)
    4. Defining instance methods
    5. Calling instance methods
    6. objects, reference variables vs primitive type variables
    7. Arrays of objects
    8. Passing object arguments to methods
    9. Returning objects
    10. The this reference variable
    11. Computer basics (Stack vs. heap)
  4. Relationship among objects
    1. Client-server model
    2. Message-passing model
  5. Relationship among classes
    1. Association (also, composition & aggregation)
    2. Realizing association relationship in Java programs
    3. Inheritance (more ...)
  6. Inheritance
    1. Constructors (default constructor, parameterized constructor, constructor chaining, the super keyword)
    2. Realizing inheritance in Java programs
    3. Method overriding
    4. Polymorphism and dynamic binding
    5. Writing generic methods
  7. Designing larger programs
    1. Packages and modifiers (package, visibility modifier and access control, the final modifier)
    2. UML diagrams (class diagrams, sequence diagrams)
    3. Types of application. Text-based interface (menu-driven interface) programs
    4. Types of application. Command line interface programs
    5. Types of application. Utility programs (no prompts, using stdout & stderr for output & error)
    6. Types of application. Multi-file/multi-class programs
    7. Java API classes CISC 1115. String, PrintStream, Scanner, File, Math; CISC 3115. ArrayList, Object, Wrappers, Date, Random, Point2D)
    8. Dealing with compilation errors; tracing programs
    9. Development process. Design, implementation, Testing
  8. Algorithms
    1. CISC 1115. those discussed in CISC 1115

Topics in CISC 3115. Part II

  1. Handling errors and exceptions
    1. contrasting two primary methods to handle errors and exceptions
    2. try-catch blocks
    3. try-with-resources blocks
    4. throwing exceptions and rethrowing exceptions
    5. declaring methods to throw exceptions
    6. checked vs. unchecked exceptions
    7. understanding and using stack traces for debugging
    8. defining and using customer exception types
    9. the Throwable type hierarchy and polymorphism
  2. Text (Character) File I/O and Exceptions
    1. Locating files and directories using their file system path
    2. Relative path vs. absolute path
    3. Concept of text (character) file
    4. Using the File class
    5. Using the Scanner class to read text files
    6. Using the PrintWriter class to write to text files
    7. Using try-catch-blocks and try-with-resources-blocks with files
    8. Handling exceptions while working with files
    9. Using the finally clause to do clea-up or to release resources
  3. Abstract class
    1. Defining and using abstract method
    2. Defining and using abstract class
    3. Designing generic methods using abstract classes and methods
  4. Interface
    1. Defining interface
    2. Implementing interface
    3. Designing type hierarchies using interfaces, abstract classes, and concrete classes
    4. Designing generic methods using interfaces
    5. The Comparable, Comparator, and Cloneable interfaces
    6. Using the Comparable and Comparator interfaces for sorting and searching
  5. Recursion
    1. Understanding the concept of recursion
    2. Designing for mathematical recursive functions
    3. Using recursive helper methods
    4. Using recursion for problem solving including sorting, searching, file system traverse, and string operations.
  6. Java Collection and Map API
    1. Understanding the concept of Collection and List
    2. Contrasting Collection, and List
    3. Contrasting ArrayList and LinkedList
    4. Sorting and searching using lists
    5. Understanding Set
    6. Contrasting HashSet, LinkedHashSet, and TreeSet
    7. Contrating Set and List
    8. Understanding Map
    9. Contrasting HashMap, LinkedHashMap, and TreeMap