This course is about becoming a better programmer. Studying functional programming will help with that. The biggest obstacle in our way is the frustration of speaking a new language, particularly letting go of mutable state. But the benefits will be great: a discovery that programming transcends programming in any particular language or family of languages, an exposure to advanced language features, and an appreciation of beauty.

Terms and concepts

  • dynamic typing
  • first-class functions
  • functional programming languages
  • immutability
  • Lisp
  • ML
  • OCaml
  • referential transparency
  • side effects
  • state
  • static typing
  • type safety

Further reading

  • Introduction to Objective Caml, chapters 1 and 2, a freely available textbook that is recommended for this course
  • OCaml from the Very Beginning, chapter 1, a relatively inexpensive PDF textbook that is very gentle and recommended for this course
  • A guided tour [of OCaml]: chapter 1 of Real World OCaml, a more agressive book written by some Cornellians that some students might enjoy reading
  • The history of Standard ML: though it focuses on the SML variant of the ML language, it's relevant to OCaml
  • The value of values: a lecture by the designer of Clojure (a modern dialect of Lisp) on how the time of imperative programming has passed
  • The perils of JavaSchools: an essay by the CEO of Stack Overflow on why (my words here) CS 2110 is not enough, and why you need both CS 3110 and CS 3410.
  • Teach yourself programming in 10 years: an essay by a Director of Research at Google that puts the time required to become an educated programmer into perspective

results matching ""

    No results matching ""