Lecture Time and Location: 12-12:50 or 1-1:50, AK 116
CS2102 is an intermediate-level course on program design. CS1101/1102 focused on designing single-task programs for correct behavior. In CS2102, we begin to consider multi-task programs, more complex data, and other design goals—such as maintainability and scalability—without sacrificing correct program behavior. The course examines interactions between data structures, algorithms, invariants, and object-oriented code structure in the pursuit of good program design. All programming in the course is in Java, but the course does not assume prior Java experience. While the course covers certain issues specific to Java and object-oriented programming, the general principles apply broadly to most programming languages.
CS2102 is not an introductory programming course! The course assumes programming background at the depth of CS1101 (or CS1102). This includes working with tree-shaped data, programming recursively, and the test-first design process taught in 1101/2. Students who have not had CS1101 or CS1102 should consult with the instructor before attempting the course; in particular, CS1004 does not cover the expected background for CS2102. Some students from CS1004 have taken CS2102 successfully in the past, but this requires additional effort early on to catch up on terminology, material, and practices from CS1101 that were not in CS1004.
FAQ
I've had AP CS in Java. Should I take CS2102?
Yes. CS2102 is neither an introductory course nor a Java-programming course. It's a design course that happens to use Java. It is designed to provide new material to students with AP, while also being appropriate for students coming out of CS1101. AP students should start seeing new material or deeper treatment of prior material in the second week. Assignments and labs that cover core Java programming will usually have an advanced alternative for those with prior Java experience. Our goal is to keep everyone learning, regardless of prior Java experience.
The section I want is full. Can I still get into the class? Can I switch into a full section?
If you want to be in the class or in a particular section, get on the waitlist. Students on the waitlist have priority.
In general, we attempt to get everyone who wants to take the course into some section. Section enrollments are, however, limited by fire codes and the number of seats in the lab rooms, so this doesn't always work out. Please make every attempt to fit into one of the existing sections. Contact Professor Fisler if you can make a lab time, but only the other lecture time than the one associated with that lab.