-
Notifications
You must be signed in to change notification settings - Fork 11
What's next?
- Moggi et al., An Idealized MetaML: Simpler, and More Expressive
- Taha, MetaML and multi-stage programming with explicit annotations
- Taha, A gentle introduction to multi-stage programming (you can use the Ocaml package manager,
opam
, to install MetaOcaml:opam switch 4.01.0+BER
) - Taha, A gentle introduction to multi-stage programming Part II
- Kiselyov 2014, The Design and Implementation of BER MetaOCaml
- Rompf and Odersky 2010, Lightweight Modular Staging
- Rompf et al 2015, Go Meta!
- Carette, Kiselyov and Shan 2009, Finally Tagless, Partially Evaluated Tagless Staged Interpreters for Simpler Typed Languages
- Rémy, Using, Understanding, and Unraveling the OCaml Language (a good introduction to Ocaml and its semantics and implementation)
- Taha, DSL Implementation in MetaOCaml, Template Haskell, and C++
- Wand and Friedman 1988, The Mystery of the Tower Revealed: a Non-Reflective Description of the Reflective Tower
- Asai, Matsuoka, Yonezawa, Duplication and Partial Evaluation -- For a Better Understanding of Reflective Languages
- maybe:
- Kohlbecker, Friedman, Felleisen, Duba 1986, Hygenic Macro Expansion
- Flatt 2002, Composable and Compilable Macros: You Want it When?
- Flatt, Darais, Culpepper, Findler 2012, Macros that work together
- Cardelli and Wegner, On Understanding Types, Data Abstraction, and Polymorphism - The retract model of types paper cited in section 3 - Wadler, Theorems For Free
- Cardelli, Basic Polymorphic Typechecking
- Milner, A Theory of Type Polymorphism in Programming (a "greatest of the great" PL paper)
- Henk: a typed intermediate language
- Wadler, Propositions as Types
- Pizlo, Petrank, and Steensgaard, A Study of Concurrent Real-Time Garbage Collectors - a fast GC for Chicken Scheme
- Baker and Hewitt, The Incremental Garbage Collection of Processes - the paper on futures
- Dan Grossman, The Transactional Memory / Garbage Collection Analogy
- Marlow, Harris, James, SPJ, Parallel Generational-Copying GC
- Marlow, SPJ, Multicore Garbage Collection with Local Heaps
- selections from http://minikanren.org/#papers
- Wheeler, Representing Game Dialogue as Expressions in First-Order Logic
- Hemann and Friedman, μKanren
- our own miniKanren implementations
- embedding Prolog in Haskell
Add your name to the list below with your ideas for papers and books. If someone else has already added it, please add it again -- we may use a frequency count as part of our decision strategy.
Interesting papers for the between-books period
- Cardelli on type checking/inference
- Lamport on clocks and distributed systems
- Canny on edge detection
- Implementing deletion for Okasaki's Red/Black Trees (not strictly speaking "a paper", but still interesting)
- Probabilistic memory safety for unsafe languages (I know nothing about this, other than it was the first link on a search result for "probabilistic garbage collector")
- Neural Networks and Deep Learning
- Scheduling Deterministic Parallel Programs
Beginnings of Compiler Optimization Month:
- Trace-based Just In Time Type Specialization for Dynamic Languages (aka Trace Trees)
- Pointer and Escape Analysis for Multithreaded Programs
Books of Interest
The following are in no particular order.
lists of papers
- https://github.com/owainlewis/awesome-artificial-intelligence
- http://homes.soic.indiana.edu/classes/spring2015/csci/b629-samth/papers.html
- http://popl.mpi-sws.org/2015/popl-toc.html
- http://www.cis.upenn.edu/~bcpierce/courses/670Fall04/GreatWorksInPL.shtml
- http://blog.fogus.me/2011/09/08/10-technical-papers-every-programmer-should-read-at-least-twice/
- http://www.thoughtworks.com/insights/blog/100-years-computer-science
- http://blog.acolyer.org/2015/02/16/desert-island-papers-peter-alvaro/
- http://www.cs.indiana.edu/~dfried/
- https://www.recurse.com/blog/75-goodbye-paper-of-the-week
- https://gist.github.com/mrb/e015c37e2b851be2b6ae
how to read lots of papers https://engineering.purdue.edu/HIVELab/wiki/uploads/Main/qndreview.pdf
papers
- Herman: A Theory of Typed Hygienic Macros
- Compiling with Continuations, Continued
- Logic, per Martin-Löf
- Composable and Compilable Macros, M Flatt
- Hasochism
- Session Types
- Steele & Sussman: "The Art of the Interpreter,"
- Steele & Sussman: "Lambda: the Ultimate Imperative,"
- Steele & Sussman: "Lambda: the Ultimate Declarative."
- http://www.dreamsongs.com/Files/Incommensurability.pdf
- https://www.cs.cmu.edu/~sleator/papers/another-persistence.pdf
- http://www.cs.tau.ac.il/~haimk/papers/journal2.pdf
- http://www.cs.utexas.edu/~ecprice/papers/confluent_swat.pdf
- http://bentnib.org/conservation-laws.pdf
- http://cseweb.ucsd.edu/~russell/average.ps
- http://www.cs.ox.ac.uk/jeremy.gibbons/publications/embedding.pdf
- http://piumarta.com/software/cola/objmodel2.pdf
- http://pdf.aminer.org/000/929/764/garbage_collection_can_be_faster_than_stack_allocation.pdf
- http://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf
- http://conal.net/papers/push-pull-frp/push-pull-frp.pdf
books
- https://leanprover.github.io/logic_and_proof/
- Compiling with Continuations
- http://www.gp-field-guide.org.uk
- http://www.info.ucl.ac.be/~pvr/book.html
- http://programmingpraxis.com/
- http://norvig.com/paip.html
- http://jonathan.tang.name/files/scheme_in_48/tutorial/overview.html
- http://i.stanford.edu/~ullman/focs.html
- http://adam.chlipala.net/cpdt/cpdt.pdf
- http://www.cis.upenn.edu/~bcpierce/sf/
- http://www.cs.ox.ac.uk/publications/books/fop/
- http://www.eopl3.com
- http://www.designinganalogchips.com/_count/designinganalogchips.pdf
- http://www.ibiblio.org/kuphaldt/electricCircuits/
- Programming Pearls
- Pearls of Functional Programming
- Udi Manber's Introduction to Algorithms
- http://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/
- http://loup-vaillant.fr/tutorials/earley-parsing/
build-a-lisp books
- C: http://www.buildyourownlisp.com
- ASM: https://github.com/Inaimathi/lisp-1.5-programmers-manual
- Python: http://norvig.com/lispy.html
- Haskell: http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
book lists
- https://github.com/fogus/me/blob/master/www/books/concatenative.org
- https://github.com/prakhar1989/awesome-courses
- http://matt.might.net/articles/books-papers-materials-for-graduate-students/
- https://jaortega.wordpress.com/2006/03/28/a-haskell-bookshelf/
- little schemer -> htdp -> sicp -> write yourself a scheme -> real world haskell -> CTM -> TaPL -> okasaki -> Introduction to Algorithms -> PAIP -> FOP -> CLRS
other
- http://lispinsummerprojects.org/LearningLisp
- http://cstheory.stackexchange.com/questions/189/algorithms-from-the-book
- http://www.ccs.neu.edu/home/dherman/research/tutorials/monads-for-schemers.txt
- https://groups.google.com/d/msg/pdxfunc/W83dpzc1tsc/nTLM5RJr_JQJ
- http://music.columbia.edu/cmc/musicandcomputers/chapter4/04_09.php
- CLRS Video Lectures
- polyeuler
- Advanced Persistent Threat Hacking
- The Dragon Book
- Paper on Post-Quantum/Lattice-based Cryptography?
- Paper on Quantum Lambda Calculus
I am thinking of extracting a chapter or segment out of the following ones
- how to solve it - polya
- street fighting mathematics
- programming pearls
- art of computer programming, concrete mathematics
- the real sieve of Eratosthenes http://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf
- crypto course: http://www.cs.rit.edu/~ib/Classes/CS482-705_Winter10-11/index.html
- cybernauts awake! Seems to have interesting discussion of the ethical considerations of technology, a bit dated, but sometimes you just gotta have frames, http://www.starcourse.org/cybernauts/
- Feynman lectures on physics (? Maybe too off topic, but they've been on my shelf for 5 years now :) )
- Bayesian Methods in Python, (free and author lives in Toronto) http://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/
- Copying The neural net one from Yomna, http://neuralnetworksanddeeplearning.com
- An Introduction to Mathematical Cryptography by Silverstein ... this book explains everything from information theory to group theory to elliptic curves really, really well.
- Visual Group Theory by Nathan Carter ... learn group theory the most intuitive way, using pictures!
- GEB, so we can understand all the GEB jokes
everywhere - a book on practical cryptography?
- M. Nielsen's open source book on neural networks and deep learning (I've started reading this and it's quite well-written.)
There are 4 books (used to be 5 :)) that I started and never finished. I'd like to finish them, but not sure if we'll have time and patience for that. Nonetheless, I'd mention them here:
- CLRS
- SICM
- GEB
- Feynman Lectures
I also want to read Functional Differential Geometry, but SICM is a prerequisite for it.
Other than that, any book on the edge of CS, Math, and/or Physics would be really interesting to me.
Start with the D2 kit manual. Read and understand how the JBUG monitor program works (how it sets breakpoints, etc).
http://bitsavers.trailing-edge.com/pdf/motorola/6800/MEK6800D2.pdf
This contains many nuggets of simplicity, bare metal and demystification about CPU operation.
Then read the Fritz van der Wateren Lisp code (available here).
Then read McCarthy's original Lisp 1.5 manual
http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
Then, a bag of stuff:
Anatomy of Lisp, John R. Allen (you can actually implement and run the compiler he describes, after fixing a few bugs). http://www.amazon.com/Anatomy-Lisp-McGraw-Hill-computer-science/dp/007001115X/ref=sr_1_1?s=books&ie=UTF8&qid=1410284705&sr=1-1&keywords=anatomy+of+lisp
Realistic Compiler Generation, Peter Lee (denotational semantics which emits scheme code). http://www.amazon.com/Realistic-Compiler-Generation-Foundations-Computing/dp/0262121417
The Blue Book (esp. "the missing chapters" - how to implement smalltalk in smalltalk) http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf
Small-C http://www.cpm.z80.de/small_c.html
Programming Languages: Application and Interpretation
Some stuff for ML:
- Rémy, Using, Understanding, and Unraveling the OCaml Language (a good introduction to Ocaml use, semantics, and implementation)
- Milner, A Theory of Type Polymorphism in Programming (a "greatest of the great" PL paper)
Some stuff for {typed, staged} metaprogramming:
- Moggi et al., An Idealized MetaML: Simpler, and More Expressive
- Taha, MetaML and multi-stage programming with explicit annotations
- Taha, A gentle introduction to multi-stage programming (you can use the Ocaml package manager,
opam
, to install MetaOcaml:opam switch 4.01.0+BER
)
Books (updated for post-PFPL):
- Nielson and Nielson, Principles of Program Analysis. (A bit of a joke: it's (per a suggestion of Leo) a PL book that's harder than Harper's, and also a compiler book of sorts. Probably too hard, but at least more of a textbook and less of a monograph.)
- Nordström, Petersson, and Smith, Programming in Martin-Löf's Type Theory
- Sedgewick, Analysis of Algorithms. Lots of nice math, few algorithms.
- Blum, Hopcroft, and Kannan. Foundations of Data Science. (Note the "foundations"...)
- Harrison, Handbook of Practical Logic and Automated Reasoning. (Logic and logic programming; uses Ocaml. Ebook available through Toronto Public Library, if that matters ...)
I previously had some computation and compiler books here, but some people have already studied those subjects ...
- Write Yourself a Scheme in 48 Hours [http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours]
- The Art Of Computer Programming, Knuth
- Programming Pearls
- The New Turing Omnibus: Sixty-Six Excursions in Computer Science,A. Dewdney
- Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, Norvig
- The Dragon Book