Lecture 10 (pt 1): Changes using Standards-based grading

Recap: what is supposed to happen when you finish this class?

  • programs!
  • logic (ie: discrete++)!

Post-midterm

  • no blasting off
  • solidify your foundations (💻, 🐛, 🎲)

🎲

  • rules: semantics
  • moves: syntax
  • goal: runtime/typing

Up next

  • (most) answers in w1-6.
  • blackboard → livecoding
  • me: more “coder-friendly” notation†

† without sacrificing correctness

changes

  • ↓ compilation, big-step
  • ↑ small-step, λ / λ→

note: λ ≡ plait (F1-F4)

major changes

  • ❌ homework (→ 📝 + practice)
  • ❌ concept checks (→ recommended problems)
  • ❌ midterm (→ practice & partial)
  • ❌ final (→ presentations)

Class structure solidified!

  • Lecture (40~60min)
  • 📝 (15/20min, pencils!)
  • 🤔 (5min, no pencils!)
  • break (10min)

Then either repeat, unstructured assessments, or presentation time†

Final exam → final presentations 🚧

a “design recipe” format

Two modes

  • “Simple” : ONE feature in {Rust, Koka, Lean, etc.}
  • “Skill-eval” : a lecture-like language {ISWIM, Lazy, FFIs, System-T}

A rough idea

10-15min:

  • motivate (memory safety + C)
  • language intro (🦀)
  • functional examples (💻)
  • demonstrate fix 🛠

Evaluation Criteria 🚧

TBD, but baseline is:

  • C: What is the feature? 💻
  • B: What problem does this feature solve?
  • A: How does language solve the problem?

Skills

class so far:

  • 4️⃣ Intro + Functional programming (Weeks 1-2)
  • 🔟 Runtime semantics (Weeks 2-4)
  • 5️⃣ Type systems and logic (Weeks 5-7)

Please follow along in blackboard.

Example:

  • F1 designing simple functions (new: with the design recipe)

AKA

  • F1 “I can apply the design recipe to solve a given problem using a recursive function.”

3-point scale:

  • “Not Yet” (ie: ❌, 0)
  • “Approaching Expectations” (ie: ⍻, 1)
  • “Meets Expectations” (ie: ✓, 2)

Intro + Functional programming

4 skills

Intro + Functional programming (4 skills)

  • F1 designing simple functions (new: with the design recipe)
  • F2 working with functions as arguments
  • F3 step through a function’s execution
  • F4 can translate surface syntax into an AST

Runtime semantics

10 skills

Runtime semantics (R1-3 skills)

  • R1 [intuition] Understanding surface syntax of LetLang/Lam
  • R2 [intuition] Understand variable shadowing and how to perform substitution
  • R3 [intuition] classify expressions as: values, reducible (ie: can still step), or stuck (ie: cannot step)

Runtime semantics (R4-5 skills)

  • R4 [intuition] Understanding the next expression to reduce in call-by-value semantics (small-step)
  • R5 [intuition] tracing the Lambda calculus (small-step) for a full reduction sequence

Runtime semantics (R6&7 skills)

  • R6 [applying] small-step a single program using as derivation tree (as opposed to a trace)
  • R7 [applying] big-step a single program using a derivation tree

Runtime semantics (R8&9 skills)

  • ⋆R8 [implement] implement a small-step interpreter from supplied rules
  • ⋆R9 [implement] implement a big-step interpreter from supplied rules

Runtime semantics (R10 skills)

  • R10 [understanding] Given supplied rules, show that a program gets stuck, and explain why.

Type systems and logic

5 skills

Type systems and logic (T1&2 skills)

  • T1 [intuition] read a “mathematical typing judgment” and translate into our “code typing judgments”
  • T2 [intuition] type-check simple expressions in STLC (or infer what their type should be)

Type systems and logic (T3&4 skills)

  • ⋆T3 [applying] build a typing derivation for well-typed expressions in the STLC
  • T4 [implement] implement a type-checker in plait, given rules

Type systems and logic (T5 skills)

  • T5 [understanding] can create counterexamples that type-checks but doesn’t run and vice-versa.

Your grade

  • D: You can do the foundations
  • C: D+6 skills (speedrun: runtime intuition and one “application”)
  • B: D+11 skills (speedrun: “all intuition” and “1 apply + 1 implement” for runtime and types).
    • required: implement interp (R8) and typeof (T4).
  • A: D+15 skills (all)

partial credit

  • +: Partial credit: you are making progress (1/2 of skills are “Approaching Expectations”)
  • ++: another grade bump if you complete the revised midterm as a “homework assignment”

C++ = B- B++ = A-

Reassessments

You will be able to retake assessment. What does this mean?

The point of reassessments

❌ “do-over” ✓ I am improving

logistics

  • You will not get to keep your assessments
  • can review them during my office hours (in person) or schedule a time
  • As I fill out the question bank, you can schedule skills at testing center.

What should I do next?

  • Check your current skills in Blackboard (informed by midterm + prev assessment)
  • Choose skills to practice.

Q&A

Please: ✋ & discord