Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...


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:

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.

...