Please Reload Every
Time You Read This Page!
CSC123/252: Programming Languages, Fall 2016
Dr. Chuck C. Liang
Professor of Computer Science,
Hofstra University .
102 Adams Hall
Hempstead, NY 11550
Office Phone: (516 463) 5559
(<- click to send me mail)
Official Office Hours: TuTh 4-5pm, Wed 3:30-4:30pm
Course Syllabus and
- Lambda Calculus tutorial.
(here's another tutorial)
- Scheme tutorial
- MIT Scheme homepage. Install this version for windows (change shortcut target from --edit to --interactive.)
- Ruby Documentation and Download page. This page contains most of what you'll need with respect to the Ruby language.
- My "Perl Tutorial in Perl"
- Perl.org homepage. Recommend Strawberry Perl for windows.
- A Short C++ to Java Tutorial
- A Short Java to C++ Tutorial
- brief instructions on installing C# on Windows,
Get Mono for Mac and Linux.
- C# compilation and execution instructions
- C# Documentation at MSDN
- OOP Design Patterns in C#
- Wikipedia page on Variant types
- Class notes on type inference calculi (pdf)
- F# intro tutorial and language reference (alt link),
more docs available for OCAML
- F# Download links: 2.0 (does not require visual studio), visual studio express,
open source for linux, macs, etc
- AspectJ Homepage. Install java first, and then
the latest stable release and
read at least the first two chapters of the programming guide.
- Java API Docmentation
Lambda calculus in Scheme
Lambda calculus in Ruby
Lambda calculus in Perl
Halting Problem in Lambda Calculus/Scheme
Homework 1. Due Thursday 9/15. Due date is absolute as
sample solutions will become available after class.
Scheme programming assignment. Use MIT scheme only
Perl-Scheme lab and assignment.
C# Assignment 1. Your multiple inheritance solution must work with multinhasn.dll (compile with csc yourprogram.cs /r:multinhasn.dll)
Optional Halloween Assignment
The Food Assignment. NOW OPTIONAL.
Your xmlwriter visitor should write
files consistent with this example.
Food files: foods.cs,
FSA hint for checking sorted list
New Visitor Pattern Assignment Option
F# assignment 1: Abstract Machine AM7B
F# assignment 2: Parsing and Compiling
AspectJ Optional Assignment, with associated
Java base files figure.java and figs.java
Submit all programming assignments on blackboard (csc123) (but not the first homework, which is a written assignment).
More Scheme Programs (files in bold are
Perl Programs (supplements the Perl tutorial. Files in bold are
C# Programs ( Files in bold are required reading)
- Inheritance, static and dynamic dispatch in C#
- Type casting rules in C#
- C# Delegates,
more advanced delegates (lambda terms) typed lambda terms (version 3.0); another delegate example: infinite sets
- Notes on the difference between abstract class and
- My example of the Adapter pattern
- invest.cs. (my example of Observer pattern)
- Expression trees program : csc16 version,
csc17 version, csc123 (visitor pattern) version, Parametrized VP version
- Student Visitors (visitor pattern example):
basic, extended, and main class
- Notes and examples of polymorphism
- Example of balancing generics and inheritance,
with separate compilation. mainapp file, and
.net IL assembly code.
- Covariant, Contravariant and Invariant types.. Here's a more practical example. Here are some
- First AspectJ example. (Contains installation and
- Second AspectJ example
- Third and major AOP example: base program,
- More AspectJ Programs: advice precedence,
preventing circularity, contro-flows,
efficient queues (NEW),
doubly linkedlist (optional)
- Rational and complex numbers: numbersaop.java, print.java, trace.java
- exptree6.java: AOP version of expression tree program. Contains important theoretical remarks (read!).
C code for linked lists similar to those used in class
Closures and C.
Inheritance and dynamic dispatch in pure C, and C#
Multiple Inheritance in C++
A poem in C++
Use of pointers and casting in C compared
Visitor pattern class exercise with solution
About templates in C++
Simple windows forms program that uses
several C# features.
Contravariance in Java 1.8
Reflection in Java and how it can be stopped.
Final Exam Thursday 12/15, 6:15-8:15pm in Adams 204. Use the study guide with practice problems and sample solutions. Review Session TBA
Must Read F# intro tutorial. Also see video lecture on blackboard. Also watch special video lectures on blackboard
Tutor Information: Kendra Campbell-McCalla is available to tutor this
class Tuesdays 3-4pm in Adams 202 and Thursdays 1:50-3:50pm in Adams 204