Fundamentals II
Introduction to Class-based Program Design

Spring, 2014

The course studies the class-based program design and the design
of abstractions that support the design of reusable software and
libraries. It covers the principles of object oriented program
design, the basic rules of program evaluation, and examines the
relationship between algorithms and data structures, as well as
basic techniques for analyzing algorithm complexity.

The course is suitable for both CS majors and non-majors. It
assumes that student has been introduced to the basic principles
of program design and computation.

Prerequisites

“Think first, experiment later.”

The course assumes proficiency with the systematic design of
programs and some mathematical maturity. It demands curiosity
and self-driven exploration and requires a serious commitment
to practical hands-on programming.

Course objectives

The goal is to help you understand the principles of class-based
program design using an object-oriented programming language(s), not
just Java. Java is used so we can learn how the principles are used in
practical applications, and gives us an opportunity to discuss the
strengths and weaknesses of languages and paradigms.