Programming Languages: Exams and Tests


There will be a quiz on each of the three principal languages taught in the course.  There will also be a final exam.

The first quiz will be in class on Monday, April 19.  Topics to be covered include the following:

Describing syntax with BNF and EBNF.
A simple grammar for arithmetic expressions involving integers constants, variables, parentheses, and the binary operations *, /, +, and -.
Derivations using context-free grammars.
Fundamental concepts of object-oriented software design: objects, classes, inheritance, member variables, methods.
overriding, overloading, abstract classes and abstract methods. Java interfaces.
Basics of Java applications and applets.
Java's way to declare new classes.
Static (class) components vs. instance components.
Public, private, and protected modifiers.
Basics of the AWT: Frames, panels, layouts, canvases and buttons.
Setting up a mouse event handler.
Java's Thread class.
Java collections: Vector, Hashtable and the Enumeration interface.

-----------

The second quiz will be on Friday, May 7.  Topics to be covered include the following:

Lisp S-expressions
Conses and Lists
Referential transparency, side effects, and pure functions.
Scope and extent for the following kinds of bindings:
  global bindings of symbols
  local bindings of symbols
  function bindings of symbols
The Lisp functions CONS, CAR, CDR, ATOM, NULL, LIST, +,= ,*, /
Special forms SETQ, IF, COND, QUOTE, DEFUN, LET, LET*, PROGN
Defining one-way recursive functions that work on lists.
Defining two-way recursive functions that work on lists with embedded sublists.
Evaluation and EVAL
APPLY, FUNCALL, MAPCAR, and closures.

-----------

The final exam will be on Thursday, June 10, from 8:30 AM to 10:20 AM.