Overview
This page provides information on some of the resources available for students in COP 4020. The page is organized as follows:
- Course resources
- Various paradigms (including OO programming, AOP, functional programming, and logic programming)
- Language design resources
- Semantics resources.
Course Resources
Related to the Textbook
- Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi (MIT Press, 2004).
- Errata for the book.
- Supplementary material for the book.
Related to the Course Materials
- Course home page.
- Meeting outlines directory, containing outline files for the "lectures".
- Tegrity for COP 4020 for additional examples and makeup lecture videos.
- Self tests directory, containing self study questions for each chapter, which may be helpful for your reading.
- Code examples page (also available as a zip file that may be out of date).
- Examples of Oz code that compute
various properties related to chapter 2. This includes,
as described in the 0DOCS.pdf file:
- Free variable identifiers (see also FreeVarIdsTest.oz).
- Bound variable identifiers (see also BoundVarIdsTest.oz).
- Desugaring (see also BoundVarIdsTest.oz).
- An unparser (for printing abstract syntax tree records, see also UnparseTest.oz).
- The operational semantics (see also ReducerTest.oz).
- How to Run Oz.
- Course Oz library, including code to do testing and assertions. You can also download a zip file containing the library's contents.
- Old homeworks directory, containing old homework assignments from this and previous semesters (and their testing files). Current students should only use the assignments from Webcourses, as this directory is not necessarily up to date during the current semester.
- Lecture notes directory, containing strangely formatted notes for the "lectures". We recommend that students use the Meeting outlines (above) instead.
- The course documentation directory
including:
- Following the Grammar by Gary T. Leavens, which is designed to help you write good functional programs in Oz.
- The following is an article describing some of the motivation
for using the textbook and syllabus.
Gary T. Leavens. Use Concurrent Programming Models to Motivate Teaching of Programming Languages. In Programming Languages Curriculum Workshop 2008, pages 93-98. Volume 43, number 11 of ACM SIGPLAN Notices, Nov. 2008.
http://doi.acm.org/10.1145/1480828.1480849
Also School of Electrical Engineering and Computer Science, University of Central Florida, CS-TR-08-04a, April 2008, revised May 2008. [abstract] [Preprint PDF]
Related to Mozart/Oz
- The Mozart/Oz system.
This includes:
-
The system's documentation
(available on your own system, if you have installed Mozart),
including documentation on:
- the base environment (which includes built-in functions and procedures that operate on each type of data),
- The Oz Tutorial, and
- the Oz language.
- The GForge (Official?) Wiki
- An "Unofficial Wiki"
-
The system's documentation
(available on your own system, if you have installed Mozart),
including documentation on:
- Translations of various programming books into Oz. Fans of Scheme should check this out!
- The Alice language.
Various Paradigms
Some general resources are the following.
- Programming Paradigms for Dummies: What Every Programmer Should Know , by Peter Van Roy, a chapter from G. Assayag and A. Gerzso (eds.) New Computational Paradigms for Computer Music, IRCAM/Delatour, France.
- Gary Leavens's programming languages page with various links
- Lambda the Ultimate programming languages weblog.
- Language Popularity
- TIOBE Programming Community Index
OO Programming
- Cetus links to Object-Oriented information sources.
- Smalltalk related information.
-
Java related information.
- Java Beans.
- Java Concurrency in Practice, the web site for an excellent book by Brian Goetz and others.
- A variant of Java, called "Flow Java" is described in a paper whose list of coauthors includes the second author of our textbook. This was influenced by Oz (see the paper's related work section).
- There is an implementation of flow-based programming in Java available from this sourceforge project. Also check out the web site for more information.
- JCoBox, an implementation of Actors in an extended version of Java.
- A Ruby implementation of dataflow variables and actors.
- Scala.
- Cω.
Aspect-Oriented Programming
Component-Based Programming
- Microsoft's Component Object Model (COM).
- See Component Software: Beyond Object-Oriented Programming by Clemens Szyperski (Addison-Wesley, 1998).
Functional Programming
- Functional programming FAQ
- A page of tutorial papers on functional programming by John Hughes.
- Why Functional Programming Matters by John Hughes.
- Composing Contracts The LexiFi language for financial contracts is discussed in detail in the "Academic Paper" called "Composing Contracts: An Adventure in Financial Engineering", by Simon Peyton Jones, Jean-Marc Eber, and Jullian Seward, from IFIP 2000. Jean-Marc Eber give a talk about this at the ESOP 2009 conference, and it directly relates to the material we discuss in class. The paper uses Haskell, which is described in section 4.7 of our text. Haskell is a lazy (by default) functional language.
- Beating the Averages by Paul Graham, on how the expressive power of Lisp helped in a startup.
- The Commercial Users of Functional Programming conference has information and reports about how functional languages are being used commercially.
- Why Jane Street Capital uses functional programming.
-
Haskell related information.
- The Haskell Tutorial, Report, and Library Report.
- Other books and tutorials.
- HUnit, a unit testing tool for Haskell.
- Scheme
- Standard ML,
- Ericsson uses the functional language Erlang to write all of its software.
- The ICFP Programming contest gives some ideas for what kinds of problems can be solved with functional programming.
Logic Programming
- Logic programing virtual library
- lambda Prolog related information.
- Examples of lambda Prolog programs.
- The Teyjus lambda Prolog implementation.
- Manual for Teyjus lambda Prolog.
Language Design
- An Introduction to the Literature On Programming Language Design.
- Benjamin Pierce's list of the most important papers in programming languages.
Semantics
Last modified Friday, July 22, 2011.
This web page is for the Fall 2011 offering of COP 4020 at the University of Central Florida. The details of this course are subject to change as experience dictates. You will be informed of any changes. Please direct any comments or questions to Gary T. Leavens at leavens@eecs.ucf.edu. Some of the policies and web pages for this course are quoted or adapted from other courses I have taught, in partciular, Com S 342.