teaching machines

CS 318 Lab 17 – Pseudoselectors and Dropdowns

Dear students, Today’s lab is designed around something I saw in a lot of your mockups: dropdown navigation menus. There aren’t a lot of new ideas here, but application of old ones. So, I won’t talk much. However, I did incorporate a few of the pseudoclass selectors that you met in CSS Diner. Let’s revisit […]

CS 330 Lecture 24 – Lambdas

Dear students, There are at least four ways of defining functions in Haskell: by defining a named function by partially applying parameters to get a new function expecting only the remaining parameters by composing a gauntlet of functions together by defining unnamed lambdas We discussed composition last time. We continue that today, but we also […]

CS 330 Lecture 23 – Ways of Making Functions: Composition

Dear students, There are at least four ways of defining functions in Haskell: by defining a named function by partially applying parameters to get a new function expecting only the remaining parameters by composing a gauntlet of functions together by defining unnamed lambdas We’ve seen the first two. Now let’s turn to composition. You’ve almost […]

CS 318 Lab 16 – Midterm

Dear students, Today we have a midterm. Here’s your TODO list for next time: Complete CSS Diner, a game for learning CSS selectors. Read chapter 9 in your book. On a quarter sheet, share 2-3 questions or observations from your playing and reading. See you next time! Sincerely, Midterm You will reverse engineer and recreate […]

CS 330 Lecture 22 – Ways to Define Functions: Partial Evaluation

Dear students, There are at least four ways of defining functions in Haskell: by defining a named function by partially applying parameters to get a new function expecting only the remaining parameters by composing a gauntlet of functions together by defining unnamed lambdas A good first question to ask is this: why do we need […]

CS 330 Lecture 21 – More Recursion and Pattern Matching

Dear students, Today we solve more problems in Haskell together. Along the way we will discover some of the peculiarities of functional programming, like the lack of iteration, the supremacy of recursion, and the beauty of pattern matching: Here are the problems we’ll solve: Last time we started to write a function to determine if […]

CS 318 Lab 15 – Tables

Dear students, Today we explore the HTML table element. At its core, a table is just a grid of rows and columns. It supports headers, borders, and cells that extend across multiple columns and multiple rows. Before div and CSS positioning came along, tables were the primary vehicle for structuring a page. It was awful. […]

CS 330 Homework – Wasd – due before May 15

See the PDF.

Octajewel

Madeup has a good number of solidifiers, but I’m always encountering compelling algorithmic shapes that don’t like to be modeled out of cylinders, boxes, spheres, extrusions, or revolutions. This has led to the addition of parametric surfaces, boolean mesh operations, and metaballs. But none of these were up to task of modeling my three-year-old’s Duplo […]

CS 330 Lecture 20 – Recursion, Cases, and Pattern Matching

Dear students, Today we solve more problems in Haskell together. Along the way we will discover some of the peculiarities of functional programming, like the lack of iteration, the supremacy of recursion, and the beauty of pattern matching: Here is an exercise that I ask you to complete with a neighbor: Collatz The first number […]

1 2 3 4 5 6 9