Skip to content

Latest commit

 

History

History
61 lines (31 loc) · 3.46 KB

papers.md

File metadata and controls

61 lines (31 loc) · 3.46 KB

Note: This paper list is out of date.

Please see Perusall for an updated list of papers.

Paper choices

Verification

  • C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576-580 and 583, October 1969.

  • George C. Necula. Proof-carrying code. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), Paris, France, pages 106-119, January 1997.

Testing

  • Yang, X., Chen, Y., Eide, E., & Regehr, J. (2011, June). Finding and understanding bugs in C compilers. In Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation (pp. 283-294).

  • Xavier Leroy. 2006. Formal certification of a compiler back-end or: programming a compiler with a proof assistant. SIGPLAN Not. 41, 1 (January 2006), 42–54. https://doi.org/10.1145/1111320.1111042

Parallelism and Concurrency

  • G. Kahn. The semantics of a simple language for parallel programming. In J. L. Rosenfeld, editor, Information processing, pages 471-475, Stockholm, Sweden, Aug 1974. North Holland, Amsterdam.

  • C. A. R. Hoare. Communicating sequential processes. Communications of the ACM, 21(8):666-677, August 1978. Reprinted in ``Distributed Computing: Concepts and Implementations'' edited by McEntire, O'Reilly and Larson, IEEE, 1984.

Language Design

  • Edsger W. Dijkstra. Go to statement considered harmful. 11(3):147-148, March 1968.

  • Fred Brooks. No Silver Bullet—Essence and Accident in Software Engineering.

Types

  • Henk Barendregt. Introduction to Generalized Type Systems (1991)

  • Thierry Coquand. The Calculus of Constructions (1988).

  • Liskov, Barbara H., and Jeannette M. Wing. "A behavioral notion of subtyping." ACM Transactions on Programming Languages and Systems (TOPLAS) 16.6 (1994): 1811-1841.

Polymorphism

  • Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348-375, August 1978.

  • Liskov, B., & Zilles, S. (1974). Programming with abstract data types. ACM Sigplan Notices, 9(4), 50-59.

Program Analysis

  • Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '96). Association for Computing Machinery, New York, NY, USA, 32–41. https://doi.org/10.1145/237721.237727

Security

  • Andrew C. Myers. 1999. JFlow: practical mostly-static information flow control. In Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '99). Association for Computing Machinery, New York, NY, USA, 228–241. https://doi.org/10.1145/292540.292561

  • Dachuan Yu, Ajay Chander, Nayeem Islam, and Igor Serikov. 2007. JavaScript instrumentation for browser security. SIGPLAN Not. 42, 1 (January 2007), 237–249. https://doi.org/10.1145/1190215.1190252

Unsorted

  • Gordon Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science, 1:125-159, 1975.

  • Levy, P. B. (1999, April). Call-by-push-value: A subsuming paradigm. In International Conference on Typed Lambda Calculi and Applications (pp. 228-243). Berlin, Heidelberg: Springer Berlin Heidelberg.

  • Saurabh Srivastava, Sumit Gulwani, and Jeffrey S. Foster. 2010. From program verification to program synthesis. In Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '10). Association for Computing Machinery, New York, NY, USA, 313–326. https://doi.org/10.1145/1706299.1706337