CMPSCI 187: Programming With Data Structures
David Mix Barrington
Fall, 2012
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.)
As part of the university's supervision of General Education, departments
are required every five years to renew each course's gen-ed designation,
explaining exactly how the course fulfills the goals set out for the
designation by the General Education Council. As part of this review, I
learned that instructors are required to address this question in their
syllabus, explaining the learning goals for the course and how the gen-ed
goals are being met.
Learning Goals for CMPSCI 187:
- 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.
- Learn about the specification, use, and implementation of important
data structures such as stacks, queues, lists, search trees, and graphs.
- 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:
- (a) 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.
- (b) Application and intergration 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.
- (c) (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.
- (h) (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.
- (i) 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.
- (j) 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.
Last modified 10 September 2012