Please Reload Every Time You Read This Page!

CSC123/252: Programming Languages, Fall 2017

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

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

Email: (<- click to send me mail)

Official Office Hours: Mon. 1-3pm, Tues, Wedn 2-3pm

Course Syllabus and Goals

Online Resources:

Lambda calculus in Scheme (UPDATED), Lambda calculus in Ruby, Lambda calculus in Perl, Halting Problem in Lambda Calculus/Scheme

Homework 1. Due Thursday 9/14. 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)
Expression Tree Assignment
The Triple Dispatch Challenge (extra credit)
F# Tutorial Exercises. This includes the first F# programming assignment.

Second F# programming assignment (AM7B) with test programs test1.7b, test2.7b (shouldn't work), test3.7b, test4.7b, (n!), test5.7b (gcd),
F# assignment 3: Parsing and Compiling

AspectJ Assignment
AspectJ Optional Assignment, with associated Java base files and

Submit all programming assignments (but not first assignment) on blackboard (csc123) (but not the first homework, which is a written assignment).

More Scheme Programs (files in bold are required reading)

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

C# Programs ( Files in bold are required reading)

F# programs:

AspectJ Programs

Other Programs:
C code for linked lists similar to those used in class
Closures and C.
Inheritance and dynamic dispatch in pure C, and C#
A type error in four languages: scheme, perl, C, C#
Multiple Inheritance in C++
A poem in C++
trying stuff with Swift
About templates in C++ with compiled assembly
Contravariance in Java 1.8
Exploring AOP-like features in java-ish languages: decorator design pattern, .Net Attributes, dynamic delegates
Reflection in Java and how it can be stopped with AspectJ.
Basis for class exercise ObserverPattern in AspectJ, with main class


Final Exam Thursday 12/14, 6:15-8:15pm in Adams 208. Use the study guide with practice problems and sample solutions. Solutions to Fsharp quiz also available.
Review Session Tuesday 12/12 6:15-7:30pm.