Fall 2011 Semester

"A paradigm is a set of rules or expected actions used to solve problems.
After time, the paradigm becomes the norm and thus drives the way we act in certain circumstances,
many times without [our] thinking or justifying our actions.
We simply trust the paradigm."

From http://willtheybuyagain.wordpress.com/2008/03/22/xcs-a-new-paradigm-kind-of/

Programming-Language Paradigms

Lectures: MWF 2:30pm, Nichols Hall, room 019

David Schmidt (das at ksu dot edu, phone: 532-7912), 219A Nichols Hall

Teaching assistant: Ming Yang (yangming at ksu dot edu), 218B Nichols Hall

Announcements (last updated Nov. 11, 2011) | Lectures | Assignments

Syllabus | Text Materials | Software Support

Office hours:
Dave Schmidt: 12:45-1:30pm Monday, Tuesday, Wednesday, Friday (Nichols 219A)
Ming Yang: 3:00-4:30pm Tuesday and Thursday (Nichols 218B)

You are also welcome to send email to schedule meetings.

See announcements page for rest-of-term schedule.

Text Materials

The course uses an on-line text I have written, found at the Lectures page on this site.

Software Support

We will conduct case studies in these programming languages:
  1. Python: Python is a scripting language with dynamic data structures; it supports all of imperative, declarative, and o-o programming. It is great for developing small- and medium-sized programs quickly. Systems hackers use it to write utilities and to "glue together" applications that don't otherwise fit together.
    * Please read Installing Python to learn how to check for Python on your machine, install it if needed, and use it to develop and test software.
    * If you have never programmed in Python before, you can relax --- it looks like Visual Basic or Javascript or any other baby assignment language. But it has powerful dynamic data structures (lists and dictionaries) that make it great for language prototyping.
    Here are some samples of Python code. (Here is a zipped folder of the samples.) Try these with your implementation. IMPORTANT: Python uses indentation to show the nesting of commands. You can indent using either spaces or tabs, but you cannot mix them. In my examples, I use all spaces to do indentation. (If you mix leading tabs with leading spaces you will get strange syntax errors.)
    * a terse language summary and terse notes on lists and dictionaries, the two most important data structures in Python. Here is a complete tutorial.
    * The language's website is at http://www.python.org/, where you will find a useful library reference page.
    * This nice on-line book, The Python Standard Libary, shows you how to use Python to do clever systems hacking and gluing, the sort of stuff that is not normally taught in courses but is hugely useful in practice.

  2. ML: ("MetaLanguage") is a functional language that cleverly combines compile-time type checking with dynamic data structures.
    * A good reference is the text, Elements of ML Programming by Jeffrey Ullman (but it's way overpriced --- get a used copy if you wish to buy it). Here are some other references, all on-line: * You will probably need to install ML on your computer; try one of these:
    • SML New Jersey (claims to work on any of Windows, Mac, Linux)
    • Moscow ML. (supposedly a ``lighter'' version of ML; works with Windows and Linux)
    • MLton (Linux, Unix, Mac)

  3. Prolog: The classic logic-programming language.
    * There is a good, easy-to-install implementation: www.swi-prolog.org.
    * Here is some intro material on Prolog that I wrote for my CIS301 students.
    * This material is oriented towards using SWI Prolog: PLPM, St. Etienne, France | CSC485, Univ. Toronto