...
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. In contrast to programs written in other forms of programming languages, the meaning of programs written in functional languages is manifest and easy to reason about–both informally and formally.
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.
...
Grading will be based on your performance on weekly programming assignments and two exams: a midterm and a final. All All work in this class is expected to be your own, and you are expected not to post your solutions or directly share your work with other students, even after you have taken the course. Please read the You are encouraged to share ideas but not actual code. Please read the Comp 311 Honor Code Policy for more details on how you are expected to work on your assignments. There will also be a final exam, as described in the syllabus.
...