...
This class provides an introduction to functional programming. Functional programming is a style of programming in which computations are solely expressed in terms of applications of functions to arguments (which themselves can be functions). This style of programming has a long history in computer science, beginning with the formulation of the Lambda Calculus as a foundation for mathematics. It has become increasingly popular in recent years because it offers important advantages in designing, maintaining, and reasoning about programs in modern contexts such as web services, parallel (multi-core) programming, and distributed computing. Coursework consists of a series of programming assignments in the Racket and Java programming languages followed by a discussion of frameworks for reasoning about functional and imperative programs supported by written homework assignments.
...
Office Hours |
Instructor |
|
|
|
| Corky Cartwright | TuTh
| 3pm-4pm By appointment | DCH 3104 TBA | Teaching Assistants | Barret Glass Hunena Badat | TBA TBA | Jones Commons Zoom | TBA TBA |
|
Textbooks and articles
| There is no required textbook. We will follow the pedagogic approach of "How to Design Programs, First Edition" and extend it to other languages. The Second Edition of this book is the default at the website www.htdp.org but this web page contains a link to the first edition (at URL: https://htdp.org/2003-09-26/) at the bottom of the page. The two editions are very similar but this course tracks the first edition. We will draw material from a variety of sources, including: - Felleisen, Findler, Flatt, Krishnamurthi. "How to Design Programs, First Edition" MIT Press 2001.
- Robert Cartwright, "The Elements of Object-Oriented Design", Unpublished notes.
- John Hughes, "Why Functional Programming Matters", Online version from Chalmers dating from 1984; republished in 1989 and 1990.
- Harold Abelson, Gerald Jay Sussman, Julie Sussman, "The Structure and Interpretation of Computer Programs." MIT Press 1985.
- Odersky, Spoon, Venners. "Programming in Scala." Artima Press 2012.
- Chiusano and Bjarnason. "Functional Programming in Scala.” Manning Publications Co. August 2014.
- Coursera: Functional Programming Principles in Scala by Martin Odersky.
- edX: FP101x: Introduction to Functional Programming by Erik Meijer.
- Okasaki. "Purely Functional Data Structures.” Cambridge University Press. New York, NY. 1999.
- Cartwright, "Why is Functional Programming Important?" (Slides skimming the advanced material covered in Comp 411)
|
Recommended Videos | |
Development Environment | - DrRacket is recommended for all Racket homework assignments in this course. The interface is "textually transparent" as we will show in class.
- DrJava is the supported IDE for Java in this course, but you are ; it supports essentially the same textually transparent interface for Java that DrRacket does for Racket. You are also welcome to use any a "professional" IDE such as IntelliJ or Eclipse, which have important features (particularly with regard to program refactoring) that DrJava lacks.
- For students who want to explore Scala, a putative successor to Java that directly supports functional programming, there are multiple online IDEs and interpreters available.
|
...