Papers on CS Education
(and panels and position statements)
One of my main interests is the challenge of teaching programming. Among
the many ongoing debates within the computer science education community,
is the one concerning the place of formal methods in the curriculum. As
a C-programming experimentalist/hacker who advocates their importance, I
occupy a relatively unique position.
My approach has been bottom-up in two senses. First, I have focused most
of my attention on the elementary level (courses for non-majors, such as
Core 5, and CS 1&2, e.g. CIS 1.10 and CIS 15) and on students with extremely
weak backgrounds in math and computing.
Secondly, because of this focus, I have had to develop approaches to formalism
that naturally flow out of the operational perspective of these students.
I have met with some success in this regard. I helped develope a version
of the Brooklyn College Core Math/CS course that used logic as a unifying
theme. This version was for a time widely used and has had a great impact
on design of the current version of the course. When I was coordinator of
this course, students in several of its sections became able to construct
simple, yet significant program correctness proofs. These were the non-majors!
From 1993-1996, my focus was on the second semester programming course, which introduces
C to students who have been taught Pascal or C in a strictly operational fashion.
But here too I found ways of successfully broadening the students'
view of programming. Thus, my contribution to this debate, which in some
ways is a debate about the nature of the discipline itself, has been to
demonstrate that this material is accessible to all students and to develop
effective methods for its presentation.
Back to David Arnow's CS Education Page.