CSCI 430 Programming Paradigms

A survey of approaches to problem solving using non-imperative language features from the fucntional, logical, object-oriented, and concurrent paradigms.  Laboratory projects in several different languages are required.  Typical languages covered include LISP, Prolog, Java, Icon, Rexx, Mathematica, Ruby, ML and others.   A combination of lectures and laboratories exposes the students to a set of different language paradigms and the students on their own initiative with the assistance and encouragement of the instructor launch out on their own to become more deeply familiar with two other languages of their choice.  Logging and personal progress reports are used by students to track their project and they give a presentation on their accomplishments on the last day of interterm.  Students will create a Laboratory Tutorial for their languages which will become part of the permanent resource base for the course.

Grading is based on satisfactory completion of all assigned work.
Attendance: Students are expected to attend all lectures and all laboratories and turn in all assignments executed neatly and promptly.

Unix : Unix is of course an Operating System and not a language.  However, since Unix is an important environment for learning many programming languages, students might be interested in the following links.
A Basic UNIX Tutorial 
Unix Tutorial (nice reference page) 
Norman Matloff’s Unix Tutorial Center
Unix Tutorial Based on Cal Tech’s 
Programming On Unix Systems

Programming Languages

The Interesting Page Languages Interesting Page  More Language Resources
Modern Programming Languages A Practical Introduction
Edgar R. Chavez Programming Languages
Dictionary of Programming Languages

Laboratory Assignments from among the following:

Assembly -- The World of x86 Assembly Language (English Version)
C- - : C- - Homepage
FORTH-- Forth Tutorial  Another Forth Tutorial  Forth Home Page  pForth Site  SwiftForth Home BASICs -- 150 Versions of Basic Listed  Chipmonk Basic Home Page 

LISP -- tutorial from Walla Walla College  Mother of all Functional Languages 
             Scheme Tutorial  The definition of Scheme R5RS Another Scheme Tutorial
             MIT Scheme  MIT Scheme Lab  How to Use Edwin MIT Scheme Users Manual
ML -- A Gentle Introduction to ML  Programming In Standard ML
         A Fun ML Self-Test Standard ML of New Jersey 
         Introduction to the ML Programming Language 
         Programming In Standard ML 
         ML Tutorial  

PROLOG -- John Fisher's Prolog Tutorial  Programming with Logic -- a truly different paradigm
On-Line Guide to Prolog Programming
ICON -- tutorial from New Mexico Tech   Son of Snobol -- text processing to the max
              All about Icon
MATHEMATICA -- Mother of all Mathematical Tutorial Lists  Kevin Perry at Princeton  
                                 Mark Johnson's Tutorial  Calculus Self-Tutoring  Sean at CalTech
MATLAB -- Companion MatLab Tutorial to Mark Johnson's Mathematica Tutorial
PHP -- PHP Tutorial   PHP Downloads  Anohter PHP Tutorial 
PYTHON -- Python Home Page Download version 2.4
REXX -- Tutorial    Rexx Tutorial
RUBY --  Tutorial with Interpreter See it Run As You Learn About It!
SQL -- Tutorial On the Web   A Gentle Introduction to SQL 
  Introduction to SQL  
             SQL Course On-Line  More Advanced SQL-On-Line  First SQL-Tutorial
             Interesting Downloadable Tutorial    Access Data Base Tutorial
Relational Data Bases -- The Relational Algebra
PERL -- Tutorials from the  Interesting Page
               Perl Downloads   An excellent Perl tutorial  another fine Perl tutorial
               Picking Up Perl, a Freely  Redistributable Perl Tutorial Book  a shorter but neat Perl tutorial

Declarative Languages -- A Declarative Language is not operational, i.e. its semantics are about what it means and not what it does.  Declarative languages have a wide use in knowledge representation and document representation.

SGML-- Expressing Yourself In SGML  On SGML and HTML
HTML -- HTML Tutorial
XML -- 
A Gentle Introduction to XML   Another Link
CycL -- Writing Ontologies  Can computers represent common sense knowledge?  Knowledge Representation, challenge for the future.

ETD -- The Electronic Thesis and Dissertation Markup Language

Challenge:  If you don't like the programming languages and paradigms in the list above, your challenge is to provide me with extensions to this page which can be used to extend it and make it more useful for those that come later -- that idea is called PAY FORWARD!