Pick a markdown and code style:

CSC 252DL Course Syllabus

Dr. Chuck C. Liang Email: chuck.c.liang@hofstra.edu Phone: (516) 463-5559 Office: SIC 213

Information Specific to this Semester

There has been a distance-learning version of CSC252 since 2013. The undergraduate version of this class, csc123, will be taught in person and because of this, I am able to give you a zoom link to attend my live lectures synchronously, Mondays and Wednesdays 2:30-4:05pm. Although lectures will be recorded, you are strongly encouraged to take advantage of this opportunity to improve your chances of passing the class. Experience during the pandemic shows that attending classes live on zoom is the next best thing to attending classes in person. However, you are asked to keep the zoom links confidential: do not share them with anyone who's not in CSC252DL.

Special Measures Against Cheating

Individuals caught cheating will face disciplinary actions from the university. There will be no warning. Individuals posting course materials and solutions online may also face legal action for violating the university and the instructor’s copyrights. No course materials may be shared with others without consent from the instructor.

Interactive Assessment: at the end of the semester you will be given a short oral exam (on zoom or in-person), which may ask questions pertaining to materials you've submitted for assignments and online exams. You must pass the oral exam (in addition to the final exam) in order to pass the class. The oral exam can be waived only if you take the final exam in-person at Hofstra.

In addition to the final oral exam, the instructor may also, from time to time, require you to answer questions one on one (via zoom or in person) concerning materials you've submitted.


Course Description

A study of the semantics, specification and behavior of programming languages. The course will focus on various programming language paradigms including functional, imperative, object- oriented and aspect-oriented programming. Programming assignments using example languages from these paradigms will be required. Emphasis will be placed on learning languages such as C#, ML, Modern C++ and Rust. Other topics covered include language syntax, control structures, objects and functions.

Prerequisite: CSC 16, 17; CSC 14 and 24 strongly recommended

Recommended Text: "Programming Languages: Concepts and Constructs, 2nd Edition" by Ravi Sethi.

Tentative List of Topics

  1. Introduction and review of programming concepts:
  1. Mathematical Foundations: The Lambda Calculus

  2. Formal Models of Computation:

  3. Lazy versus Eager Evaluation: The Church-Rosser Theorem

  4. Dynamic versus Lexical Scoping

  5. Side-effects and State

  6. Object Orientation

  7. Types

    • the typed lambda calculus
    • Safe versus unsafe type systems
    • runtime versus static typing
    • various forms of polymorphism
    • principal types
    • inheritance
    • templates and generics
  8. Typed functional programming

  9. Zero Overhead Abstraction

  10. Approaches to Memory safety

  1. Aspect Oriented Programming.
  2. Advanced topics (if time allow)

Exams, Assignments and Grading

Assignments will be given regularly. There will be a midterm exam and a final. The final exam will be cumulative. Periodic quizzes, including one-on-one quizzes may also be given. The grade distribution will be roughly 70% exams and quizzes and 30% programming assignments and other homeworks. Grading will be curved but the exact curve can be modified by the instructor. Students are required to keep copies of all programming assignments throughout the semester. When working in a group, all group members must possess current versions of the assignment. Final Note: The contents of this syllabus may be modified depending on the progress of the course.