Please Reload Every Time You Read This Page!

CSC123/252: Programming Languages, Fall 2019

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: cscccl@hofstra.edu (<- click to send me mail)

Official Office Hours: Tuesdays, Wednesdays, Thursdays 1-2pm or by appointment


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/12. Sample solutions available after class on due date.
Scheme programming assignment. (UPDATED). 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)
Visitor Pattern CLASS EXERCISE AND SOLUTION
The Triple Dispatch Assignment. This assignment is due after the midterm exam.
Last C# assignment (generic visitor pattern and covariance).
F# Tutorial Exercises. This includes the first F# programming assignment.
F# Abstract Machine Assignment and base program .dll. RELOAD FOR LATEST
7B test programs: test1.7b, test2.7b (shouldn't work), test3.7b, test4.7b, test5.7b, test6.7b(HIDDEN), test7.7b

F# Interpreter/Compiler Assignment and base program (F# assignment 3). dll of base program
Sample compiled programs for booleans, if-else, let and lambda expressions: eq.7b, let.7b, let2.7b, lambda.7b

AspectJ Assignment (Updated with error corrections)

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# and Scala programs:

Rust and Related Programs:

AspectJ Programs

Other Programs:
Three versions of Fibonacci function and compiled assembly. Illustrating tail recursion optimization.
More notes and examples of writing loops using tail recursion
Scheme style linked lists in C
Are there closures in C?
Simulating dynamic scoping with static scoping in C and Python
Inheritance and dynamic dispatch in pure C (simulated) (alt version), and C#, Kotlin
A type error in a few languages: scheme, perl, C, C#, and Kotlin
Multiple Inheritance in C++ and in Kotlin
Expression Trees in Kotlin
Extension methods in C# and in Swift
Reflection in Java (with new screenplay)
About templates in C++ with compiled assembly


Announcements:

Final exam Tuesday 12/17, 4-6pm in regular classroom, proctored by prof. Kamberova. Use the Study Guide (may be updated) with practice problems and sample solutions. Review Sesson Tuesday 12/10, 4:15-5:30pm, location TBA. Come with questions.

There will be a short QUIZ on F# basics Tuesday 11/12. It will not be difficult if you've studied and did the tutorial exercises.

Midterm exam Thursday 10/24. Use the exam study guide with practice problems and sample solutions, which are NOW AVAILABLE. Review Session Common Hour Wednesday in Adams 204