Versions Compared

Key

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

...

General Information

 

Office Hours
Instructor
    
Corky Cartwright

TuTh

 

3pm-4pm

By appointment

DCH 3104

TBA

Teaching Assistants

Agnishom Chattopadhyay

Clayton Ramsey

Andrew Obler

TBA

TBA

TBA

TBA

TBA

TBA

TBA

TBA

TBA

Textbooks
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 or Eclipse.
  • We are still evaluating IDEs for Rust.

 

...

Week

Day

Date

Lecture Topic and Resources

Work AssignedWork Due

1

Tu

Aug 23

Motivation and the Elements (Constants) of Racket

Skim HTDP First Edition, Part 1 (Ch 1-8), Part 2 (Ch 9-10)Sep 01
 ThAug 25Conditionals, Function Definitions and Computation by Reduction Homework 1Sep 03

2

Tu

Sep 01

Conditionals, Function Definitions and Computation by Reduction

Homework 1

Review Ch 8

HTDP Part 2 (Ch 9-10)

Sep 08
3ThSep 03

The Program Design Recipe for Racket focusing on using recursion

to process lists and natural numbers

Preface, 9.4

HTDP Part 2 (Ch 11-13)

Sep 10

4

Tu

Sep 0806

Data Definitions, Data-driven Structural Recursion,

Homework 2

HTDP Part 3

Sep 1615
5ThSep 1008Mutually Recursive Definitions and Help FunctionsHTDP Ch 15-17Sep 1715

6

Tu

Sep 1513

Local Definitions and Lexical Scope

Homework 3

 HTDP HTDP Parts 5-6

Sep 2322

7

Th

Sep 1715

Lambda the Ultimate and Reduction Semantics

LawsOfEval.pdfLawsOfEvaluationSep 2622

8

TuSep 1920

 

Functional Abstraction and Polymorphism Oct 6Sep 29

9

Th

Sep 2422

Functions as Values

Homework 4Oct 5Sep 29

10

Tu

Sep 2927

Generative (Non-structural) Recursion

 

 Oct 6 

11

Th

Oct 01Sep 29

Lazy Evaluation and Non-strict Constructors

 Homework 5*Oct 11 

12

Tu

Oct 0604

Techniques for Implementing Lazy Evaluation

Homework 5*  Oct 14

13

Th

Oct 0806

A Glimpse at Imperative Racket and Memoization

 Sample Exam 

 

Tu

Oct 1311

Racket ReviewFall Recess

Sample Exam Sample Exam Key

 

13

Th

Oct 1513

On to Java!

OO Design Notes  FriOct 16Midterm  

14

Tu

Oct 2218

Adapting the HTDP Design Recipe to Java

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

Homework 6 Oct 2725

15

Th

Oct 2420

Higher-order Functional Programming in Java

  Oct 31

16

Tu

Oct 2925

Four Key Idioms for Encoding FP in Java

Homework 7Nov 61

17

Th

Oct 3127

The Singleton and Visitor Patterns

  

18

Tu

Nov 0301

Java Generics and Their Role in FP in Java

Homework 8*Nov 1610

19

Th

Nov 0503

Functional Rust IThe Strategy Pattern: Functions as Arguments in Java

  

20

Tu

Nov 1008

Functional Rust IICore Haskell (call-by-name, lazy constructors) (Agnishom)

  Nov 15

21

Th

Nov 12Haskell Pattern Matching (Agnishom)10

OO Rust Using Only Traits

Homework 9Nov 19 

22

Tu

Nov 1715

Rust ...Haskell Type Classes (Agnishom)

 Dec 16 

23

Th

Nov 17

Rust ...

 

Homework 10Nov 29
24TuNov 22Rust ...Homework 11*Dec 2
25TuNov 29Rust Concurrency  
26ThDec 1Future of FP 

Nov 19

Haskell Monads (Agnishom)

Final Project** 

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

...