Course Information for Spring 2008
Time: Tues & Thurs. 1:00-2:15
Place: Keyes 103
Instructor Information
Prof. Scott Russell
Office: Mudd 416A
Phone: (207) 859-5855
e-mail: srussell (at) colby (dot) edu
class mailing list: cs333 (join here)
Office Hours: Mon., Wed., Thurs. 2:30-3:30, Tues. 3:30-4:30, and by appointment
Course Description
We will examine languages from each of the four major types of languages: imperitive, functional, logical, and object-oriented to gain an understanding of their respective strengths and weaknesses as well as commonalities spanning these different types. In addition to learning how to use these various languages, we will study formal syntactic and semantic methods for describing programming languages.
As any good craftsperson will tell you, the quality of what you produce depends on having and using the right tools for the job and understanding how to effectively employ those tools. Programming languages are tremendously flexible tools that allow us to craft solutions to a myriad of different problems. So far you have a reasonable level of mastery of at least one programming language. By the end of this course you will have a better appreciation for what that language can and cannot do, how it accomplishes those things, and some of the design tradeoffs that it embodies. You will also have developed a greater awareness and appreciation for some other languages out there. My hope is that next time you need to reach for a software tool to help you solve a problem you will be able to make a more informed and intelligent choice.
Textbooks
Kenneth C. Louden,Programming Languages: Principles and Practice, Second Ed.,
Brooks/Cole-Thomson, 2003, ISBN 0-534-95341-7.
online book content
Language Related Links
Frequently Asked Questions for comp.lang.functional
Scheme
- Dr.Scheme
- See the various resources under the Help menu in Dr.Scheme, including searchable
Help Desk
How to Design Programs
(intro. programming book using Scheme)- Scheme FAQs
An Introduction to Scheme and its Implementation
(online book)- Java class BankAccount.java implemented in Scheme using non-functional features (set!) BankAccount.scm (from book slides)
- Standard ML of New Jersey (SML/NJ) - free, open-source implementation of SML ’97
- see the Documentation and Literature section of the above page for book, tutorial, and documentation links.
- All things Haskell (the web site for our text has several other links)
- SWI-Prolog Home (click the "Links" link for tutorials, guides, etc.) Resources I have been using:
- the wikibook
- Prolog Programming A First Course by Paul Brna
- The Prolog Dictionary by Bill Wilson

