Intro

Who am I?

Nadia Polikarpova
  • 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









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:
    1. Turn on your mic and ask
    2. 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?

Tony Hoare, Turing Award Lecture, 1980:

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?







Simon Peyton Jones:

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
Alan Perlis, Epigrams in Programming:

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
  • 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

  1. 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
  2. Vote
    • Using iClicker remote or app
  3. Class Discuss
    • What was easy or tricky?







Questions?