EXPLORING FORMAL METHODS

IN THE EARLY

COMPUTER SCIENCE CURRICULUM

 

AN INFORMAL WORKSHOP

SATURDAY SEPTEMBER 16

9:15 -- 5:00

at

THE GRADUATE CENTER OF THE CITY UNIVERSITY OF NEW YORK

sponsored by
The National Science Foundation
The United States Department of Education
and
The City University of New York

 
Program and Organizing Committee
D. Arnow
D. Troeger

WORKSHOP PROGRAM

 
 

THE PURPOSE OF THE WORKSHOP is to discuss the introduction of formal methods in the early computer science courses. Broad areas to be covered are: desiderata and approaches for the early introduction of rigor and mathematics, experiences with such approaches, and the overall appropriateness of formal methods for the foundation curriculum.

The workshop itself is devoted to presentation and discussion of position papers; it is hoped that one outcome of the workshop will be formation of a regional formal methods computer science curriculum working group.
 
 

BREAKFAST
9:15

WELCOME: D. TROEGER
9:45


Some Perspectives on the Introductory Courses in Computing

A. Joe Turner
Clemson University
10:00

The number of different approaches to introductory computing courses continues to increase, both in terms of the content of the courses and the teaching/learning paradigms that are used. Variations on traditional programming-oriented courses include survey courses, integrating some concepts from advanced courses into the introductory courses, teaching fundamental concepts without using a programming language, and emphasizing theory and formal methods. More recently there has been increasing interest in teaching/learning paradigms such as peer learning, student-driven course content, and just-in-time learning.

This talk will provide some perspectives on various approaches to the introductory courses, both content and teaching/learning paradigms, that are currently being used or discussed. Some considerations for those who are proposing new approaches will also be included.
 
 

Formal Methods in the Early CS Curriculum

Henry M. Walker
Grinnell College
currently on leave at
The University of Texas at Austin
10:30

The role of formal methods in the early CS curriculum is closely tied to the goals of the first courses. This talk begins by considering some of these goals. Also, since the term ``Formal Methods'' may mean different things to different people, the talk presents a working definition of that term. The talk then examines the relationship between curricular goals and formal methods, concluding that the two areas complement each other well. With this background, the talk identifies several approaches for including formal methods in the first few years of the undergraduate CS curriculum, giving examples of each approach and considering appropriate support requirements.
 
 

Formal Methods, Design, and Collaborative Learning in CS1

Douglas R. Troeger
The City College of New York
11:00

The first course in computer science at CCNY (CSc 102) has been restructured with NSF support as an introduction to problem solving and programming, based on well-known principles of program verification. The main goals of the new course are to develop students' skill in designing programs, and to equip students with logical tools enabling them to explain how and why their programs work. The course seeks to empower students to reliably design, refine, and certify their programs by drawing their attention to the details of the logic underlying the programming process.

Our experience has been (i) that beginning students can master a formal problem-solving methodology which is at once powerful and practical; (ii) that although the coverage of the syntax of the course language (Pascal) has been reduced, students' ability to use what they were taught to design programs dramatically exceeds that achieved by our students when exposed to more standard approaches; (iii) that students who learn the style of program development presented in the course are able to explain how and why their programs work.

In this talk, we describe CSc 102, discuss what we have learned about teaching such material to beginning students, and hint at the as of yet unrealized potential the course represents for improving the subsequent CS curriculum at City College. We also describe our work to export the course to the community colleges of CUNY, with support from the FIPSE program of the U.S. Department of Education.

COFFEE BREAK
11:25
 


Formal Methods in Community College Computer Science: Motivation and Experience

Loreto Porte
Hostos Community College
11:45

We discuss our participation in the City College/FIPSE program to include formal methods in the introductory programming classes.
 
 

Formal Methods Mean Math-- A Serious Challenge

Carroll Zahn
Pace University
12:10

Computer Science needs mathematical concepts for the correctness of algorithms, the properties of data structures, and the efficiency of programs. On the other hand, many high school graduates are inadequately prepared in mathematics, and college mathematics does not emphasize logic, graph theory and probability. We hope to initiate a discussion of how to meet this challenge.
 

Formal Methods Considered [Help | Harm]ful:
Engaging Students in the First Year

Owen Astrachan
Duke University
12:35

For historical reasons, introductory Computer Science courses typically come in two flavors: CS1 and CS2. Together these courses serve as the introduction to the field for potential majors. The first course, CS1, often attracts a much broader audience. In this talk, I take the view that the entire first year, as opposed to the first course, is the proper forum for discussing the integration of formal methods. I will also address the scope of formal methods in the first year: what do we mean when we use the phrase ``formal methods''?

Is predicate or propositional calculus necessary? Are formal methods a discipline, a way of thinking, or a technique? What is compelling about these methods and how do we use them to engage students? I maintain that engagement is critical. We find ourselves with a full plate in the first year. We are expected to introduce students to (among other things): programming, data structures, software-engineering, algorithm analysis, complexity, ethics, design, specification, documentation, object-oriented methods, and human-computer interaction. Somewhere in this crowded curriculum we want to find space for formal methods.

To engage students and to do a service to our discipline we cannot view the full plate as a smorgasbord. The problem with smorgasbords (and full plates) is that it is too easy to dismiss a food as unpalatable or claim a full stomach. As in some schools of food preparation, I take the view that presentation is paramount. Formal methods, like good spices, enhance the curriculum rather than adding to it. I hope to raise some questions (and get some answers) so that as we leave this workshop we can all say ``now we're cooking.''
 

LUNCH
1:00
 
 
 
 

Baiting the Formal Hook with C++ Objects

Jonathan G. Rossie, Jr.
Indiana University
2:00

We will look at techniques intended to teach C++ multiple inheritance in a first-year course in computer science. This daunting subject is reduced to a manageable set of pencil-and-paper skills---techniques derived from our recent formal model of C++-style multiple inheritance. Students learn concrete skills based on formal methods.

The formal model will be part of the OOPSLA'95 proceedings. It can be found at the following URL:
http://www.cs.indiana.edu/hyplan/jrossie/papers/oopsla95.ps.gz
 

Teaching Combinatorics and Graph Theory with Mathematica

Steven Skiena
SUNY Stony Brook

Combinatorics and graph theory are subjects of increasing importance, and are interesting and relevant to students on a variety of different levels. In this talk, we describe our system Combinatorica, as well as other software for discrete mathematics. We then proceed to show, as an example, how some of the properties of permutations can be made to come alive with Combinatorica. We conclude by presenting a variety of other interesting problems which can be approached via Combinatorica in a non-traditional way.
 
 

Introducing Practical Formal Methods in the Early Curriculum

Michael G. Hinchey
New Jersey Institute of Technology
and
University of Limerick
2:50

Formal methods are now recognized as highly successful in controlling complexity and assuring the reliability of complex computer systems. Further, they are being recommended, and indeed mandated, in more and more international standards, so it is critical for graduate engineers (both software and hardware) to be trained and conversant in their application.

However, the standards and rationale of formal methods education are questionable. Many practicing software engineers, even after learning something about formal systems, have little skill in using a formal method. Many seem happy to take to heart both criticisms and exaggerations regarding what formal methods can and cannot do. Students are often lead to believe that formal methods are difficult to use, involve complex mathematics, and basically require the use of Greek symbols and hieroglyphics to specify trivial systems such as Birthday Books and Library Systems (which could have been hacked together in a fraction of the time).

In addition, many students lack the basic prerequisites for applying formal methods in practice -- basic ability with discrete mathematics and logic, the ability to abstract and build simple models, and the ability to derive rigorous proofs.

The potential of teaching formal methods (and discrete mathematics) as a way of developing attitudes and analytical skills that can be of immense value in all areas of computing is not understood. We argue in favor of a practical approach to the introduction of formal methods, involving case studies and hands-on experience.
 
 

COFFEE BREAK
3:15
 
 

Computing is Calculating with Scheme

Matthias Felleisen
Rice University
3:30


Our introductory course at Rice teaches computing as an extension of grade school arithmetic and high school algebra. In analogy to algebra text books, which define functions (over numeric operations) and asks students to evaluate them, students define functions (over basic data operations) and ask computers to evaluate expressions over these definitions. Since students are used to evaluating algebraic expressions from high school, they quickly understand the execution model of computers---in terms of programs instead of bits and bytes. This understanding is a significant aid in constructing, testing, and debugging programs.

Our course also teaches the systematic construction of programs based on the input and/or output data. Since most simple programs process algebraic data, we can teach program design as the definition of homomorphisms, without discussing the background. In our experience this approach teaches students why a program must have a certain shape. We are now developing guidelines for translating such programs into C/C++ programs to facilitate the transition between our introductory courses and subsequent portions of our curriculum.
 

Teaching Programming Languages Using a Scheme-based Executable Formalism

Christopher T. Haynes
Indiana University
3:55


The roots of the distinction between program and data reviewed along with numerous trends that are weakening this distinction. The implications of the equivalence of program and data are explored for programming methodology, formal methods, and programming language pedagogy. The power of meta-linguistic abstraction is emphasized. The properties of a suitable meta-language, such as Scheme, are reviewed. This enables remarkably formal semantics to be presented in a hands-on manner. It is argued with illustrations that programming language material can and should be introduced very early in computer science education and used throughout.

(Slides available via http://www.cs.indiana.edu/hyplan/chaynes.html.)



High-Confidence Technology

Shiu-Kai Chin
Syracuse University
4:20

One of the principal challenges to creating high-confidence systems, be they global-scale information infrastructures or high performance/scalable systems, is they must operate in a known and trustworthy manner. This requires the correct and timely integration of specifications and designs at all levels of detail. The needs of high-confidence systems have led to the development of mathematical tools sometimes known as ``formal/high- assurance design methods.'' These tools have broad application to hardware, software, and system design. The successful development and deployment of high-confidence design methods could have as much impact on system design as the development of very-large- scale-integrated (VLSI) circuit technology had on computer design. The purpose of this talk is to advocate for education in high-confidence design methods which lead to their industrialization and incorporation into standard engineering practice.
 

CLOSING REMARKS:D. ARNOW
4:45

END OF WORKSHOP
5:00