ITiCSE 2002 Working Group Proposal

Materials Development in Support of Mathematical Thinking

Peter B. Henderson
Department of Computer Science and Software Engineering
Butler University
Indianapolis, Indiana 46208, USA
phenders@butler.edu

1 Topic Overview/Motivation

There is evidence that rigor is fading from computer science curricula [5, 6, 9]. Several reasons for this include: a broader perception of the discipline of computer science (e.g., word processing to heavy mathematical applications), pressure to increase enrollments at universities, and faculty who don’t have necessary resources or guidelines for teaching more rigorous computer science courses. An objective of this working group is to help reverse this trend by directly addressing the problem.

The ITiCSE 2001 working group "Striving for Mathematical Thinking" accomplished several goals, including identifying a working definition of mathematical thinking, specifying three areas of focus regarding mathematical thinking in computer science education (i.e., gathering supporting evidence, basic ideas underlying mathematical thinking, and ways to promote mathematical thinking), and the need for materials in support of the instruction of more mathematically oriented computer science courses, especially in the first two years. Accordingly, an important next step is the collection, categorization and development, and dissemination of instructional materials.

2 What is Mathematical Thinking?

In the same way that many introductory students believe "CS = programming", some CS educators equate mathematical thinking with formal methods. Our working definition of mathematical thinking is "Applying mathematical techniques, concepts and processes, either explicitly or implicitly, in the solution of problems." Using this very general definition every problem solving activity can be viewed as an application of mathematical thinking. However, our goal is not to trivialize mathematics in computer science education, but rather to raise the level of consciousness of the important role mathematics can play in the education of our students. Our hypothesis is that an undergraduate program rich in mathematics, not just mathematics courses, but mathematics integrated throughout the curriculum, will produce software developers who are better problem solvers, who can think more generally, and who can learn new concepts quicker and are lifetime learners. This hypothesis is not yet proven, but there is significant evidence that facility with mathematics is important [?]. Indeed, one eventual goal, and a potential future working group, is the development and undertaking of studies that support or refute this hypothesis.

To make this discussion more concrete, consider one concept: iteration invariants. In current curricula this concept is introduced once or twice, but rarely reinforced. Also, the connections with mathematical logic are usually not made. What if mathematical logic was introduced early, in the same way that foundational calculus is introduced early in engineering curricula, and iteration invariants were reinforced in all computer science courses, both intuitively and more formally as an application of mathematical logic, in the same way that foundational calculus is used to teach/understand engineering principles. After four years would students with this more mathematical perspective have a greater propensity to write correct, and debug faulty, iterations? We like to think so. In summary, mathematics, when taught and used properly, provides "clarity of thought".

3 Goals

This working group will apply the collective wisdom of the participants to develop instructional material for enhancing the role of mathematical thinking/reasoning in computer science education. Mathematical thinking plays a crucial role in computer science based problem solving, and heightened awareness of this synergistic relationship within the computer science education community will lead to the development of better software systems.

4 Materials Development

These goals will be the driving force for the development of instructional materials. The primary focus will be on the collection, organization and dissemination of resources for computer science educators, leading eventually to new textbooks that incorporate mathematical thinking.

There are currently numerous high quality discrete mathematics textbooks available. Many provide computer science based applications to illustrate the connections between the mathematics and computer science. This is a good start, but addresses only part of the problem. To make these connections real and useful for students, these important mathematical ideas and concepts must be incorporated into other computer science courses. Students must actually use and apply them to real design problems and in the development of software systems. This is very important in the first two years where the patterns of thought developed are particularly relevant. Mathematics should no longer be an afterthought.

We have begun to collect pedagogical resources in the form of problem sets that illustrate these connections, see [?]. This effort requires extensive input from computer science educators who understand and appreciate the role of mathematical thinking in computer science based problem-solving, and can articulate this in the collection, organization and development of resource material. One example is problems that promote a mathematical approach to algorithmic problem solving. We plan to work with David Ginat and others to translate(from Hebrew), organize and categorize an extensive collection of such problems. Peter Henderson has a collection of recreational mathematics problems and games that illustrate and reinforce important mathematical concepts such as logic, sets, functions, relations, inductive thinking, recursion, counting, graphs, etc. Many of these can be integrated into computer science courses, or used in discrete structures courses. These must also be organized and categorized for dissemination.

Most of the problems in [?] are algorithm development problems that can lead to programming assignments illustrating the importance of mathematical approaches. We plan to add extensively to this collection and to provide guidelines for computer science educators for making effective use of these resource materials. These problem sets will illustrate a wide range of application of mathematical thinking such as the rigorous development of algorithms/programs, understanding algorithms/programs and formulating arguments about the correctness and performance of algorithms/programs, identifying errors in algorithms/programs, and locating and correcting errors.

We also plan to work closely with other computer science educational efforts whose ideas have proven merit, especially if there is a mathematical common ground. One example is the component based software efforts of the Reusable Software Research Group[8] that won an IEEE Innovation in Education Award in 2000. This group has developed “mathematically based” languages and tools for specifying the behavior (functionality and performance) of software components, proven techniques for integrating these into the curricula, and numerous resources. We have already begun an exchange of ideas, and have invited members of the RSRG to participate in the proposed working group.

Another aspect is the collection, organization and dissemination of educational software and computer based activities that effectively illustrate mathematical thinking in the context of computer science. For example, a preliminary effort to convey the concept of iteration invariants is provided in Project Java (see the applets Computer Science Search Invariants and Visualizing Sorting Invariants) and there are numerous educational software tools/applets for visually illustrating key mathematically oriented computer science concepts such as algorithms that manipulate structures such as trees and list. Theorem provers such as JAPE have proven effective for teaching logic [7], and one day will most likely be an integral component of software development systems.

In addition to collecting, creating and organizing resources, the group will identify the needs for new resources and educational software. For example, creating educational software to illustrate a particular concept. Many of these might be suitable undergraduate or graduate software development projects.

All the resources collected, created, and organized will be made available on the web through links from the math-thinking groups home page. We plan to make effective use of the internet for the development and sharing of new resources. As new technologies emerge for the development, dissemination and sharing of resources they will be incorporated into this endeavor.

5 Proposer's Expertise (first person)

I have been actively involved in the effort in the United States and North America to get mathematical thinking as early as possible in the curriculum and to ensure mathematics is integrated into all computer science courses. Over the past 17 years I have developed, evolved and taught the mathematically based Foundations of Computer Science course (CSE-113), the first course for all computer science and computer engineering majors at the State University of New York at Stony Brook (see CSE-113 alumni survey ). And, I developed a rigorously oriented next course, Computer Science I that applies the mathematical, logical and problem-solving concepts to the development of software systems. At Butler University I am creating a similar, rigorous mathematics/problem-solving based software engineering and computer science curricula.

I was the convener of the ITiCSE 2001 working group “Striving for Mathematical Thinking” and the main contributing author of the resulting report to be published in a forthcoming issue of the SIGCSE Bulletin.

In the spring of 1999 I co-founded the math thinking discussion group which is actively working to influence the computer science education communities (and the Curriculum 2001 effort) views towards the role and importance of mathematics and mathematical thinking. I have served on numerous panels at national SIGCSE and MAA conferences, and regional conferences, run two National Science Foundation sponsored workshops on teaching foundations of computer science, have been a co-principle investigator of 3 National Science Foundation education grants addressing issues relating to teaching mathematics in the context of computer science. In addition, I have published articles on this and related topics, and have presented numerous talks at conferences and symposia. I was instrumental in formulating the concepts and ideas underlying the MAA CUPM report, which has subsequently influenced the mathematics component of the Computing Curricula 2001 Steelman Draft[11], and the forthcoming MAA Curriculum Foundations Project Summary Report.

6 Potential Participants

There are currently 45 members of the math-thinking discussion group, some of whom have attended ITiCSE in the past and plan to attend ITiCSE 2002. Interest in the role of mathematics in computer science curricula has increased significantly at computer science education meetings such as SIGCSE. Indeed, the membership of the math-thinking discussion group has almost doubled in the past year, with several new members joining through participation in the ITiCSE 2001 working group "Striving for Mathematical Thinking."

References

[1] Baldwin, D, and Henderson, P., math-thinking discussion group

[2] Baldwin, D. example math thinking problem sets

[3] Henderson, P.B.,Spring 1999 Stony Brook Foundations Course Alumni Survey

[4] Kelemen, C., Tucker, A.B, Henderson, P.B, Bruce, K., Astrachan, O., Baldwin, D., Skrien, D., Van Loan, C., Computer Science Report to the CUPM Curriculum Foundations Workshop in Physics and Computer Science

[5] Tucker, Allen B., Kelemen, Charles F., and Bruce, Kim B., "Our Curriculum Has Become Math-Phobic! ", Proceedings of the Thirty Second SIGCSE Technical Symposium on Computer Science Education, Charlotte, North Carolina, Feb. 21-25, 2001, pp. 243-247

[6] Kelemen, C., Tucker, A.B, Henderson, P.B, Bruce, K., Astrachan, O., “Has our curriculum become Math-phobic? (an American perspective)”, SIGCSE ITiCSE 2000 32, 3 (Sept 00), 128-131

[7] Aczel, J.C., Fung, P., et al, “Computer Science Undergraduate Learning Logic Using a Proof Editor”

[8] Long, T., Weide, B., et al, The Reusable Software Research Group

[9] Glass, Robert L., "A New Answer to 'How Important is Mathematics to the Software Practioner' ?", IEEE Software, November/December 2000, pp. 135-136

[10] Henderson, P.B, Baldwin, D, et al “Striving for Mathematical Thinking” ITiCSE 2001 working group report

[11] Computing Curricula 2001 Steelman Draft