Versions Compared

Key

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

...

Office Hours


Instructor




Corky Cartwright

TuTh


3pm-4pm

By appointment

DCH 3104

TBA

Teaching Assistants

Barret Glass

Hunena Badat

Clayton Ramsey

Andrew Obler

TBA

TBATBA

Jones Commons

TBAZoom

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 welcome to use any IDE such as IntellJ IntelliJ or Eclipse.
  • We are still evaluating IDEs for RustFor students who want to explore Scala, there are multiple online IDEs and interpreters available.


Lecture Schedule (In Progress)


1

Tu

Aug

23

22

Motivation and the Elements (Constants) of Racket

Skim HTDP First Edition, Part 1 (Ch 1-8), Part 2 (Ch 9-10)
Sep 01


ThAug
25
24Conditionals, Function Definitions, and Computation by Reduction
Sep 03


2

Tu
Sep 01

Aug 29

Conditionals, Function Definitions, and Computation by Reduction

Homework 1

Review Ch 8

HTDP Part 2 (Ch 9-10)

Sep
08
04
3Th
Sep 03
Aug 31

The Program Design Recipe for Racket

focusing

, which focuses on using

recursion

to process lists and natural numbers

Preface, 9.4

HTDP Part 2 (Ch 11-13)

Sep 10

4

Tu

Sep

06

05

Data Definitions, Data-driven Structural Recursion,

Homework 2

HTDP Part 3

Sep
15
11
5ThSep
08
07Mutually Recursive Definitions and Help FunctionsHTDP Ch 15-17
Sep 15

6

Tu

Sep

13

12

Local Definitions and Lexical Scope

Homework 3

HTDP Parts 5-6

Sep
22
18

7

Th

Sep

15

14

Lambda the Ultimate and Reduction Semantics

LawsOfEvaluation
Sep 22

8

TuSep
20
19


Functional Abstraction and Polymorphism
Sep 29

9

Th

Sep 22

Functions as Values

Homework 4Sep 29

10

Tu

Sep 27

Generative (Non-structural) Recursion




11

Th

Sep 29

Lazy Evaluation and Non-strict Constructors

Homework 5*Oct 11

12

Tu

Oct 04

Techniques for Implementing Lazy Evaluation



13

Th

Oct 06

A Glimpse at Imperative Racket and Memoization

Sample Exam


Tu

Oct 11

Fall Recess

Sample Exam Key


13

Th

Oct 13

On to Java!

OO Design Notes

14

Tu

Oct 18

Adapting the HTDP Design Recipe to Java

Midterm (Through Lecture 13 and HW 5) 7-10pm

Homework 6 Oct 25

15

Th

Oct 20

Higher-order Functional Programming in Java


Oct 31

16

Tu

Oct 25

Four Key Idioms for Encoding FP in Java

Homework 7Nov 1

17

Th

Oct 27

The Singleton and Visitor Patterns



18

Tu

Nov 01

Java Generics and Their Role in FP in Java

Homework 8*Nov 10

19

Th

Nov 03

Functional Rust I



20

Tu

Nov 08

Functional Rust II


Nov 15

21

Th

Nov 10

OO Rust Using Only Traits

Homework 9

22

Tu

Nov 15

Rust ...



23

Th

Nov 17

Rust ...


Homework 10Nov 29
24TuNov 22Rust ...Homework 11*Dec 2
25TuNov 29Rust Concurrency

26ThDec 1Future of FP

*Assignments marked with * are double assignments that count twice as much as regular assignments.  **indicates the project in lieu of a final examination.

...