CMPSCI 187: Programming with Data Structures

Marc Liberatore and John Ridgway
Spring 2015 (archived)

General Education Statement

CMPSCI 187 is an “R2” General Education course, fulfilling one of the graduation requirements for any bachelor’s degree at UMass. (In practice, nearly all students in the course will have already filled this requirement with a mathematics course or with CMPSCI 121, but exceptions are possible.)

Learning Goals for CMPSCI 187:

  1. Develop programming maturity in Java beyond that developed in CMPSCI 121, so that students are able to write and validate large programs with multiple classes.
  2. Learn about the specification, use, and implementation of important data structures such as stacks, queues, lists, search trees, and graphs.
  3. Begin the study of the mathematical analysis of algorithms, so that students may compare the worst-case asymptotic running times of different algorithms solving the same problem.

Overall General Education Goals:

The General Education Council has listed ten overall learning goals for General Education courses, four of which are primary for CMPSCI 187 and two of which are secondary:

  1. Fundamental questions, ideas, and methods of analysis: Data structures and their interplay with algorithms form a fundamental concept of computer science and arguably of mathematics.
  2. Application and integration of these methods to real world problems and contexts: Students learn to create software that can affect the real world.We also begin the study of software engineering, which is the body of knowledge used by people to create software, both singly and in teams.
  3. (secondary) Creative, analytical, quantitative, and/or critical thinking: Programming is a creative process and critical analysis of programs is fundamental to the process of creating software that is correct and reliable.
  4. (secondary) Working effectively and collaboratively in groups: We assign discussion problems to pairs, and also study how language concepts and programming practice can enhance collaboration in the creation of software.
  5. Information Literacy: After CMPSCI 187 students are much better equipped to communicate effectively about information technology, having hands-on experience with the creation of software in a general-purpose language.
  6. Technological literacy: After CMPSCI 187 students are much better equipped to communicate effectively about technology, having direct experience with the creation of software.

Specific Goals for the R2 Designation:

The Council has also set out specific goals for the Analytic Reasoning courses within General Education, which CMPSCI 187 addresses as follows:

  • Numeracy skills: Students learn to better understand quantitative information by learning techniques to manipulate it with computer programs. They learn to test and validate programs, reinforcing a critical perspective toward the ways in which information is manipulated.
  • Mathematical and quantitative reasoning: Writing correct and reliable programs requires confidence that the program will have the desired behavior, a confidence that comes from both testing and analytic validation. While formal mathematical proof is not stressed in this course as it is later in computer science, the tools of analysis for programs are essentially those of formal mathematics. In addition, students learn asymptotic analysis in order to measure the resources used by programs — this mathematical topic is likely to be new to them.