This course is an introduction to computing that focuses on the principles of object-oriented programming using design patterns. Computational problem-solving and the accompanying programming methodology are taught using progressively richer subsets of the Java programming language. Program design concepts such as structural and behavioral abstractions are key elements in building software systems that are correct, extensible, and robust. Design patterns provide a vocabulary for codifying these abstractions.
The course emphasizes an incremental, test-driven approach to writing programs. Writing tests before code provides a precise description of how each unit of code must behave, promotes cleaner design, and provides a test harness for confirming that a program is correct. This test harness prevents errors from being introduced as a program evolves. Incremental, test-driven design is the essence of state-of-the-art "agile" software engineering methodologies such as Extreme Programming.
Object-oriented programming (OOP) is the most pervasive paradigm for constructing modern software systems. Computer professionals and non-professionals alike will require a solid background in OOP to understand and effectively utilize these systems. This course is recommended for Engineering and other non-COMP majors, plus students who have yet not committed to a COMP major.
This course is a pilot for the first semester of a new two-semester introduction
to computing. The second-semester course in the sequence (tentatively numbered
as COMP 202) will be offered in Fall '04. The new course sequence differs from
the existing COMP 210/212 sequence in two respects. First, the new course sequence
uses Java exclusively; it does not cover functional programming in Scheme. Second,
the new sequence is specifically targeted at non-COMP majors. COMP majors are
strongly encouraged to take the existing COMP 210/212 sequence that covers functional
as well as object-oriented programming. Students who take the new all-Java sequence
and subsequently decide to major in COMP can enter the major by taking a short
1-hour course on functional programming in Scheme that will be offered each
spring starting in Spring '05.
Comp201/Comp202 vs. Comp210/Comp212: