Program design is the study of systematic thought, planning, and universally useful problem-solving skills applied in the setting of programming and computation.
CMSC 132A studies the class-based program design and the design of abstractions that support the design of reusable software and libraries. It covers the principles of object oriented program design, the basic rules of program evaluation, and examines the relationship between algorithms and data structures, as well as basic techniques for analyzing algorithm complexity.
The course is suitable for both CS majors and non-majors. It assumes that student has been introduced to the basic principles of program design and computation (e.g. Systematic Program Design I).
Caveat: Note that CMSC 132A is being offered on a trial basis as an alternative introductory course sequence. You must have taken CMSC 131A previously. Students who complete the 131A-132A sequence will be fully prepared for all subsequent courses that list 131-132 as prerequisites.
The goal is to help you understand the principles of class-based program design using an object-oriented programming language(s), not just Java. Java is used so we can learn how the principles are used in practical applications, and gives us an opportunity to discuss the strengths and weaknesses of languages and paradigms.
Assumptions: The course assumes proficiency with the systematic design of programs and some mathematical maturity. It demands curiosity and self-driven exploration and requires a serious commitment to practical hands-on programming.
Disclaimer: All information on this web page is tentative and subject to change until the start of the semester.
Mar 7, in class
Apr 25, in class
May 17, 8–10 am