Approaches to Teaching the Programming Languages Course

advertisement
Approaches to Teaching the
Programming Languages
Course
Pamela B. Lawhead
Department of Computer and Information Science
The University of Mississippi
Oxford, MS USA
lawhead@cs.olemiss.edu
Goal of the Course
To have students be able to answer
the question:
“What languages do you program in?”
With
“Any for which I understand the
paradigm and have a manual.”
The Facts
How Long: One Semester
 When: First Semester of Senior Year
 Prerequisites: Senior Standing in CS
 Text: "Principles of Programming
Languages: Design, Evaluation, and
Implementation" by Bruce J. MacLennan;
 Approach taken: Historical

The Facts
Traditional Lectures that focus on:
 History of Computing – with emphasis on languages
 Find that point where people become more important than
machines
 What did the people think that they were doing when they
were computing
 Who were each of the players
 Basic design features of a Programming Language
 Paradigm
 Syntax
 Semantics
 Translation Process
History of Computing using
Papers
Examples include: (DONE AS A LIBRARY ASSIGNMENT)
•Buchholz, W., "Fingers or Fists?" [1959]
•Book Review by S. Uchii: Alice Row Burks, Who Invented the Computer?
The legal battle that changed computing history, Prometheus Books,
2003. http://www.bun.kyoto-ac.jp/phisci/Newsletters/newslet_53.html
•Denning, P. "The Working Set Model For Programming Behavior" [1968] – block
structure
•Hoare, C.A.R. "The Emperor's Old Clothes" [1981] - Ada
•Hofstadter, Douglas, “Lisp: Atoms and lists, Lists and Recursion, and Recursion
and generality” (Hint: A series of three columns in Scientific American in
the mid 80s you might like to check all three of the articles) – Lisp
•Scripting: Higher Level Programming for the 21st Century John K. Ousterhout –
http://home.pacbell.net/ouster/scripting.html
•O'Reilly Time line: http://www.levenez.com/lang/history.html#06 Overwhelming at
first but a good introduction to the history.
The Power of Symbols

By relieving the brain of all unnecessary work, a good notation sets it
free to concentrate on more advanced problems, and in effect
increases the mental power of the race. A.N. Whitehead “Introduction to Mathematics”

The choice of orientation is not necessarily set in science by the
problem but by the mode of thinking. Though there are constraints,
there is no a priori essential epistemological way of seeing. Therefore
the role of cognitive mode and aesthetic sensibility plays a vital part in
the structure and style of the scientific process. Judith Wescheler
“On Aesthetics in Science”
The Role of Paradigm







A model which we use as a basis of our explanations
How do our models affect our solutions:
What class of solutions do I not even attempt because I
do not have the ability to represent the problem to
myself.
Have we, as a CS group, handicapped our students by
making them think that “object oriented, block
structured, procedural languages” are it?
A von Neuman approach. Might there be another way?
Whitehead, the Romans and Long Division...
The choice of orientation is not necessarily set in science
by the problem but by the mode of thinking - Weschler
Examples





Recursion and FORTRAN
Recursion and non-stack hardware
Recursion and LISP
Data Structures before Pascal
Will our students one day wake up and see that
we have prevented them from solving problems
because we often blindly present the von
Neumann model with such passion, and all
others as an afterthought.
Using Stories








Book - “Out of their Minds”
Provide a bit of history with each new idea
Babbage and Countess Loveless
John Backus, the army dropout/ FORTRAN author
vonNeumann adversary
Atanasoff- Whose idea is this anyway?
The First Bug – Hopper or whomever
The lost Mariner I space craft...the missing Hyphen
Good Source of historical Bug Stories:
http://en.wikipedia.org/wiki/Computer_bug
Languages Covered








Psuedo Code
ALGOL
FORTRAN
PASCAL
PROLOG
LISP
SMALLTALK
Current OO episodes
Typical Assignments





Treasure Hunt in library to find all articles
Small programming assignments in sample
languages (Pseudo Code, Lisp, Prolog,
Smalltalk) – only where paradigm changes
Have students teach new language to rest of
class
Formal grammar derivations
History essays
Example Essay
In the period between 1910 and 1970, some very
important things happened in parallel in linguistics,
computer science and mathematics. The ideas that
were developed belonged respectively to Bertrand
Russell and Alfred N. Whitehead, Noam Chomsky,
and finally to John Backus and Peter Naur. Oddly
enough, all of the men worked apart in three different
disciplines and yet all tried to do the same thing. Who
is each man, what did each do that was related to the
activities of the others?
Download