Course Component: Lecture, Laboratory, Tutorial
Prerequisites: CSI 2101, CSI 2120.
This outline is tentative and subject to change as the term progresses. See Brightspace for class notes.
Topic | Reading (See Required Textbooks and Other Resources) |
---|---|
An introduction to programming paradigms and concepts | Required: Chapter 1, Mitchell Required: Chapter 13, Gabbrielli and Martini Optional: "Programming Paradigms for Dummies" article |
An introduction to OCaml | Optional: Real World OCaml, Chapter 1 up to end of "Options" subsection |
Basics of types Simple Data: let declarations and tuples |
Optional: Real World OCaml, Chapter 2 up to end of the "Prefix and Infix Operators" subsection |
Inductive Data Types | Optional: Real World OCaml, Chapter 3 first 2
subsections: "List Basics" and "Using Patterns..." |
Polymorphic Higher-Order Programming | |
Defining New Data Types | |
Modules and Abstract Data Types | Optional: Real World OCaml, Chapter 4, subsections: "Signatures and Abstract Types", "Concrete Types in Signatures", "Nested Modules", "Opening Modules" |
Mutable Data | Optional: Real World OCaml, Chapter 8, from "Mutable Record and Object Fields and Ref Cells" to end of "Modifying the List" |
Syntax and Semantics | Required: Chapter 4, Mitchell (except 4.2.3, 4.2.4, and 4.3) |
Scope, Functions, and Storage Management | Required: Chapter 7, Mitchell |
Control in Sequential Languages | Required: Chapter 8, Mitchell |
Concepts in Object-Oriented Languages | Required: Chapter 10, Mitchell Required: Chapters 11 and 12, Real World OCaml |
Combinators, Pipelines, and Scripting in OCaml | |
Concurrent and Distributed Programming | Required: Chapter 14, pages 431-441 and 445-448, Mitchell |
Axiomatic Semantics | Required: Chapter 3, Section 3.5.3, Sebesta |