...
COMP 311 / COMP 544: Functional Programming (Fall 20232024)
...
Office Hours |
Instructor |
|
|
|
| Corky Cartwright | TuTh
| 3pm-4pm By appointment | DCH 3104 TBA | Teaching Assistants | Barret Glass Hunena Badat | TBAEric Breyer | 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; it supports essentially the same textually transparent interface for Java that DrRacket does for Racket. You are also welcome to use 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.
|
...