15-625-511-001/002 & 20-260-511-001/002

Organization of Programming Languages

Object Oriented Programming, Functional Programming, Programming Language Issues

Representative 1999 Final Exam Solutions

Satisfiability
Object Oriented Programming - Interfaces
The Exam
Postscript

Representative 1999 Midterm Exam Solutions

Hamming's Problem: Generate and Test
Hamming's Problem: Priority Queue
Multitasking Objects
Lambda: Y combinator
Explain Y combinator

1999 Syllabus

HTML version

Homework Assignments

Homework Number 1 - Streams in C/C++
Homework Number 2 - Streams in Java (New hard due date!!)
Homework Number 3 - Streams in Scheme (New hard due date!!!)
Homework Number 4 - Declarative vs. Imperative Styles (New hard due date!!!)
States for train problem

Quote of the Week

Scheme and C

Solutions to the Homework

A Solution To Homework Number 1
A Solution To Homework Number 3 (call/cc)

Homework Hints

Homework Number 1 hints
Partial Solution to the Doctor's/Patient's Problem in "C++"
Update to Partial Solution to the Doctor's/Patient's Problem in "C++"
Results of Running a Solution to the Doctor's/Patient's Problem in "C++"

Lecture Notes

Streams in C++
C++ to Java (postscript)
Multiple Inheritance
C++ problems
Java Threads
Scheme and call/cc
setjump and longjump
MergeSort in Scheme
amb operator in Scheme (from "Teach Yourself Scheme in Fixnum Days" by Dorai Sitaram)
Implementation and examples of amb as used in above notes
Topological Sort

Scheme References

Introduction
Scheme language specification
FAQ, part 1
Quick Reference
Schools Using Scheme

Scheme Examples

Lambda
OOPS
Streams
Y Combinator
Call with Current Continuation
Backtracking Solution to N-Queens Problem.
Quick Sort (pivot is the first element)
Merge Sort
Solution to Doctors/Patients
Stream Lecture Notes
Objects Lecture Notes

Java Examples

Simple Hello World (no Frame)
Hello World in a Button in a Frame
Hello World better positioned in a Button in a Frame
TextField and Button - click to add numbers to the string
Simple pocket calculator
------Applet source code-----Try the applet

      ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++

Make circles and change colors to red green or blue
Make circles, change colors, and move them
Same as above but improved and with Double Buffering
------Applet source code-----Try the applet
Add nodes to a red/black tree - animation example
------Try the applet
HTTP Web Server - example of "Stream" connection on net
Keep track of Bowlers' scores - file manipulation example

      ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++

Interface Example - Find
Multiple Inheritance Using Interfaces
Multiple Inheritance Using Interfaces
Visibility

      ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++

Simple Thread Test
Producer/Consumer Example

      ++  ++  ++  ++  ++  ++  ++  ++  ++  ++  ++

Radix sort using circular queue
QuickSort
Hamming's problem extended
Redundancy check in a network (test for cycles in a graph)
Binary trees, heaps, and heapsort
MergeSort using linked lists
Red/Black Trees Demonstration

C and C++ Examples

Insurance Company Payroll
Radix Sort using circular queue
Breadth-first solution to Hamming's problem
Generate-and-Test solution to Hamming's problem
Redundancy check in a network (test for cycles in a graph)
Binary Tree and HeapSort
A linked list implementation of MergeSort
Multiple Inheritance
Man Page Description of setjmp/longjmp with examples
Multiple Inheritance
Multiple Inheritance
Multiple Inheritance
Craziness in C++ - Garbage Collection

Previous Exams

Midterm questions from 1997.

Questions and Answers

Answers to Student Questions.