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?