Skip to content

VandyApps/advanced-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

Advanced Programming Sessions @ VandyApps

Are you a Vanderbilt computer science student looking to become a better programmer? Join us on an 11 week journey towards that goal. We will be exploring functional programming, monads, promises, typeclasses, and more in JavaScript and Haskell, and becoming better, smarter programmers in the process.

Coming Fall 2015.

Week 1 - Introduction to functional programming in JavaScript

  • Using a REPL.

  • Welcome to JavaScript.

  • Anonymous functions: Lambdas, closures, lambda lifting.

Week 2 - Map / Reduce / Filter / Zip in JavaScript

  • Map | Reduce/Fold | Filter | Zip

Week 3 - Introduction to Monads

  • Note: Use Haskell style type signatures in descriptions without saying what they are.

  • Monad laws: Left Identity, Right Identity, Associativity

  • Maybe monad

Week 4 - Async monad / Promises A+

  • Callback hell

  • Async monad

  • Promises | A+

Week 5 - Either Monad

  • Left (error) | Right (result)

  • How this helps avoid the need for exceptions.

Week 6 - Introduction to Programming in Haskell 1

  • Installation directions (email out)

  • Types

  • Writing simple (pure) functions.

  • Using the REPL.

  • Pattern matching.

Week 7 - Introduction to Programming in Haskell 2

  • If statements

  • Case statements

  • Guards

Week 8 - Creating Data Types in Haskell

  • data

  • Recursive types

  • Binary tree example.

  • type

Week 9 - Typeclasses 101

  • Type classes.

  • Typeclasses are similar to interfaces in OOP.

  • Build on binary tree example and use typeclass for its operations.

  • BEncoding example.

Week 10 - $ and . operators | More Monads

  • $ and . operators

  • Maybe, Either monads

  • Identity monad

  • Reader monads

  • do notation

Week 11 - do and IO in Haskell

  • Writer monads

  • IO Monad

  • do notation with IO monad

Week 12 - Monad Transformers

  • Stacking non-IO monads

  • Stacking monads on top of IO

About

Code for the Advanced Programming sessions at VandyApps.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published