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.
What if I already know Java? Should I take
CS210X may be for you. Check out the FAQ, then contact the instructors if you have further questions.