CS 480/680 Comparative Languages

  • Quarter : Summer, 2012
  • Class Hrs : MW, 6:05 - 7:20pm,  150 Russ Engr Center
  • Office Hrs : MW, 5:30 - 6:00pm, 395 JC (or by appt.)

  • Course Description

    This course will introduce fundamental concepts and paradigms underlying the design of modern multi-paradigm programming languages. For concreteness, we study the details of an object-oriented language (e.g. Java), and a functional language (e.g., Scheme). The former is an exemplar of a language for programming-in-the-large, while the latter is an exemplar of programming-in-the-small. The overall goal is to enable comparison and evaluation of existing languages. The programming assignments will be coded in Java and in Scheme.


    Course Material

    1. On-line Lecture Notes.
    2. OOP Basics


    1. K. Arnold, J. Gosling, and D. Holmes: The Java Programming Language.  Addison-Wesley Publishing Co., 4th Edition, 2005. ISBN 0-321-34980-6
    2. Michael L. Scott, Programming Language Pragmatics. Morgan Kaufmann Publishers, 2nd Edition, 2006. ISBN 0126339511
    3. The Java Tutorial
    4. Ravi Sethi, Programming Languages: Concepts and Constructs. Addison-Wesley Publishing Co., 2nd Edition, 1996. ISBN 0-201-59065-4
    5. R. Kent Dybvig, The Scheme Programming Language, 4th Edition. Prentice Hall, 2009.
    6. Scheme : Language Reference Manual
    7. Chez Scheme  (http://www.scheme.com)
    8. Racket (formerly PLTScheme) (http://racket-lang.org/)
    9. Jython Home Page
    10. Dive into Python
    11. Scala

    Relevant Websites

    Course Load

    The course load includes programming assignments worth 30 points, a midterm worth 30 points and a final worth 40 points. Normally, CS680 students are assigned additional homework problems and are expected to solve additional problems in the tests.


    The letter grades will be assigned using the following scale: A[90-100], B[80-90), C[70-80), D[60-70), and F[0-60). However, I reserve the right to adjust the scale somewhat to utilize the gaps in the distribution. Academic dishonesty will be "rewarded" with a grade of "F". "Sharing/reuse" of solutions to assignment problems is strictly prohibited.

    Attendance Policy

    All registered students are expected to attend all lectures. In case a student is absent from a lecture due to unavoidable circumstances, the student is still responsible for the material covered in the class, as it is typically available from the course web-page well in advance. Furthermore, the student is expected to find out about in-class announcements from their colleagues/instructor.

    Class Schedule and Syllabus

    Class 1 Evolution of Programming Languages
    Class 2 Syntax Specification : Grammars
    Class 3 Object-Oriented Programming
    Class 4 Symbolic Data; List Processing  
    Class 5 Styles : Functional vs Procedural
    Class 6 Recursive Definitions (Examples)
    Class 7 Abstraction : Higher Order Functions
    Class 8 Scoping; Closures
    Class 9 Java Design Goals
    Class 10
    Midterm (July 23)
    Class 11 Types, Values, Variables
    Class 12 Arrays; Classes
    Class 13 Inheritance; Polymorphism
    Class 14 Interfaces; Packages; Strings
    Class 15 Exceptions
    Class 16 Threads
    Class 17 (continue) (Scripting vs Systems PL)
    Class 18 SCHEME INTERPRETER (2/3 classes)
    Class 19 Code (scm/txt)
    Class 20 Hand Written Slides (83M pdf) (43M pdf)
    Class * Parameter Passing Mechanisms
    Class * Implementing Subprograms

    Final (August 15,   6:05-7:20pm)

    Assignments  (Summer 2012)

    Exams (Fall 2011)

    T. K. Prasad