It has been pointed out to me that
Discrete Mathematics is a difficult course to teach especially when it is
offered during the freshman year. I was told that the materials are
too abstract and dry for most students. In addition, many students
seem to perceive the list of topics very disconnected. As a computer
scientist and a person who enjoys Discrete Math, this is
a rather sad situation. We can say, "Discrete Math will be extremely
useful when you learn more advanced subjects in Computer Science." This
does not seem to convince and motivate many students. While the discussion on what to
cover in a Discrete Math course and what kind of examples are more effective is an important one, the focus of this essay will be on how to teach Discrete Math, esp., how to connect the topics, hoping that more students are convinced of the usefulness of Discrete Math very early in the course.
The College of New Jersey, there is an on-going college-wide transformation of all the programs and curricula into more learning-centered
ones (cf. teaching-centered ones) [e.g., Fink 2003, Huba and Freed, 2000].
Although a lot of questions and issues have been raised, I acknowledge
that I do want to run my classes better and my students perform better. That
is, there certainly are things that can be improved. The main thing I tried in the past few years
is to re-examine and align the learning goals, student assessment, and learning
activities of my courses (regrettably, my older syllabi failed to integrate
assessment tools that would directly check learning goals). So, I am
inclined to discuss teaching Discrete Math also in the context of the transformative
change at my institution. Note that our Discrete Math is now a sophomore
course (moved from Freshman a few years ago).
Since I am new to teaching Discrete Math (since Fall 2003), there will
be a lot of things I may be missing and I will need to learn. However,
I felt that I must write this essay just to clarify my thoughts and to hopefully
share them with some other people.
2. My Approach: Discrete Math for Formal Modeling of the Real World
It is not my
intention to insist or defend the following aspect as the core of Computer
Science: "to transform real-world problems into computational ones and solve
the computational problems" (such a discussion would belong elsewhere). However,
I wanted to start from some general property of Computer Science which can
be used in designing a Discrete Math course (in the spirit of learning-centered
approach) and also wanted to emphasize the connection between computation
and the real world.
The way I perceive Discrete Math is a means to model real world, formally.
That is, I view Discrete Math as the first step of transforming real-world
problems. This places Discrete Math at a unique position in a Computer
Science curriculum, in contrast to many other courses which focus on solving
computational problems. When students want to write a
program to solve some real-world problem, they will need to apply Discrete
Math at some point. For example, I asked my students, "in order to write a program
to automatic routing software (like the one on MapQuest or a GPS), how would
you represent the necessary information? What about the game of musical chairs,
social dance steps, or foreign policies?" At the heart of such a modeling
process, I see the logic-structure
connection (at a more abstract level than data structures). That is, the essence of mathematical modeling can be seen
as specification of a (mathematical) structure involving sets, relations,
and/or functions, through logical statements [e.g., Enderton, 2000 and Crossley
et al., 1990; related ideas also in Suppes, 2002].
The idea of logic-structure connection is implicit in many areas; but it
is rarely explicitly discussed (except mainly in mathematical logic). But
there seem to be many advantages in placing the logic-structure connection
at the heart of representing real-world objects/phenomena, as described below.
Since sets, relations, and functions are components of structures and
they can be specified by logical statements, all these basic components of Discrete
Math will be in need every time students model something.
The topic of algebraic structures fits naturally as a special case of
structure, i.e., an operational structure with a single carrier/set with
some logical conditions on the operations, e.g., x + (y + z) = (x + y) + z for al x, y, z
(in a certain set). More generally, any logical statements would
specify a collection of structures; conversely,
a structure satisfy (typically multiple) collections of logical statements.
Pretty much all of other Discrete
Math topics can be discussed in connection to this general scheme. For
example, groups as an operational structure, orderings as relational structure,
Boolean algebra (as both operational and relation structures), graphs and
trees with slightly different logical conditions, languages/automata as tuples,
discrete probability involving sample space, etc.
Even proofs can be
viewed as a sequence of logical statements that is consistent with the intended collection of structures.
Further more, logical specification is an important idea in software specification [e.g., Laeckx, et al., 1996].
One aspect I tend to emphasize is that (i) there are in general multiple ways
to specify a structure and (ii) a collection of logical statements generally
have multiple satisfying structure. Although this could complicate the
use of logic-structure connection, I believe it is important to emphasize that precise
and correct representation of objects/phenomena is generally difficult (and
in many cases impossible). This seems to be useful for students to develop
a critical attitude and appreciate good communication as well as insight
into program specification. If the idea of logic-structure connection
is taken seriously, then it can be considered as a bonding principle behind
all the topics and may justify a Discrete Math course on its own (although I am not against
the just-in-time approach to Discrete Math).
As for the organization of the materials, I adopt a "spiral" approach,
starting from informal discussion of logic-structure connection (with no
math symbols) and gradually introducing formal notation. Such an approach
may not work well with the traditional course organization of materials divided
into topics (Hein, 2003 is somewhat different in this respect). However,
the spiral approach seems to work well with the idea of logic-structure connection
(e.g., exercise (Spring 2003)).
In my course, the notion of "sets" are visited multiple times at
various points in the semester. Such a non-traditional way of introducing
materials has some potential drawbacks. For instance, it is not very
straightforward to use currently available textbooks. However, there
is no textbook focusing on the logic-structure connection anyway (I list
Hein, 2003 as our text, or more as reference). In addition,
at the end of the semester, I received a few comments that the informal part
of the course was vague. But I do not necessarily take those comments
negatively. Those students must have appreciated formal representation.
I think that students in general can understand and appreciate what we
can do with the logic-structure connection. The overall response of
the students has been positive. Naturally, there still are many things
I want to improve on. But I feel that this is probably a good start
and an interesting approach for discussion.
3. Non-Exam-Type Assessment
I feel that exams are not the way I want
to assess students (cf. Huba and Freed, 2000). I tried to integrate
students' self-evaluation as part of student assessment (with calibration
by the instructor) starting Fall 2003. It was difficult for multiple
reasons (I would be happy to discuss these if I am asked for the information).
Overall, though, the experience was very positive. Not only I
was able to confirm that this type of assessment is possible within the standard
course schedule, but also that the approach can encourage many students to
realize where they are and try to achieve more. I will be pursuing to improve this apsect in my other courses.
My Discrete Math course (CMSC210 Discrete Structures of Computer Science)
pages for Fall 2003