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
"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|