Basic proof skills of computer science students

  • Pieter H. Hartel
  • Bert van Es
  • Dick Tromp
From Transistors to Computer Architecture
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1022)


Computer science students need mathematical proof skills. At our University, these skills are being taught as part of various mathematics and computer science courses. To test the skills of our students, we have asked them to work out a number of exercises. We found that our students are not as well trained in basic proof skills as we would have hoped. The main reason is that proof skills are not emphasized enough. Our findings are the result of a small experiment using a longitudinal measurement of skills. This method gives better insight in the skills of students than more traditional exam-based testing methods. Longitudinal measurement does not allow the students to specifically prepare themselves for particular questions. The measurements thus relate to skills that are retained for a longer period of time.

In our Department, fierce debates have been held in the past discussing such issues as “what proof skills do our students have?”. An important aspect of our work is that it tries to find evidence to help answer to such questions. Research such as ours is rare in the field of teaching mathematics and computer science.


Functional Programming Inductive Proof Proof Step Progress Test Inductive Definition 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. S. Bird and P. L. Wadler. Introduction to functional programming. Prentice Hall, New York, 1988.Google Scholar
  2. 2.
    A. J. Field and P. G. Harrison. Functional programming. Addison Wesley, Reading, Massachusetts, 1988.Google Scholar
  3. 3.
    D. Gries. Improving the curriculum through the teaching of calculation and discrimination. Education and computing, 7(1,2), 1991.Google Scholar
  4. 4.
    R. Harrison. The use of functional programming languages in teaching computer science. J. functional programming, 3(1):67–75, Jan 1993.Google Scholar
  5. 5.
    P. H. Hartel and L. O. Hertzberger. Paradigms and laboratories in the core computer science curriculum: An overview. Technical report CS-95-03, Dept. of Comp. Sys, Univ. of Amsterdam, Jan 1995.Google Scholar
  6. 6.
    J. L. Hein. A declarative laboratory approach for discrete structures, logic and computability. ACM SIGCSE bulletin, 25(3):19–24, Sep 1993.Google Scholar
  7. 7.
    P. B. Henderson and F. J. Romero. Teaching recursion as a problem-solving tool using standard ML. In R. A. Barrett and M. J. Mansfield, editors, 20th Computer science education, pages 27–31, Louisville, Kentucky, Feb 1989. ACM SIGCSE bulletin, 21(1).Google Scholar
  8. 8.
    E. L. Lehman. Nonparametrics: Statistical methods based on ranks. Holden & Day, San Francisco, Calofornia, 1975.Google Scholar
  9. 9.
    C. Morgan. Programming from specifications. Prentice Hall, Hemel Hempstead, England, 1990.Google Scholar
  10. 10.
    D. L. Parnas. Education for computing professionals. Computer, 23(1):17–22, Jan 1990.Google Scholar
  11. 11.
    S. L. Peyton Jones. The implementation of functional programming languages. Prentice Hall, Englewood Cliffs, New Jersey, 1987.Google Scholar
  12. 12.
    E. S. Tan. A stochastic growth model for the longitudinal measurement of ability. PhD thesis, Dept. of Maths. and Comp. Sys, Univ. of Amsterdam, Dec 1994.Google Scholar
  13. 13.
    Th. J. M. (Dick) Tromp. The acquisition of expertise in computer programming. PhD thesis, Dept. of Psychology, Univ. of Amsterdam, Sep 1989.Google Scholar
  14. 14.
    A.J. Turner. A summary of the ACM/IEEE-CS joint curriculum task force report: Computing curricula 1991. CACM, 34(6):69–84, Jun 1991.Google Scholar
  15. 15.
    A. G. van Asch. To prove, why and how? Int. J. Mathematical education in science and technology, 24(2):301–313, Mar 1993.Google Scholar
  16. 16.
    J. F. A. K. van Benthem, H. P. van Ditmarsch, J. Ketting, and W. P. M. Meyer-Viol. Logica voor Informatici. Addison-Wesley Nederland, Amsterdam, 1991.Google Scholar
  17. 17.
    K. van den Berg. Software measurement and functional programming, PhD thesis, Twente technical Univ., Jun 1995.Google Scholar
  18. 18.
    P. L. Wadler. How to replace failure by a list of successes, a method for exception handling, backtracking, and pattern matching in lazy functional languages. In J.-P. Jouannaud, editor, 2nd Functional programming languages and computer architecture, LNCS 201, pages 113–128, Nancy, France, Sep 1985. Springer-Verlag, Berlin.Google Scholar
  19. 19.
    R. L. Wainwright. Introducing functional programming in discrete mathematics. In M. J. Mansfield, C. M. White, and J. Hartman, editors, 23rd Computer science education, pages 147–152, Kansas, Missouri, Mar 1992. ACM SIGCSE bulletin, 24(1).Google Scholar
  20. 20.
    U. Wolz and E. Conjura. Integrating mathematics and programming into a three tiered model for computer science education. In D. Joyce, editor, 25th Computer science education, pages 223–227, Phoenix, Arizona, Mar 1994. ACM SIGCSE bulletin, 26(1).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Pieter H. Hartel
    • 1
  • Bert van Es
    • 1
  • Dick Tromp
    • 2
  1. 1.Faculty of Mathematics and Computer ScienceUniversity of AmsterdamSJ AmsterdamThe Netherlands
  2. 2.Dick Tromp Formerly at SCO-KIOOFoundation Centre for Education Research at the University of AmsterdamThe Netherlands

Personalised recommendations