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.
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.
Topic | |
---|---|
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) |