Course Objective


Introduces more advanced elements of object-oriented programming for students in CS and CS-related degree programs. Specific topics to be covered in the course include:
  • Abstract Classes
  • Abstract Methods
  • Method Overloading and Overriding
  • Interfaces
  • Inheritance
  • Polymorphism
  • Sorting Algorithms

Course Outcomes


  • Analyze and explain the behavior of simple programs involving the following fundamental programming constructs: assignment, I/O (including file I/O), selection, iteration, methods
  • Write a program that uses each of the following fundamental programming constructs: assignment, I/O (including file I/O), selection, iteration, methods
  • Break a problem into logical pieces that can be solved (programmed) independently.
  • Develop, and analyze, algorithms for solving simple problems.
  • Use a suitable programming language, and development environment, to implement, test, and debug algorithms for solving simple problems.
  • Write programs that use each of the following data structures (and describe how they are represented in memory): strings, arrays
  • Explain the basics of the concept of recursion.
  • Write, test, and debug simple recursive functions and procedures.
  • Explain and apply object-oriented design and testing involving the following concepts: data abstraction, encapsulation, information hiding, inheritance, and polymorphism. Utilize tools such as Unified Modeling language (UML) to represent object oriented designs.
  • Use a development environment to design, code, test, and debug simple programs, including multi-file source projects, in an object-oriented programming language.
  • Implement basic error handling
  • Solve problems by creating and using sequential search, binary search, and quadratic sorting algorithms (selection, insertion)
  • Determine the time complexity of simple algorithms.
  • Apply appropriate problem-solving strategies
  • Use APIs (Application Programmer Interfaces) and design/program APIs

Program Outcomes


  • An ability to apply knowledge of computing and mathematics appropriate to the program's student outcomes and to the discipline.
  • An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  • An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs.
  • An ability to use current techniques, skills, and tools necessary for computing practices.
  • An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
  • An ability to apply design and development principles in the construction of software systems of varying complexity.
The syllabus and the information on course administration are provided here

Grading

Assignment Total points
Assignments26
Project12
Quizzes(2)12
Exams(2)50
Lab Exercises(Extra Credits)10
Total100

Tentative Schedule

DateTopic/ActivityAssignments/Tests
Week 1 Course Preliminaries: Syllabus, Class policies CS115 review quiz

CS115 Review:
User defined classes
Static/non-static methods
CS115 review lab
Week 2 CS115 Review (cont.):
Service/client classes
Java defined classes (Scanner class)
Variable Scope
Command line input
Lab-Exercise-1
Week 3 Wrapper classes
Enum datatype
Packaging
Generating Javadocs
Lab-Exercise-2
HW1 due
Week 4 Data structures:
Single dimension arrays
Sequential search
Lab-Exercise-3
Week 5Data structures:
Multi-dimensional arrays
Vector/ArrayList class
Lab-Exercise-4
HW2 due
Week 6Algorithms:
Sorting algorithms
Programming Quiz 1
Week 7Binary search
Class Inheritance
Lab-Exercise-5
HW3 due
Week 8Class Inheritance:
Method Overriding vs Method Overloading
Midterm
Week 9Abstract classes & methods Lab-Exercise-6
HW4 due
Week 10Polymorphism
Interfaces
Lab-Exercise-7
Week 11Project Discussion

Exceptions:
User Defined Exception Handling
Lab-Exercise-8
HW5 due
Week 12Project discussion
I/O Streams
Binary Files
Object Serialization
Lab-Exercise-9
Week 13Lecture on recursion
Project Discussion
Select project demo slot
Programming Quiz 2
HW6 due
Week 14Project Discussion
Final Exam review
HW7 (extra-credit) due

Attendance Policy


Students are expected to attend classes without fail and sign the attendance sheet distributed in class. Absences will be reported to academic affairs and multiple absences may also affect your final grade.

Honor Code


The university academic dishonesty policies are in force for the course. Please refer to the handbook for details. Students will not collaborate on assignments or homeworks unless it is explicitly allowed. Students will also read, sign the College of Science academic integrity pledge and submit to the instructor.