├── README.md ├── mf-s-list.md └── spill.md /README.md: -------------------------------------------------------------------------------- 1 | # 10PL 2 | 10 papers that all PhD students in programming languages ought to know, for some value of 10 3 | 4 | What 5 | ---- 6 | 7 | Programming language researchers investigate the analysis, design, 8 | implementation, and evaluation of programming languages. Our goal 9 | is that the papers come from all of these areas. 10 | 11 | Why 12 | --- 13 | 14 | A paper makes it on this list if one of us proposes the paper and none of 15 | the others disagrees. 16 | 17 | A paper may make it on the list if it is a milestone in the intellectual 18 | history of programming languages, if it is a good paper, and if its ideas 19 | are still good today. 20 | 21 | A paper may make it on the list if it covers an area particularly well. 22 | 23 | A paper may make it on the list if a PhD student in PL should know about 24 | this topic---even if it is outside of the confines of PL. 25 | 26 | A paper on this list may not be *not* essential to obtaining a PhD in 27 | PL. It is unlikely to introduce you to modern ways of dealing with a 28 | topic. It is unlikely to be fashionable. It is improbable that you will 29 | cite it in your dissertation. But, all of us consider it worth your 30 | while. Reading it is good for your soul. 31 | 32 | The List of Papers 33 | ------------------ 34 | 35 | [listed in alphabetical order of the first author's last name] 36 | 37 | L. Cardelli. 38 | Type systems. 39 | Handbook of Computer Science and Engineering, 1997, 2208-2236. 40 | [url](http://lucacardelli.name/papers/typesystems.pdf) 41 | 42 | C. Chambers and D. Ungar. 43 | Customization: Optimizing Compiler Technology for SELF, 44 | a Dynamically-typed Object-oriented Programming Language. 45 | PLDI 1989, 146--160. 46 | [url](http://dl.acm.org/citation.cfm?id=74831) 47 | 48 | P. Cousot and R. Cousot. 49 | Abstract interpretation: a unified lattice model for static analysis of 50 | programs by construction or approximation of fixpoints. 51 | Principles of Programming Languages, 1977, 238--252. 52 | [url](http://dl.acm.org/citation.cfm?id=512973) 53 | 54 | C.A.R. Hoare. 55 | An axiomatic basis for computer programming. 56 | Communications of the ACM, 1969, 12(10), 576-–580. 57 | [url](http://dl.acm.org/citation.cfm?id=363259) 58 | 59 | C.A.R. Hoare. 60 | Proof of correctness of data representations. 61 | Acta Informatica, 1972, 1, 271--281. 62 | [url](http://link.springer.com/article/10.1007%2FBF00289507#page-1) 63 | 64 | G.A. Kildall 65 | A Unified approach to global program optimization. 66 | Principles of Programming Languages, 1973, 194--206. 67 | [url](http://dl.acm.org/citation.cfm?id=512945) 68 | 69 | P.J. Landin 70 | The next 700 programming languages. 71 | Communications of the ACM, 1966, 9(3), 157--166. 72 | [url](http://dl.acm.org/citation.cfm?id=365257) 73 | 74 | J.H. Morris, Jr. and Ben Wegbreit. 75 | Subgoal induction. 76 | Communications of the ACM, 1977, 20(4), 209--222. 77 | [url](http://dl.acm.org/citation.cfm?id=359466) 78 | 79 | G. Morrisett, D. Walker, K. Crary, and N. Glew. 80 | From system F to typed assembly language. 81 | Transactions on Programming Languages and Systems, 1999, 21 (3), 527--568. 82 | [url](http://dl.acm.org/citation.cfm?id=319345) 83 | 84 | D.L. Parnas 85 | On the criteria to be used in decomposing systems into modules. 86 | Communications of the ACM, 1972, 15(12), 1053--1058. 87 | [url](http://dl.acm.org/citation.cfm?id=361623) 88 | 89 | G.D. Plotkin. 90 | Call-by-name, call-by-value, and the λ-calculus. 91 | Theoretical Computer Science 1 (1975), 125--159. 92 | [url](http://homepages.inf.ed.ac.uk/gdp/publications/cbn_cbv_lambda.pdf) 93 | 94 | ---- 95 | ## changelog 96 | * Tue Oct 20 23:06:27 EDT 2015 " added Amal's "white ball" 97 | * Tue Oct 20 21:13:13 EDT 2015 " added "modules", removed "Reynolds" based 98 | on discussion by Amal, Olin, and Matthias; added Olin's choices 99 | * Tue Oct 20 16:59:02 EDT 2015 " added Mitch's suggestions 100 | * Fri Oct 16 12:47:38 EDT 2015 " added Will's suggestions 101 | * Fri Oct 16 09:48:17 EDT 2015 Matthias creates and populates the 102 | repository with Amal's, Jan's, and his own ideas 103 | -------------------------------------------------------------------------------- /mf-s-list.md: -------------------------------------------------------------------------------- 1 | # Matthias's List for New or Aspiring PhD Students 2 | 3 | What and Why 4 | ------------ 5 | 6 | Over the course of your first few couple of years as PhD student, you must 7 | read some of the papers that shaped your advisor's mental image of the 8 | research landscape---in addition to the papers that your group has 9 | published on the relevant topic (in the widest sense). If you decide to 10 | work on one of projects your advisor proposes, these readings equip you 11 | with the proper background and help you shape your impressions of what is 12 | going on. If you decide to bring something new to your advisor's world, you 13 | still need to know how to approach him, how to communicate your ideas 14 | effectively. The key to effective communication is to know how your advisor 15 | thinks and why he thinks so. 16 | 17 | I have classified the paper into those categories that are near and dear to 18 | my heart. I don't *love* these papers, some I loathe for their lack of 19 | precision, acknowledgment of historical debt, or sloppy writing. 20 | Nevertheless, they left an impression, so they have somehow become a part 21 | of the group's vocabulary. In addition, learning to distinguish good papers 22 | from "must read even though I dislike them" papers may help you develop 23 | your own taste. 24 | 25 | **Note** A paper on this list may not be not essential to your dissertation 26 | research. It is unlikely to introduce you to modern ways of dealing with my 27 | topics of interest. It is unlikely to be fashionable. It is improbable that 28 | you will cite it in your dissertation. But, I consider the paper worth your 29 | while; reading it is good for your soul. 30 | 31 | Vision 32 | ------ 33 | 34 | Felleisen, Findler, Flatt, Krishnamurthi, Barzilay, McCarthy, Tobin-Hochstadt. 35 | The Racket Manifesto. 36 | SNAPL 2015. 37 | [url](http://www.ccs.neu.edu/home/matthias/manifesto/) 38 | 39 | Syntax Extensions and Macros 40 | ---------------------------- 41 | 42 | Dybvig, Hieb, and Bruggeman. 43 | Syntactic abstraction in Scheme. 44 | Lisp and Symbolic Computation,1993. 5(4), 295-–326. 45 | [url](http://link.springer.com/article/10.1007%2FBF01806308#page-1) 46 | 47 | Flatt. 48 | Composable and compilable macros:: you want it when? 49 | ICFP 2002, 72--83. 50 | [url](http://dl.acm.org/citation.cfm?id=581486) 51 | 52 | Flatt. 53 | Binding as Sets of Scopes. 54 | POPL 2016, ??--??. 55 | [url](to appear) 56 | 57 | Gradual Typing [Language Design] 58 | -------------------------------- 59 | 60 | Fagan and Cartwright. 61 | Soft typing. 62 | PLDI 1991, 278--292. 63 | [url](http://dl.acm.org/citation.cfm?id=113445.113469&coll=DL&dl=ACM&CFID=723280388&CFTOKEN=84457028) 64 | 65 | Flanagan. 66 | Hybrid type checking. 67 | POPL 2006, 245--256. 68 | [url](http://dl.acm.org/citation.cfm?id=1111059) 69 | 70 | Gray, Findler, Flatt. 71 | Fine-grained interoperability through mirrors and contracts. 72 | OOPSLA 2005, 231--245. 73 | [url](http://dl.acm.org/citation.cfm?id=1094830) 74 | 75 | Matthews and Findler. 76 | Operational semantics for multi-language programs. 77 | Transactions on Programming Languages and Systems 2009, 31(3), 1--44. 78 | [url](http://dl.acm.org/citation.cfm?id=1498926.1498930&coll=DL&dl=ACM&CFID=723280388&CFTOKEN=84457028) 79 | 80 | Siek and Taha. 81 | Gradual typing for functional languages. 82 | Scheme and Functional Programming, 2006, 81--92. 83 | [url](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.61.8890) 84 | Note: read with [Tobin-Hochstadt/Felleisen, DLS, 2006](http://dl.acm.org/citation.cfm?id=1176755) 85 | 86 | Wright and Cartwright. 87 | A practical soft type system for Scheme. 88 | Transactions on Programming Languages and Systems 1997, 19(1), 87--152. 89 | [url](http://dl.acm.org/citation.cfm?id=239912.239917&coll=DL&dl=ACM&CFID=723280388&CFTOKEN=84457028) 90 | 91 | Modules and Mixins [Language Design] 92 | ------------------------------------ 93 | 94 | Bracha and Cook. 95 | Mixin-based inheritance. 96 | OOPSLA/ECCOP 1990, 303--311. 97 | [url](http://dl.acm.org/citation.cfm?id=97982) 98 | 99 | Harper and Lillibridge. 100 | A type-theoretic approach to higher-order modules with sharing. 101 | POPL 1994, 123--137. 102 | [url](http://dl.acm.org/citation.cfm?id=174675.176927&coll=DL&dl=ACM&CFID=723280388&CFTOKEN=84457028) 103 | 104 | Leroy. 105 | Manifest types, modules, and separate compilation. 106 | POPL 1994, 109--122. 107 | [url](http://dl.acm.org/citation.cfm?id=174675.176926&coll=DL&dl=ACM&CFID=723280388&CFTOKEN=84457028) 108 | 109 | Performance Evaluation 110 | ---------------------- 111 | 112 | Georges, Buytaert, and Eeckhout. 113 | Statistically rigorous Java performance evaluation. 114 | OOPSLA 2007, 57--76. 115 | [url](http://dl.acm.org/citation.cfm?id=1297033) 116 | 117 | Mytkowicz, Diwan, Hauswirth, and Sweeney. 118 | Producing wrong data without doing anything obviously wrong! 119 | ASPLOS 2009, 265--276. 120 | [url](http://dl.acm.org/citation.cfm?id=1508275) 121 | 122 | Vitek and Kalibera. 123 | R3: Repeatability, Reproducibility and Rigor. 124 | SIGPLAN Noices 2012 47(4a), 30--36. 125 | [url](http://dl.acm.org/citation.cfm?id=2442781) 126 | 127 | Blackburn et al. 128 | The DaCapo benchmarks: Java benchmarking development and analysis. 129 | OOPSLA 2006, 169--190. 130 | [url](http://dl.acm.org/citation.cfm?id=1167488) 131 | 132 | Semantics 133 | --------- 134 | 135 | Plotkin. 136 | LCF considered a programming language. 137 | Theoretical Computer Science, 1977, 5, 223--255. 138 | [url](http://homepages.inf.ed.ac.uk/gdp/publications/LCF.pdf) 139 | 140 | Books You Should Know Before You Start 141 | -------------------------------------- 142 | 143 | One of: 144 | 145 | * Krishnamurthi. 146 | Programming Languages: Applications and Implementations. 147 | [url](https://cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/) 148 | 149 | * Friedman and Wand. 150 | Essentials of Programming Languages. 151 | [url](http://www.eopl3.com) 152 | 153 | Felleisen, Findler, Flatt. 154 | Semantics Engineering [Parts I and II]. 155 | MIT Press. 2011. 156 | [url](http://redex.racket-lang.org) 157 | 158 | Pierce. 159 | Types and Programming Languages. 160 | MIT Press, 2002. 161 | [url](http://www.cis.upenn.edu/~bcpierce/tapl/index.html) 162 | 163 | ---- 164 | ## changelog 165 | * Thu Nov 5 10:02:15 EST 2015: added Plotkin, one paper on den sem/domains 166 | * Wed Oct 21 11:39:19 EDT 2015: created 167 | -------------------------------------------------------------------------------- /spill.md: -------------------------------------------------------------------------------- 1 | N. Adams, D. Kranz, Richard Kelsey, J. Rees, P. Hudak, J. Philbin. 2 | ORBIT: an optimizing compiler. 3 | ACM Compiler Construction, 1986, 219--233. 4 | [url](http://dl.acm.org/citation.cfm?id=13333) 5 | 6 | J.W. Backus et al. P. Naur (ed). 7 | The report on the algorithmic language Algol 60. 8 | Communications of the ACM, 1963, 6(1), 1--17. 9 | [url](http://dl.acm.org/citation.cfm?id=366193.366201&coll=DL&dl=ACM&CFID=553200397&CFTOKEN=50185488) 10 | 11 | K.E. Iverson. 12 | A Programming Language. 13 | John Wiley & Son's. 1962. 14 | [url](http://www.jsoftware.com/papers/APL.htm) 15 | 16 | Kam & Ullman Monotone data flow analysis frameworks 17 | Acta Informatica, 1977, 7, 305--317. 18 | [url](http://link.springer.com/article/10.1007/BF00290339#page-1) 19 | 20 | L. Lamport. 21 | Time, clocks, and the ordering of events in a distributed system. 22 | Communications of the ACM, 1978, 21(7), 558--565. 23 | [url](http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.pdf) 24 | 25 | J. McCarthy. 26 | Recursive functions of symbolic expressions and their computation by machine, part I. 27 | Communications of the ACM, 1960, 3(4), 184--195 28 | [url](http://dl.acm.org/citation.cfm?id=367199) 29 | 30 | J.C. Reynolds. 31 | Types, abstraction and parametric polymorphism. 32 | Information Processing (IFIP), 1983, 513--523. 33 | IFIP Congress 1983 34 | [url](http://www.cse.chalmers.se/edu/year/2010/course/DAT140_Types/Reynolds_typesabpara.pdf) 35 | --------------------------------------------------------------------------------