MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Declarative Programming Across the Undergraduate Curriculum

Download:
Download as a PDF | Download as a PS
by Amr Sabry
http://www.cs.indiana.edu/~sabry/papers/fun-prog-educ.ps
Add To MetaCart

Abstract:

In its ultimate form, declarative programming provides solutions to problems using only a statement of the problem as the program. Historically this level of abstraction has been associated with specialized programming languages, but it is now routinely used by both students and professional programmers in a variety of contexts, programming languages, and courses. Despite the pervasiveness of declarative programming in a typical undergraduate curriculum, the exposition is based on isolated examples with no common principles. We argue that the principal foundation of declarative programming is abstraction. In many cases, providing the right data and control abstractions for the problem at hand requires the use or design of a domain-specific language, but in other cases, a simple library or datatype definition does the trick. Thus we argue that the key to effective use of declarative programming in the classroom is to teach abstraction in programming at several levels: an introductory course should focus on defining abstraction in the computer science sense of separating concerns and representation independence, and then on finding the right abstractions to simple programming problems; capstone courses should relate the importance of abstraction in modern software engineering practice, and may even provide experience in designing and implementing sophisticated abstractions in the form of domain-specific languages. These courses at the two ends of the curriculum capitalize on the existing base of declarative programming examples in courses such as compilers, user interfaces, databases, distributed systems. For concreteness, the paper provides several code examples and the outline for an existing introductory course that teaches the principles of declarative programming using machine language, assembly language, and Java.

Citations

161 The Verilog Hardware Description Language – Thomas, Moorby - 1991
90 Modern Compiler Implementation – Appel - 1998
48 DrScheme: A Pedagogic Programming Environment for Scheme – Findler, Flanagan, et al. - 1997
26 Programming with Fudgets – Hallgren, Carlsson - 1995
6 An Invitation to Computer Science – Schneider, Gersting - 1995
1 Putting operatinal techniques to the test: A syntactic theory for behavioral Verilog – FISKIO-LASSETER, SABRY - 1999