On this page:
Jay Mc  Carthy
1 About Me
2 Research Interests
3 Publications
4 Students
5 Teaching
5.1 Archived Courses from Vassar
5.2 Archived Courses from BYU
6 Service
7 Projects
7.1 Current
7.2 Past
8 Personal
9 Links
10 Contact
11 PGP Public Key

Jay McCarthy

1 About Me

I am the CTO and co-founder of Reach. Previously, I was an associate professor at the University of Massachusetts at Lowell in the Computer Science Department. Before that, I was at Brigham Young University and then Vassar College.

I am a member of the PLT research group. I work on the Racket programming language.

I completed a Ph.D. at Brown University in the Computer Science Department. I worked with Shriram Krishnamurthi. I was an NSF Graduate Research Fellow.

I graduated from the University of Massachusetts at Lowell where I studied Computer Science, Mathematics, and Economics.

My work has been supported by the National Science Foundation’s Software and Hardware Foundations (CISE/CCF) program, Secure and Trustworthy Cyberspace (SaTC) program, and Computing Education for the 21st Century (CISE/CNS) program.

2 Research Interests

I am interested in applying programming languages research techniques to cryptographic protocols and the Web, as well as other areas of security and systems. I am also very interested in theorem provers and program verification.

3 Publications

  1. Matthew Flatt, Taylor Allred, Nia Angle, Stephen De Gabrielle, Robert Bruce Finder, Jack Firth, Kiran Gopinathan, Ben Greenman, Siddhartha Kasivajhula, Alex Knauth, Jay McCarthy, Sam Phillips, Sorawee Porncharoenwase, Jens Axel Søgaard, and Sam Tobin-Hochstadt. “Rhombus: A New Spin on Macros Without All the Parentheses”. OOPSLA 2023. (PDF)

  2. Kimball Germane and Jay McCarthy. “Newly-Single and Loving It: Improving Higher-Order Must-Alias Analysis with Heap Fragments”. ICFP 2021. (Publisher) (PDF)

  3. Ralph D. Clifford, Firas Khatib, Trina Kershaw, Kavitha Chandra, and Jay McCarthy. “Brief of Amicus Curiae Interdisciplinary Research Team on Programmer Creativity Addressing Expressions and Ideas”. Google LLC vs Oracle America, Inc. in the Supreme Court of the United States (18-956, 2020). (Publisher) (PDF)

  4. Radha Nakade, Eric Mercer, Peter Aldous, Kyle Storey, Benjamin Ogles, Joshua Hooker, Sheridan Jacob Powell, and Jay McCarthy. “Model Checking Task Parallel Programs for Data-race”. Innovations in Systems and Software Engineering 2019. (PDF)

  5. Kimball Germane, Jay McCarthy, Michael Adams, and Matthew Might. “Demand Control-Flow Analysis”. VMCAI 2019.

  6. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. “A Programmable Programming Language”. Communications of the ACM, March 2018. (Publisher) (Slides)

  7. Radha Nakade, Eric Mercer, Peter Aldous and Jay McCarthy. “Model Checking Task Parallel Programs for Data-race”. NASA Formal Methods Symposium 2018.

  8. Max S. New, Burke Fetscher, Jay McCarthy, and Robert Bruce Findler. “Fair Enumeration Combinators”. Journal of Functional Programming 27, e19, 2017. (Publisher) (PDF) (Code)

  9. Jay McCarthy, Burke Fetscher, Max New, Daniel Felty, and Robert Bruce Findler. “A Coq Library For Internal Verification of Running-Times”. Science of Computer Programming 2017. (Publisher) (PDF) (Code)

  10. Jay McCarthy. “Bithoven: Gödel Encoding of Chamber Music and Functional 8-Bit Audio Synthesis”. FARM 2016. (PDF) (Code)

  11. Jay McCarthy, Burke Fetscher, Max New and Robert Bruce Findler. “A Coq Library For Internal Verification of Running-Times”. FLOPS 2016. (PDF) (Code)

  12. Helen H. Hu, Cecily Heiner, and Jay McCarthy. “Deploying Exploring Computer Science Statewide”. SIGCSE 2016. (PDF)

  13. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Jay McCarthy, and Sam Tobin-Hochstadt. “The Racket Manifesto”. SNAPL 2015. (PDF)

  14. Neil Toronto, Jay McCarthy, and David Van Horn. “Running Probabilistic Programs Backwards”. ESOP 2015. (PDF)

  15. Neil Toronto and Jay McCarthy. “Practically Accurate Floating-Point Math”. Computing in Science and Engineering, July 2014. (Publisher) (PDF)

  16. Yu Huang, Eric Mercer, and Jay McCarthy. “Proving MCAPI Executions are Correct using SMT”. ASE 2013. (PDF)

  17. Gregory H. Cooper, Arjun Guha, Shriram Krishnamurthi, Jay McCarthy, and Robert Bruce Findler. “Teaching Garbage Collection without Learning Compilers or Interpreters”. SIGCSE 2013. (PDF)

  18. Neil Toronto and Jay McCarthy. “Computing in Cantor’s Paradise with LambdaZFC”. FLOPS 2012. (PDF) (Code) (Slides)

  19. Everett Morse, Nick Vrvilo, Eric Mercer, and Jay McCarthy. “Modeling Asynchronous Message Passing for C Programs”. VMCAI 2012. (PDF) (Code)

  20. Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, Robert Bruce Findler. “Run Your Research: On the Effectiveness of Lightweight Mechanization”. Symposium on Principles of Programming Languages, 2012. (PDF) (Code)

  21. Casey Klein, Jay McCarthy, Steven Jaconette and Robert Bruce Findler. “A Semantics for Context-Sensitive Reduction Semantics”. Asian Symposium on Programming Languages and Systems, 2011. (PDF) (Code)

  22. Tim Disney, Cormac Flanagan, and Jay McCarthy. “Temporal Higher-Order Contracts”. International Conference on Functional Programming, 2011. (PDF) (Code) (Slides)

  23. Neil Toronto and Jay McCarthy. “From Bayesian Notation to Pure Racket via Discrete Measure-Theoretic Probability in LambdaZFC”. Symposium on Implementation and Application of Functional Languages, 2011. (PDF) (Slides)

  24. Jay McCarthy. “The Two-State Solution: Native and Serializable Continuations Accord”. International Conference on Object Oriented Programming, Systems, Languages and Applications, 2010. (PDF) (Code)

  25. Jay McCarthy and Shriram Krishnamurthi. “Trusted Multiplexing of Cryptographic Protocols”. International Workshop on Formal Aspects in Security and Trust, 2009. (PDF) (Code)

  26. Jay McCarthy. “Automatically RESTful Web Applications Or, Marking Modular Serializable Continuations”. International Conference on Functional Programming, 2009. (PDF) (Code)

  27. Jay McCarthy. “Static Analyses of Cryptographic Protocols”. PhD Dissertation, Brown University, 2009. (PDF) (Code)

  28. Jay McCarthy and Shriram Krishnamurthi. “Cryptographic Protocol Explication and End-Point Projection”. European Symposium on Research in Computer Security, 2008. (PDF) (Code)

  29. Jay McCarthy and Shriram Krishnamurthi. “Minimal Backups of Cryptographic Protocol Runs”. Formal Methods in Security Engineering, 2008. (PDF) (Code)

  30. Jay McCarthy, Joshua Guttman, John Ramsdell, and Shriram Krishnamurthi. “Compiling Cryptographic Protocols for Deployment on the Web”. International World Wide Web Conference, 2007. (PDF) (Code)

  31. Shriram Krishnamurthi, Fiona Hopkins, Jay McCarthy, Paul T. Graunke, Greg Pettyjohn, and Matthias Felleisen. “Implementation and Use of the PLT Scheme Web Server”. Higher-Order and Symbolic Computation, 2007. (PDF) (Code)

  32. Jay McCarthy and Shriram Krishnamurthi. “Interaction-Safe State for the Web”. In Scheme and Functional Programming, September 2006. (PDF) (Code)

4 Students

5 Teaching

2021 Fall:

 

304 - Foundations of Computer Science

 

2021 Fall:

 

301 - Organization of Programming Languages

 

2021 Spring:

 

406 - Compiler Construction

 

2020 Fall:

 

304 - Foundations of Computer Science

 

(feedback)

2020 Fall:

 

301 - Organization of Programming Languages

 

(feedback)

2020 Summer:

 

304 - Foundations of Computer Science

 

2020 Summer:

 

301 - Organization of Programming Languages

 

2019 Fall:

 

304 - Foundations of Computer Science

 

(feedback)

2019 Fall:

 

301 - Organization of Programming Languages

 

(feedback)

2019 Summer:

 

304 - Foundations of Computer Science

 

2019 Summer:

 

301 - Organization of Programming Languages

 

2019 Spring:

 

406 - Compiler Construction

 

(feedback)

2018 Fall:

 

304 - Foundations of Computer Science

 

(feedback)

2018 Fall:

 

301 - Organization of Programming Languages

 

(feedback)

2018 Summer:

 

304 - Foundations of Computer Science

 

(feedback)

2018 Summer:

 

301 - Organization of Programming Languages

 

(feedback)

2018 Spring:

 

406 - Compiler Construction

 

(feedback)

2018 Spring:

 

304 - Foundations of Computer Science

 

(feedback)

2017 Fall:

 

304 - Foundations of Computer Science

 

(feedback)

2017 Fall:

 

301 - Organization of Programming Languages

 

(feedback)

2017 Summer:

 

305 - Computer Architecture

 

(feedback)

2017 Summer:

 

304 - Foundations of Computer Science

 

(feedback)

2017 Spring:

 

406 - Compiler Construction

 

(feedback)

2017 Spring:

 

301 - Organization of Programming Languages

 

(feedback)

2016 Fall:

 

304 - Foundations of Computer Science

 

(feedback)

2016 Fall:

 

301 - Organization of Programming Languages

 

(feedback)

2016 Summer:

 

404 - Analysis of Algorithms

 

(feedback)

2016 Summer:

 

304 - Foundations of Computer Science

 

(feedback)

2016 Spring:

 

308 - Operating Systems

 

(feedback)

2016 Spring:

 

304 - Foundations of Computer Science

 

(feedback)

2015 Fall:

 

305 - Computer Architecture

 

(feedback)

Other feedback is available at RateMyProfessors.com.

5.1 Archived Courses from Vassar

2015 Spring:

 

250 - Modeling, Simulation and Analysis

 

(feedback)

2015 Spring:

 

203 - Computer Science III

 

(feedback)

2014 Fall:

 

241 - Analysis of Algorithms

 

(feedback)

2014 Fall:

 

203 - Computer Science III

 

(feedback)

5.2 Archived Courses from BYU

2013 Fall:

 

330 - Concepts of Programming Language

 

(feedback)

2013 Spring:

 

630 - Advanced Topics in Programming Languages

 

(feedback)

2013 Winter:

 

430 - Advanced Programming Language Theory

 

(feedback)

2012 Fall:

 

330 - Concepts of Programming Language

 

(feedback)

2012 Winter:

 

630 - Advanced Topics in Programming Languages

 

(feedback)

2011 Fall:

 

330 - Concepts of Programming Language

 

(feedback)

2011 Fall:

 

142 - Introduction to Computer Programming

 

(feedback)

2011 Spring:

 

142 - Introduction to Computer Programming

 

(feedback)

2011 Winter:

 

630 - Advanced Topics in Programming Languages

 

(feedback)

2010 Fall:

 

330 - Concepts of Programming Language

 

(feedback)

2010 Winter:

 

630 - Advanced Topics in Programming Languages

 

(feedback)

2009 Fall:

 

330 - Concepts of Programming Language

 

(feedback)

2009 Fall:

 

312 - Algorithm Design and Analysis

 

(feedback)

2009 Winter:

 

630 - Advanced Topics in Programming Languages

 

(feedback)

2008 Fall:

 

330 - Concepts of Programming Language

 

(feedback)

Other feedback is available at RateMyProfessors.com.

6 Service

Program Committees:

Steering Committees:
  • Trends in Functional Programming (2012–)

External Review Committees:
  • POPL 2015

  • OOPSLA 2011

Other:
  • Utah CSTA, Treasurer (2011–2014)

  • Utah NCWIT Aspirations Award committee (2012, 2013)

7 Projects

7.1 Current

I am responsible for many aspects of the Racket programming language. I really like DrDr and the package system.

In particular, I am responsible for continued development of the Racket Web Server. It is available with the standard Racket distribution. If you’d like to learn how to use it refer to the tutorial or application reference manual.

I have a Github account with lots of code on it; in particular, most of my packages live there. I write about lots of this code on my blog.

7.2 Past

I worked on The Whole-Protocol Programming Language, a global language for designing protocols in the strand space model.

I worked on The Cryptographic Protocol Programming Language, a role-based language for designing protocols in the strand space model.

I used to maintain the Continue Conference Manager, a web application for paper submissions, reviews, and PC meetings. It has been superseded by Continue 2.0, which is written in Flapjax.

I wrote the first version of Resume, the Continue of faculty application applications. It has also been rewritten in Flapjax.

8 Personal

I am married to Elizabeth Day McCarthy.

Libby and Jay in Cambridge, MA

We are both members of The Church of Jesus Christ of Latter-day Saints.

Libby and Jay at Salt Lake City Temple

Libby and Jay near Salt Lake City Temple reflecting pool

We have six kids, but this is an old picture:

Family picture Summer 2013

9 Links

I used direct Mormon history tours for the Mormon Heritage Associaton.

I used to attend the Intercontinental Foreign Language Program at Harvard Square.

10 Contact

My email address is my first name and last name separated by a dot at gmail.com or my first name at racket-lang.org, but I only check my email once a day, so be mindful of that.

11 PGP Public Key

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: GnuPG v1.4.11 (GNU/Linux)

 

mQENBE7/JqEBCACo0YXRAwX4pzFqsaspcCejqPNh6MwUpuIIxnm9d3c4ztbh3sIu

vIZBoxCPerXmuMvRIe8VB5/dAJGIrnMBvbfd89UuE3YiYmGO62jL2xezFXE4KmRl

AJWfZJep+2T3WDxMQg6jXozHhY4Wmuy4bNribSNcjgchRaxJ9cJLvFgcse+UlzB0

TYqQeq7/OEbvPYb+OSoUsUfBLqfqiS+ucIbJaHo857LkT5752+sVdS38jDvqB/Cd

DKue1VSMb/E3LlyjPbei8GvDPiso6LWmLEgFwaLbMglCslEAKD7DVS73yxy6oG6X

EHplGtx3W4Hd6vilkLEUoFqd/KIYVr/SvQfVABEBAAG0JUpheSBNY0NhcnRoeSA8

amF5Lm1jY2FydGh5QGdtYWlsLmNvbT6JATgEEwECACIFAk7/JqECGwMGCwkIBwMC

BhUIAgkKCwQWAgMBAh4BAheAAAoJEBjA2Sen9kH+A2EH+wXDu1TNVvMqxWPaL+5c

NeJAPKjxKeES1UTboETwbfv8mIMH+YRHh3KoAJi121zMbZRuU7+WhYiavEWVvj0p

PZEUhIF4pd94nchi6IxFcL4Gk40B1ePjx/s7/gtKwqU9JfJamLrF438+Cys7p0aO

6NgwUAnM5kSCzhGVKlXN0T/51uwekoi+wZzgpkZdqyeb631b8HOpkDNndnrMl5xJ

JpZar4rHxi/Wxj6d3BDarba3AJ2WVay1oZmFw1bGyTqk/Qp3fmwRN9h/fcow4OjQ

kDFDTVWmVOHbWOmYVTbWxYhDca8KpNYHhaJDXZKRawrF8neuHpHfZqnslfGTb7SH

bOu5AQ0ETv8moQEIAMqNOFvGvs35kLuAeExF4ndbogjeVcOUREpoPOZ9eH53EcPm

w2D4UwUyJIRjJPZb3os8vKm9ZcC9tIYXyigVT2RsseJeX7J/W+wl/ukeOUbHQOCm

Fc9e8F+fYFvyrsRiQs8ZS9dvEe+cp1kYPA05Wm0JCzifWxREyhYVb0DzbKbcE67i

YkkR1aWH5OBYEBx8+ycxu15RVScy4U9v5NqTx58BnRDPYNTtATIgpw1rJcdnNNB5

/UQ2PPcSqwbZ87uJeKBlDJ9W45u5JQCDgrlxV6rwwYLTLPdk44fSb2Dg3HvNVkna

nKqUvgjEohDpdsOlgKRsDl0tCMLUxr/2samslXUAEQEAAYkBHwQYAQIACQUCTv8m

oQIbDAAKCRAYwNknp/ZB/nJTB/9msB0B51sqyK8YvChEBE33rZ1BOvvgCLuQL/hq

3WA7EBg7vYEY9Xo7U68wymusmlvtzxv3XrDHiZROJOQiObCLSmKdLa480F73pwnb

sGN1ZQH4jRoyLH+SAuCthQBIU59gX9acwm2APUH7ScDYDuJkfE1CsPvS+lxRcFdl

G51Ewg2nFJNMiFuVg5Uq19pnf3eWB+6iICXo9u2GFw1Xd0X7lQS0oUc+bf1pzGGH

XEvcz/z62rr4lAOvOPVLanw97zE8EaX8JS9ZB2JPmimYybELcW5fglXxXKOdjbwS

Rct8IYBxhhlPRLEeXwX2lIRBMTILvpp7kM3bdGE198Hmi/W4

=XZmA

-----END PGP PUBLIC KEY BLOCK-----