Exciting teaching news

Looks like I’ve got a busy autumn ahead! Read on for two pieces of news that I’m very happy about.

In September, I’ll be teaching a Haskell workshop at the Strange Loop Conference in St Louis. Here’s the abstract:

Modern programming presents a daunting array of challenges: proliferating technologies, messy inputs, unreliable networks, huge volumes of data, how to verify that results are correct, making it all fast enough. The Haskell programming language is well suited to addressing this broad range of needs, as it uniquely combines conciseness, safety, and high performance.

In this fast-moving, interactive tutorial we will learn Haskell by developing a realistic analytic application: we’ll crawl a web site and rank its pages in order of authority. This combines some very modern concerns: network programming; handling dodgy HTML; big data; and number crunching. With our emphasis on getting real work done, we’ll show off some of Haskell’s compelling features and demonstrate how they help us to develop dependable, easy to understand code.

There’s a ton of other great speakers lined up for this year’s Strange Loop, so if you like learning from, and talking with, people who are excited about software, this will be a great conference to attend.

As if that weren’t enough, I’m excited to be working with David Mazières on a new class at Stanford University, "CS240H: Functional Systems in Haskell".

As far as I know, this will be the first academic course of its kind, where we focus on the use of functional programming techniques to build solid, fast, secure systems software. Intrinsic merits of the class aside, it’s going to be a lot of fun to teach this class this in the educational cradle of Silicon Valley, where systems software is the bread and butter of a lot of research and commercial innovation.

We’ll start off with some familiar topics: the basics of Haskell, laziness, monads, parsers, and all that. But from there, we’ll integrate testing, reliability, and debugging; performance tuning; interfacing to native code; concurrency and I/O paradigms; language extensions; meta-programming; and applications to the web and security.

We’re also looking at bringing in some prominent guest lecturers from the Haskell community to talk about topics of interest to them. I’ll name names when we have them confirmed.

David and I are both very much motivated by writing code that’s clean and fast, so as much as we’ll spend time talking about theory, research, and academics, this will be a very hands-on "let’s bang out some awesome software!" kind of affair.

Here’s a rough outline of what the course will involve:

  • A couple of "Haskell basics" classes.

  • Laziness: its applications and pitfalls.

  • Monads and parsers; programming in continuation-passing style.

  • Tricks for debugging and performance tuning.

  • Reliability: design for robustness; property-based testing with QuickCheck; code coverage.

  • The Iteratee/Enumerator paradigm for I/O.

  • How to use the foreign function interface, build interfaces to native code, deal efficiently with data in various contexts, and generally think about memory. Possibly also coupled with discussion of the Haskell networking API.

  • Concurrency and parallelism: event- vs thread-based concurrency, Software Transactional Memory, parallel Haskell, data parallel Haskell, repa.

  • Library-level optimization: function specialization, dictionary passing, RULES pragmas, stream fusion.

  • All the gnarly things you can do with functional dependencies and type families, as well as other relevant extensions such as GADTs.

  • How Haskell is implemented, to give students some idea of what is actually going on.

  • Generic programming: SYB and fun with Data.

  • Web-related topics? formlets, plus maybe some cool Continuation type tricks. Haskell database interfaces and interesting things you can do with types, HList/HaskellDB.

  • Language-level information flow control.

  • Case studies of real systems in Haskell.

I know that some SF Bay Area locals have questions about the possibility of auditing the class, whether materials will be available online, and the like. I don’t have answers yet, but stay tuned.

Posted in haskell
18 comments on “Exciting teaching news
  1. Alex Miller says:

    Can’t wait to see you at Strange Loop this year! Re the lineup, current list is here: http://thestrangeloop.com/sessions . Registration, the new web site, and the open CFP will be live as soon as we can nail down a couple site issues.

  2. Michael Callahan says:

    It would be great if the lectures could be videotaped and made available (a la the famous Stanford iPhone programming course). I think there’s a huge hunger for information on these topics.

    PS: this list would also make an excellent table of contents for Volume II of _Real World Haskell_! Hint, hint.

  3. Chris Heller says:

    That course sounds awesome! I’m curious. What, if anything, will the accompanying text for this course be?

  4. +1 on Michael Callahan idea.

    If the teachers of the iPhone development course could do this, there must be a way to achieve videotaped classes for this course as well. It would be of so much value to the Haskell Community and the functional programming paradigm in general.

    Exciting news!, Good luck.

  5. Ian Duncan says:

    I second everything Michael says. Videos of this course would be a tremendous boon to the Haskell community!

  6. Tim Sears says:

    If you want to use the Hacker Dojo, Mountain View facilities in connection with this or any related events, feel free to contact me at hackerdojo.com (tim.sears at).

  7. Alessandro Stamatto says:

    It would be extreme awesome if the haskell comunity could have access to the course material, and videos like Michael said.

    (The ideia for Real World Haskell 2 is great too!)

  8. Clint Moore says:

    I would contribute money to see that video is taken of the classes.

    Anyone else?

  9. Alessandro Stamatto says:

    If it’s through paypal, i would contribute too.

  10. Chris Dew says:

    I would also contribute a little.

  11. Adam Duracz says:

    @Clint Moore: I would be happy to contribute as well.

  12. Daniel says:

    Bryan, isn’t this great content for another book? ;)

  13. Count me in on the contribution… I wouldn’t miss those lectures.

  14. I’d pitch in a decent bit to have a video of this course, too. Sounds awesome.

  15. Alexander Battisti says:

    Having this course available to the public would be really valuable for the Haskell ecosystem. As would be a Haskell Equivalent of Stevens’s Advanced Programming in the UNIX Environment or Leroy’s Unix system programming in Objective Caml. :)

    Of course I would pitch in with my money, too.

  16. Mark Wong-VanHaren says:

    Exciting! Like a dream come true.

  17. Petro says:

    A video version of the lectures would be amazing.

  18. roy_hu says:

    The class has started! Any news on its availability online?

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>