- About
- Events
- Calendar
- Graduation Information
- Cornell Learning Machines Seminar
- Student Colloquium
- BOOM
- Fall 2024 Colloquium
- Conway-Walker Lecture Series
- Salton 2024 Lecture Series
- Seminars / Lectures
- Big Red Hacks
- Cornell University - High School Programming Contests 2024
- Game Design Initiative
- CSMore: The Rising Sophomore Summer Program in Computer Science
- Explore CS Research
- ACSU Research Night
- Cornell Junior Theorists' Workshop 2024
- People
- Courses
- Research
- Undergraduate
- M Eng
- MS
- PhD
- Admissions
- Current Students
- Computer Science Graduate Office Hours
- Advising Guide for Research Students
- Business Card Policy
- Cornell Tech
- Curricular Practical Training
- A & B Exam Scheduling Guidelines
- Fellowship Opportunities
- Field of Computer Science Ph.D. Student Handbook
- Graduate TA Handbook
- Field A Exam Summary Form
- Graduate School Forms
- Instructor / TA Application
- Ph.D. Requirements
- Ph.D. Student Financial Support
- Special Committee Selection
- Travel Funding Opportunities
- Travel Reimbursement Guide
- The Outside Minor Requirement
- Diversity and Inclusion
- Graduation Information
- CS Graduate Minor
- Outreach Opportunities
- Parental Accommodation Policy
- Special Masters
- Student Spotlights
- Contact PhD Office
Abstract:
In this teaching session, I will introduce the lambda calculus, an absurdly simple programming language that nonetheless has the same power as modern programming languages. When writing programs in Python, Java, or C, we combine numbers, names, and other symbols to capture mathematical operations, control program execution (loops and conditionals), and express high-level concepts like objects and types. While the lambda calculus provides none of these features explicitly, we will see how it can express many familiar programming concepts with just three constructs: functions, variables, and function application. By learning the lambda calculus--the theoretical underpinning of functional languages like Haskell and ML-- programmers can gain a deeper understanding of all programming languages.
Biography:
Richard Townsend is a 6th year PhD student at Columbia University studying Programming Languages and Compilers under Stephen A. Edwards and Martha A. Kim. His research focuses on the use of functional languages and high-level optimizations to translate recursive algorithms with irregular memory access patterns into efficient hardware designs. This work revolves around his research group's current project: an optimizing Haskell-to-SystemVerilog compiler.