Wednesday, August 21, 2019

Functional Program Design in Scala


The second class in the Scala specialization down. I was a little put off by the fact that this is basically a retooled/abridged version of the "Functional Reactive Programming" class, which made it feel incomplete. Regardless, the programming exercises were fun, if a bit lightweight. The lecture material was ... meh.

My solutions on Github: FunctionalProgramDesignScala




I don't really have much to discuss on the lecture material, so rather than force it I'll just leave off with the outline:

Week 1:

  • Setup and review
  • 1.1 - Queries with For
  • 1.2 - Translation of For
  • 1.3 - Functional Random Generators
  • 1.4 - Monads

Week 2:

  • 2.1 - Structural Induction on Trees
  • 2.2 - Streams
  • 2.3 - Lazy Evaluation
  • 2.4 - Computing with Infinite Sequences
  • 2.5 - Case Study: the Water Pouring Problem
  • Programming Assignment: Bloxorz

Week 3:

  • 3.1 - Functions and State
  • 3.2 - Identity and Change
  • 3.3 - Loops
  • 3.4 - Extended Example: Discrete Event Simulation
  • 3.5 - Discrete Event Simulation: API and Usage
  • 3.6 - Discrete Event Simulation: Implementation and Test
  • Programming Assignment: Quickcheck

Week 4:

  • 4.1 - Imperative Event Handling: The Observer Pattern
  • 4.2 - Functional Reactive Programming
  • 4.3 - A Simple FRP Implementation
  • 4.4 - Latency as an Effect 1
  • 4.5 - Latency as an Effect 2
  • 4.6 - Combinators on Futures 1
  • 4.7 - Combinators on Futures 2
  • 4.8 - Composing Futures 1
  • 4.9 - Implementation of flatMap on Future
  • 4.10 - Composing Futures 2
  • Video: LectureConclusion
  • Programming Assignment: Calculator

No comments:

Post a Comment