|
|
Course
descriptions and relationships |
|
|
Bulletin description links:
C212,
H212,
A592 C212 is usually the second CS course for majors. A592
is the numbering of this course for non-CS graduate students. H212
is the honors version of C212, offered only in the spring
semester. Students registered for H212 are offered additional
material in lab sessions and will be given programming assignments
that present additional challenges. The sequence A201-A202 is
intended for non-majors with no prior programming experience.
Together, A201 and A202 are together equivalent to C212 for
prerequisite and degree purposes. |
|
|
|
Prerequisite |
|
|
The prerequisite of this course is C211,
H211, or A591, with a grade of at least C-. If your
grade in your previous computing course was less than B-, your
chances of success in this course are poor.
If you have not had one of these courses, but you did well in
the equivalent of one semester of rigorous programming experience,
you may take this course at your own risk. An equivalent course
should have covered recursion, arrays, and at least one sorting
algorithm, though some courses covering these topics may not be
sufficient. For the benefit of those who have had the official
prerequisite courses, comparisons between Java and Scheme will
frequently be made, but these comparisons are not essential to
this course.
Consult the instructor if you have any doubt about
whether you belong in this course. |
|
|
|
|
|
Course overview |
|
|
Object-oriented programming (OOP) is the
dominant paradigm for new system development. This course is
concerned primarily with building general programming skills and
introducing the fundamentals of OOP methodology and language
features that support it. For this our vehicle is Java: the most
popular language for new system development. This course is,
however, not about Java itself. Most of the concepts we are
concerned with are also found in other object-oriented languages,
such as C++. Though much of Java's core will be covered, we will
only touch the surface of the vast Java APIs (Application
Programming Interfaces: standard program libraries). This course
will prepare you to master whatever APIs are appropriate for a
chosen application. Other concepts fundamental to modern
software systems are also introduced, including a few common data
structures and algorithms, event handling, multi-tasking,
graphics, and software development methodology.
The following is an approximate list of major topics for each
week.
-
Introduction to Java, objects, events, and graphics
-
Conditional evaluation and methods
-
Primitive types, operators, and strings
-
Defining classes
-
Iteration and active objects
-
Arrays and more iteration
-
Interfaces and GUI programming
-
ArrayLists and searching
-
MVC design and lnked lists
-
Inheritance
-
Abstract classes and exceptions
-
Stream input/output
-
Sorting and efficiency
-
Review
|
|
|
|
Textbook |
|
|
Java: An Eventful
Approach, by Kim B. Bruce, Andrea Pohoreckyj Danyluk, and
Thomas P. Murtagh, Prentice Hall, 2005.
See the Other Resources page in the course's Oncourse Resources
tool for optional text material that may be helpful. |
|
|
|
Evaluation |
|
|
Evaluation is based upon the following
(percentages are approximate)
- 20%, Final exam
- 30%, Several in-class short tests
- 35%, Programming assignments (one a week, sometimes part of
a multi-week project, and frequently done in teams of two or
three)
- 15%, Materials handed in during class and lab and on-line
reading quizzes
See the Policies page in the course's Oncourse Resources for
further details. |
|
|
|
Program
development |
|
|
All programming is in Java 1.5, making
substantial use of the textbook's objectdraw library, and some use
of JUnit for testing and javadoc for program documentation. The
DrJava integraded development environment is used for most lab
programming. All this software may potentially be installed on
personal machines, and development environments other than DrJava
may be used if desired. See the Personal Machine Usage page in the
Oncourse Resources tool for further information. |
|