Writing Java is like realizing your
imagination.
Donghui Yuan, Quest for Java contest 2nd place
winner
Bulletin description links: C212, H212, A592.
Prerequisite: C211, H211, or A591. If you have not had one of these courses, but have the equivalent of one semester of rigorous programming experience, you may take this course at your own risk. For the benefit of those who have had the 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 are in any doubt about whether you belong in this course.
Course relationships: 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 this semester will be 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 and covers material similar to C212. Together A201 and A202 are equivalent to C212 for prerequisite and degree purposes.
Object-oriented programming (OOP) is the dominant paradigm for new system development. This course is concerned primarily with OOP methodology and language features that support it. For this our vehicle is the Java language, which is rapidly becoming the language of choice 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++ and Smalltalk. 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.
The course also introduces operating system features widely used in system development. This includes multi-processing and multi-tasking, synchronization, and network communication. For this our vehicles are Java (which has features other languages usually leave to the operating system interface) and the Unix operating system. Most newer large-scale computer systems use the Unix operating system, particularly in network applications.
The course also introduces a few common data structures and algorithms, as well as program design and other software development issues.
The following is an approximate list of topics to be covered.
Email chaynes@indiana.edu with questions or comments about this course web.
All material on this web is Copyright © 2000 by Christopher T. Haynes.