Please Reload Every Time You Read This Page!

CSC123/252: Programming Languages, Fall 2005

Dr. Chuck C. Liang
Associate Professor of Computer Science, Hofstra University .

Office Address:
201A Adams Hall
Hofstra University
Hempstead, NY 11550
Office Phone: (516 463) 5559

Email: cscccl@hofstra.edu (<- click to send me mail)

Official Office Hours: MW 5:30-6:30pm, TuTh 1-2pm, F 1:30-2:30pm, or by appointment


Course Syllabus

Online Resources:

Scheme Programs (files in bold are required reading)

Perl Programs (supplements the Perl tutorial. Files in bold are required reading)

list abstractions in C, for comparison with Scheme (based on 9/27 class).
More OOP examples: Rational number objects in Scheme, Perl, C++, Java, and C#, and for something really special: rationals in Eiffel : rational.e, rats.e. See compilation instructions in rats.e
Inheritance example (sports teams) in Scheme, C#, and Perl
Comparing inheritance between pure C, and C#
Static and dynamic dispatch mechanisms in C#
C# Delegates (higher order functions)
Notes on the difference between abstract class and interface.
THE PIZZA FACTORY! (my example of Factory Method pattern)
invest.cs. (my example of Observer pattern)
Comparing type casting in C++ and C#
A poem and a fable in C++
Expressions trees program : csc16 version, csc123 version, visitor pattern version, Parametrized VP version (NEW)
Three versions of polymorphic lists: polylist1.cs, polylist2.cs, polylist3.cs. They all use number.cs as a dll.
My student visitors example, that includes weirdstudents
Version of "student" visitor pattern that includes xml file parser).
C++ Templates and Parametric types (Generics) in new C#/Java
Another example of Generics in C#
Class notes on type inference calculi (pdf) Absolutely Required Reading
Algebraic programming in ML


First AspectJ example. (Contains installation and compilation instructions).
Second AspectJ example superprivate.java and sptest.java
Third and major AOP example: base program, invariance aspect, initialization aspect, profiling aspect, security aspect.
Aspect-oriented bank accounts: aopbank.java. Contains one of the problems of the programming assignment
More AspectJ Programs: advice precedence, preventing circularity, contro-flows, if pointcut, doubly linkedlist, pertarget aspects
exptree6.java: AOP version of expression tree program. Contains important theoretical remarks (read!).


Lambda calculus homework, now with SAMPLE SOLUTIONS
Scheme Lab and assignment. instructions on using the 019 lab
Perl-Scheme assignment
C# warmup assignment.
THE HALLOWEEN ASSIGNMENT
The Food Assignment. Your xmlwriter visitor should write files consistent with this example.
Food files: foods.cs, foodvisitors.cs, aboutfood.cs.
FOOD ASSIGNMENT ADDENDUM AND CLARIFICATIONS
AspectJ Assignment Part A. The first problem of part A is due Tuesday 12/6, and should be completed individually.
The remainder of the AspectJ assignment, with support files figure.java and figs.java. (main is in figs.java).


Announcements:

The aspectJ assignment is due Friday 12/16.

Problem 2 of part B (finding java programs to profile reads/writes) is now Optional. For the "betteroutput" aspect of part A, you may have to call toString() explicitly from main in order for the aspect to take effect.

Final exam Tuesday 12/20 at 4pm. Use the exam study guide with sample solutions to practice problems.
Review Session Monday at 2:30pm, Adams 019.