CPS 343/543: Comparative Languages/Spring 2013

CPS 343/543 (3 sem. hrs.) is a course in programming language concepts. The approach involves studying language concepts, such as scope and parameter passing, by implementing a series of interpreters in Scheme, for purposes of its combined simplicity and power, and assessing the differences in the resulting languages. Students can also expect a comparative survey of programming paradigms, including the use of representative languages, such as Haskell, PROLOG, and Smalltalk. The course emphasizes alternative language features such as continuations, currying, and lazy evaluation, and the use of these features in novel application areas such as web interaction management. Course themes include the relationship between languages and the capacity to express ideas about computation, and the influence of language design and implementation options on current trends in programming practice and vice versa. This course assumes no prior experience with Scheme, Haskell, PROLOG, or Smalltalk, but does require an open mind, an intellectual and scientific curiosity, and a passion for languages.

CPS 343/543: Comparative Languages Spring 2013
Pre-requisite: CPS 350 (Data Structures & Algorithms) (a minimum grade of C is required for students enrolled in CPS 543).

Meeting times: M W 4:30pm-5:45pm, MH 205.

Instructor: Dr. S. Perugini, e-mail id: sperugini1, 229-4079, AN 145, OHs: M W 5:45pm-6:45pm, T Th 3:30pm-4:30pm, & by appointment.

Required textbook: [CPL] Comparative Programming Languages by S. Perugini. 2013. Draft.

Recommended textbooks:
    [EOPL2] Essentials of Programming Languages by D.P. Friedman, M. Wand, & C.T. Haynes. MIT Press, Cambridge, MA, 2nd edition, 2001. ISBN: 0-262-06217-8 (textbook webpage contains links to the source code of all programs in the text). An eBook of [EOPL2] is available free to all UD students in the library's eContent collection. To access it conduct a search for the title in the library's catalog at library.udayton.edu.

Steps to access [EOPL2] off-campus:
  1. Go to https://login.libproxy.udayton.edu/menu.
  2. Login using your standard UD credentials.
  3. Click on the link labeled: EBSCO Ebook Collection (formerly NetLibrary).
  4. This link will will take you to a page were you can perform a search. Search for "essentials of programming languages" You should get one result (as of 3/13/2013) which is essentials of programming languages 2nd ed. Click on "eBook Full Text".

    Note that there is a limit on how many people can view the book and once someone checks it out, no one else can use it. Also, if you incorrectly break your session (closing the page), the book remains checked out for a period of time and you cannot use the book in until the session ends.
    [TLS] The little schemer by D.P. Friedman & M. Felleisen. MIT Press, Cambridge, MA, 4th edition, 1996. ISBN: 0-262-56099-2. This book is on reserve at the Roesch library.
    [TSS] The seasoned schemer by D.P. Friedman & M. Felleisen. MIT Press, Cambridge, MA, 1996. ISBN: 0-262-56100-X.
    [TSPL] The Scheme programming language by R.K. Dybvig. MIT Press, Cambridge, MA, 4th edition, 2009. ISBN: 978-0-262-51298-5 (entire text available online).
    [TLM] The little MLer by M. Felleisen & D.P. Friedman. MIT Press, Cambridge, MA, 1997. ISBN: 978-0262561143.
    [EMLP] Elements of ML programming by J.D. Ullman. Prentice Hall, Upper Saddle River, NJ, 2nd edition, 1997. ISBN: 0-137-90387-1.
    [COFP] Haskell: The craft of functional programming by S. Thompson. Addison-Wesley, Harlow, England, 2nd edition, 1999. ISBN: 0-201-34275-8.
    [PIH] Programming in Haskell by G. Hutton. Cambridge University Press, Cambridge, 2007. ISBN: 0-521-69269-5.
    [PPFC] Prolog programming: A first course by P. Brna (entire text available online in various formats).
    [PIP] Programming in Prolog by W.F. Clocksin & C.S. Mellish. Springer-Verlag, Berlin, 5th edition, 2003. ISBN: 3540006788.
    [QTOL] Squeak: A quick trip to ObjectLand by G. Korienek, T. Wrensch, & D. Dechow. Addison-Wesley, Boston, MA, 2002. ISBN: 0-201-73114-2.

Course objectives:
  • Establish an understanding of fundamental language concepts primarily through the implementation of interpreters.
  • Improve your ability to understand new languages and technologies, and expand background for selecting appropriate languages.
  • Expose students to alternate styles/paradigms of programming and exotic ways of affecting computation so to paint a more holistic picture of computing.
Evaluation, workload, and policies

Course outline, lecture notes, & homework & reading assignments (to be completed prior to class):
Programming languages resources

Practice problems

Grades: available in Isidore

Computer accounts: UDit | A beginner's guide to effective e-mail

Helpful links: academic calendar | student handbook | UDit policies 

Feedback: Dr. Perugini welcomes any feedback you may have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, deadlines, exams, course and grading policies, or your general experience in the course.