Who am I?
- Assistant professor at CSE since 2017
- PhD at ETH Zurich
- Postdoc at MIT
My Research
- Program Verification: how to prove the program is doing the right thing?
- Program Synthesis: how to generate a program that does the right thing?
The Crew
- Michael Borkowski
- Han Cao
- Kasra Ferdowsifard
- Michael James
- Matt Kolosick
- Rose Kunkel
Lecture Format
In-person + live on Zoom
For those joining on Zoom:
- Keep your mic off unless you are talking
- Keep your video on if you can
- Two ways to ask a question:
- Turn on your mic and ask
- Type into zoom chat
- Same if I ask you a question
Lectures will also be recorded and published on canvas and podcast
What is CSE230?
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.
Goal of 230: Obviously No Deficiencies
Building software that is
- Readable
- Reusable
- Modifiable
- Predictable
- Checkable
Yes, but how???
Functional programming!
Have you used a functional language before?
Who Uses Functional Programming?
PL Researchers
Who Uses Functional Programming?
When the limestone of imperative programming has worn away, the granite of functional programming will be revealed underneath
CSE230: Medium of Instruction
Haskell
Why Haskell?
- Bleeding edge PL
- Beautiful
- Fun
- Blows your mind
A language that doesn’t affect the way you think about programming, is not worth knowing.
CSE 230: (Rough) Outline
- The Lambda Calculus: the bedrock of FP
- Intro to Haskell
- Types!
- Advanced FP (monads, concurrency?)
- Building nre languages (interpreters, parsers)
- Testing and verification
Course Logistics
- webpage
- calendar, lecture notes, programming assignments, …
- canvas
- lecture recordings
- lecture recordings
- piazza
- announcements and discussions
- please sign up!
Grading
- 70% Homework assignments
- 30% Project
- 05% Extra credit for Piazza discussion
- To top 15 best participants
Assignments
- 4(5?) programming assignments
- Released online, at least a week before due date
- Due on Fridays at 11:59pm
- except when Friday is a holiday
- check calendar for due dates
- first HW due 10/7
- 4 late days
- used atomically (5 mins late = 1 late day)
- Distributed, submitted, and graded on GitHub Classroom
- submission instructions in the assignment
- fill out the form with your GH handle (see Piazza)
- Solve alone or in groups of two
- user this piazza thread to find a partner
- you can use any assignment excpet HW0 as comprehensive exam, but you need to do it alone
Project
- More details here
- Work in groups of 4
- Develop any standalone command-line app
- e.g., a game, a text editor, a shell, …
- Four milestones throughout the quarter:
- Team registration: 10/26 (1%)
- Proposal: 11/9 (2%)
- Updates: 11/23 (2%)
- Final demo: 12/7 (25%)
In-class Quizzes
We will do quizzes in class via iClickers (remotes and app)
- Make class interactive
- Help you and me understand what’s tricky
You need to buy an iClicker remote or install the iClicker app on your phone
Protocol
- Discuss
- I show the quiz on screen
- If in class: discuss with your neighbor
- If remote: discuss with a friend on zoom chat (or any other chat)
- Try to reach consensus
- Vote
- Using iClicker remote or app
- Class Discuss
- What was easy or tricky?