A hybrid approach to applying mathematical reasoning in computer science courses

Joan Krone, Joe Hollingsworth · Journal of computing sciences in colleges · 2013

Is it possible to excite students about learning the mathematical principles that underlie high-quality software? Can we teach them to apply these principles using modern, internet-based software tools? Can this be accomplished without displacing existing content? The purpose of this workshop is to explore these questions in the context of what our students need to know about mathematical reasoning. Those who attend will examine pedagogical principles, teaching tools, and classroom exercises that have been tried and shown to work in a variety of courses. We will take a hands-on approach to the preparation of materials to use at various levels of the curriculum in order to promote the application of mathematical reasoning to the design and creation of correct software. For beginning level courses we will look at exercises that encourage students to reason about what values the variables in their programs should have at various states. The exercises promote careful design and precise description of what programs are supposed to do so that it is possible to reason about whether those programs satisfy their requirements. We will use a collaborative approach to the application of mathematical reasoning so that students will participate first in a small group or pair and then at the class level thereby learning how to express their ideas and to understand those of others. For upper level courses we will stress modular design and development, showing the importance of being able to establish the correctness of individual components that can be combined to build larger programs. Most importantly, we use exercises to show that once a component has been certified correct, that component can be used in larger programs using only the specifications for that component and that the larger program can be reasoned about without the need to know implementation details for the smaller component(s). These modular reasoning principles are especially important in software engineering and for principles of programming languages. We will provide materials to be used as part of existing courses, rather than proposing a single new course. The workshop is not intended to simply deal with discrete math concepts, but rather to talk about how mathematical reasoning can be used throughout the CS curriculum. In particular we will see examples of how reasoning can be used in beginning programming courses, such as CS1, as well as intermediate CS2 classes. We have specific suggestions for Software Engineering and Theory of Programming Languages among upper level courses.

Read the paper · More papers on PaperTik