Next:
Object-oriented programming
Up:
Programming Language Concepts: Lecture
Previous:
Programming Language Concepts: Lecture
Contents
Object-oriented programming
Data encapsulation with classes
Classes
Data encapsulation (public and private)
Static components
Constants (the attribute final)
Constructors
Java Interlude 1
Quick introduction to Java
Structure of a Java program
Compiling and running Java programs
Basic Java syntax
Scalar variables
Expressions
Compound statements
Final note
Subclasses and inheritance
Subclasses and superclasses
Inheritance polymorphism
Multiple inheritance
The Java class hierarchy
Subtyping vs inheritance
Abstract classes
Abstract Classes
Generic functions
Multiple inheritance and interfaces
Interfaces: Applications
Callback functions
Iterators
Ports and interaction with ``state''
Java Interlude 2
Parameter passing, cloning, packages
Parameter passing in Java
Cloning
Packages
The
protected
modifier
Exception handling
Exception handing
Java's
try
-
catch
blocks
Cleaning up with
finally
Customized exceptions
A ``cute'' fact about
finally
Event driven programming
Event driven programming
Programming graphical user interfaces
Some examples of event driven programming in Java
A button
Three buttons
The event queue
Custom events
Reflection
Reflection
Concurrent programming
Concurrent Programming
Race conditions
Protocols based on shared variables
Programming primitives for mutual exclusion
Monitors
Monitors in Java
Java threads
Interrupts
Functional programming
Functional programming in Haskell
Types
Defining functions in Haskell
Functions as first class objects
Polymorphism
Conditional polymorphism
User defined datatypes
Rewriting as a model of computation
Reduction strategies
Outermost reduction and infinite data structures
The (untyped) lambda calculus
Syntax
Life without types
The rule
Variable capture
Encoding arithmetic
One step reduction
Normal forms
-equivalence
Church-Rosser property
Computability
Recursive functions
Encoding recursive functions in lambda calculus
Fixed points
From recursive functional definitions to lambda terms
Encoding minimalization
A fixed point combinator
Making sense of terms without normal forms
Introducing types into the lambda calculus
Simply typed lambda calculus
Polymorphic typed calculi
Type inference as equation solving
Unification
A unification algorithm
Type inference with shallow types
Logic programming
Introduction to logic programming
Facts and rules
Computing in Prolog
Complex structures in Prolog
Turning the question around
Arithmetic
Negation as failure
Cut
Scripting languages
Programming in Perl
Scalar datatypes
Arrays
Control flow
Input/Output
Matching and regular expressions
Associative arrays
Writing functions
Sorting
Appendix
Some examples of event-driven programming in Swing
Multicasting
ButtonPanel.java
ButtonFrame.java
Checkbox
CheckBoxPanel.java
CheckBoxFrame.java
CheckBoxTest.java
About this document ...
Madhavan Mukund 2004-04-29