CS 321 Programming Languages

Fall 2017

Lectures

Important Dates (tentative):

  • Midterm Exam 1: 26.10.2017
  • Midterm Exam 2: 30.11.2017
  • Final Exam: 11.01.2018 @ 9:00, in room 237.
  • Withdrawal week: 13-17.11.2017

25.09.2017 Monday

28.09.2017 Thursday

02.10.2017 Monday

  • OCaml, part 02 cont’d.
  • OCaml, part 03 - Lists (up to slide #19) [2up] [4up]

05.10.2017 Thursday

  • NO LECTURE. The instructor is attending a conference.

09.10.2017 Monday

  • OCaml, part 03 cont’d.
  • Watch videos:
    • [Reversing a list]
    • [Map]
    • [Maya the bee]
    • [fold left & fold right] (Note: This video uses F# as the programming language. The differences from OCaml is that the “let” expressions do not have the “in” keyword, fold_left is called fold, and fold_right is called foldBack. Otherwise, the ideas are the same.)

12.10.2017 Thursday

16.10.2017 Monday

19.10.2017 Thursday

  • User-defined data types (cont’d)
    • Polymorphic tree implementation in Java [Code]
  • An interpreter for the ArithLang language (constant ints, names, arithmetic operations).
    • OCaml code
    • Read Chapter 1 and Chapter 2 (up to Section 2.3.2) in PLC.

23.10.2017 Monday

  • Extended the ArithLang with Let-in.

26.10.2017 Thursday

30.10.2017 Monday

02.11.2017 Thursday

06.11.2017 Monday

09.11.2017 Thursday

13.11.2017 Monday

  • Extending the Deve language with new features. See the sample questions on interpretation.
  • At this point, we have a version of the language that handles booleans gracefully, has relational operators, handles pairs, etc. We will call this Deve 2.0.

16.11.2017 Thursday

20.11.2017 Monday

23.11.2017 Thursday

  • At this point, we have reached Deve 4.0.

27.11.2017 Monday

  • Type inference and polymorphism [Slides (1-5)]
  • Read PLC Section 6.2.

30.11.2017 Thursday

04.12.2017 Monday

07.12.2017 Thursday

  • Lambda calculus and Church numeral encodings [2up] [4up] [Code]
  • Read: PLC Section 5.6

11.12.2017 Monday

14.12.2017 Thursday

  • Imperative programming cont’d.

18.12.2017 Monday

  • Imperative programming cont’d. See swap.cpp and experiment5.cpp.
  • Read: PLC Sections 7.1-7.5.
  • Sample problems

21.12.2017 Thursday

25.12.2017 Monday

28.12.2017 Thursday