Instructor: Sameh Fakhouri
E-mail: sameh.fakhouri at lehman.cuny.edu
Phone: 718-960-8784
Office: Gillet 102 and office hours
Class Hours: Mondays & Wednesdays 11:00 AM - 12:40 PM (GI-219)

Description: 4 hours, 4 credits

Continuation of parameter passing with a focus on devising function definitions, and tracing recursive calls. Sorting and searching algorithms and a comparison of their performance. GUI programming. Threads, Exceptions, and Exception Handling. Object-Oriented Programming techniques.

Prerequisites: A grade of B- or better in CMP 230 or Departmental permission.

Textbook: Java: An Introduction to Problem Solving and Programming by Savitch and Carrano, Sixth Edition, Pearson, 2009, ISBN-13 978-0-13-216270-8, ISBN-10 0-13-216270-9.

It is available for sale from the campus bookstore or from on-line booksellers such as Amazon or Powells. You can also rent the book for the semester from Chegg.com.

Grades: The grading for the course will be based on:

Since the final exam is comprehensive, if you do better on the final exam than the midterm exams, the final grade can replace those grades. This will be done automatically when your final grade is calculated. You must take and pass the final to pass the course. There are no make-up exams.

Honor Code: You are encouraged to work together on the overall design of the programs and homework. However, for specific programs and homework assignments, all work must be your own. You are responsible for knowing and following Lehman's Academic Integrity Code .


All incidents of cheating will be reported to the Vice President of Student Affairs.

Course Objectives

At the end of the course, students should be able to:

  1. Write Java programs using polymorphism and inheritance.
  2. Write Java programs using exception handling.
  3. Write Java programs with stream and file I/O.
  4. Write Java programs that use recursion.
  5. Write Java programs that use:
    1. Array-based data structures
    2. The Java Collections Framework
    3. Linked Data Structures
  6. Write and debug programs independently.