{"id":450,"date":"2014-01-22T16:23:03","date_gmt":"2014-01-22T21:23:03","guid":{"rendered":"http:\/\/homepages.uc.edu\/~yaozo\/wordpress\/?p=450"},"modified":"2014-01-22T16:23:03","modified_gmt":"2014-01-22T21:23:03","slug":"reading-for-graduate-students","status":"publish","type":"post","link":"https:\/\/zhuoyao.net\/index.php\/2014\/01\/22\/reading-for-graduate-students\/","title":{"rendered":"Reading for graduate students"},"content":{"rendered":"<h2>Jump to<\/h2>\n<ul>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#any\">Resources for any graduate student<\/a>.<\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#terminal\">Resources for near-terminal graduate students<\/a>.<\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#sciences\">Resources for science, engineering or mathematics<\/a>.<\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#cs\">Resources for computer science<\/a>.<\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#pl\">Resources for programming languages<\/a>.<\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#compilers\">Resources for compilers<\/a>.<\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/#analysis\">Resources for static analysis<\/a>.<\/li>\n<\/ul>\n<p><a name=\"any\"><\/a><\/p>\n<h2>For grad students in any field<\/h2>\n<h3>Resources for writing<\/h3>\n<p>Writing is the default activity in graduate school.<\/p>\n<p>A discovery isn&#8217;t a discovery unless you can communicate that discovery.<\/p>\n<p>A lot of academic writing is horrible, and it tends to be horrible in multiple ways: presentation, ordering, clarity, style, and sometimes even grammar and punctuation. I&#8217;ve written my fair share of unreadable papers, but writing better is something I&#8217;ve begun to take seriously.<\/p>\n<p>Better writing makes\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Peer-reviewed\">peer reviewers<\/a>\u00a0inclined to invest time in it.<\/p>\n<p>On writing style,\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0205747469\/ref=as_li_ss_tl?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0205747469\">Style: Lessons in Clarity and Grace<\/a>\u00a0simply nails it.<\/p>\n<div><\/div>\n<p>The\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0226104206?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0226104206\">Chicago Manual of Style<\/a>\u00a0is an indispensable reference:<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0226104206?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0226104206\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/chicago16.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p>I didn&#8217;t find\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0226823377?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0226823377\">A Manual for Writers of Research Papers, Theses and Dissertations<\/a>\u00a0until after my defense, but it is relevant to any kind of academic or technical writing. It answered long-held questions I had about issues like the use of the passive voice and the use of first-person pronouns in academic writing.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0226823377?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0226823377\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/516LW41caQL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>Like the Chicago book, it&#8217;s a superb reference tome.<\/p>\n<p>&nbsp;<\/p>\n<h3>Resources for presenting (yourself)<\/h3>\n<p>Graduate students can&#8217;t avoid giving presentations.<\/p>\n<p>Once again, most academics give awful presentations. When it comes to giving presentations on technical topics,\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0978577604?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0978577604\">Even a Geek Can Speak<\/a>\u00a0will make every presentation you give better at the cost of just one afternoon&#8217;s reading.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0978577604?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0978577604\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/519FGpeBbKL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>This book covers every aspect of a presentation, from purpose and audience to structuring and slides. It even contains effective techniques for dealing with nervousness about public speaking. I bought this book after I botched my first job talk, and it really turned things around for me.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/research.microsoft.com\/~simonpj\/\">Simon Peyton Jones<\/a>, in addition to being a brilliant scientist, is also a gifted public speaker. Simon&#8217;s\u00a0<a href=\"http:\/\/research.microsoft.com\/~simonpj\/Papers\/giving-a-talk\/giving-a-talk-html.html\">advice on how to give a good research talk<\/a>\u00a0(co-offered by John Hughes and John Launchbury) should be required reading for all graduate students. Simon offers\u00a0<a href=\"http:\/\/research.microsoft.com\/~simonpj\/Papers\/giving-a-talk\/giving-a-talk.htm\">advice on the other non-technical research skills<\/a>\u00a0as well.<\/p>\n<p>Robert Cialdini&#8217;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0205609996?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0205609996\">Influence<\/a>\u00a0is a modern classic in the art of persuasion, with lots of evidence and amusing anecdotes from psychology to back it up. I read this book over my wife&#8217;s shoulder while she was reading it for her M.B.A.<\/p>\n<p>It&#8217;s a fun read, and it will make you reconsider how you&#8217;re conveying your message to your audience. Small tweaks can make a big difference.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0205609996?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0205609996\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51a9wuvbPyL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<h3>A good remote<\/h3>\n<p>Though not a text, I highly recommend a\u00a0<em>good<\/em>\u00a0presentation remote. It&#8217;s aggravating to have to give a talk no more than arm&#8217;s length from your laptop. It just reinforces bad presentation body language. From extensive field testing, my recommendation on remotes is the\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/B000FPGP4U?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B000FPGP4U\">Kensington<\/a>.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/B000FPGP4U?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B000FPGP4U\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/41SYTJC80NL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>It&#8217;s small and well-designed; and it runs on easy-to-find AAA batteries.<\/p>\n<p>&nbsp;<\/p>\n<p>This remote has actually won industrial design awards from\u00a0<a href=\"http:\/\/www.idsa.org\/\">IDSA<\/a>.<\/p>\n<p>It deserves them.<\/p>\n<h3>Practice<\/h3>\n<p>Ultimately, if you want to get good at public speaking, you have to practice. In my experience, it gets easier every time you do it. So, sign up for classes or seminars which will force you to give a presentation. And, don&#8217;t just give the bare minimum: use the resources above and commit to giving the best presentation that you can. Your public reputation as a scientist is determined to a large degree by the quality of your talks.<\/p>\n<p><a name=\"terminal\"><\/a><\/p>\n<h2>For near-terminal grad students<\/h2>\n<p>The academic job hunt is a\u00a0<a href=\"http:\/\/matt.might.net\/articles\/advice-for-academic-job-hunt\/\">brutal process<\/a>. Your first year as an assistant professor is busy. Being prepared helps. Fortunately, there are some books.<\/p>\n<p><a href=\"http:\/\/www.amazon.com\/gp\/product\/0780311361?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0780311361\">Tomorrow&#8217;s Professor<\/a>\u00a0should be in every grad student&#8217;s hands at least three years before they graduate. It explains the graduate-student-to-junior-faculty metamorphosis with a lot of examples and details.<\/p>\n<p>Most importantly, it covers construction of the standard materials required to perform an academic job search (cover letter,\u00a0<em>curriculum vit\u00e6<\/em>, research statement and teaching statement).<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0780311361?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0780311361\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51DQ80BH07L._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p>As a Ph.D. student, it feels at times like getting your Ph.D. will be the pinnacle of your existence; the closer you get finishing your Ph.D., the more a Ph.D. seems akin to acquiring mutant powers.<\/p>\n<p>In fact, after you get your Ph.D., nothing changes. And yet, everything changes.\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0465022227\/ref=as_li_ss_tl?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=0465022227\">A PhD Is Not Enough!: A Guide to Survival in Science<\/a>\u00a0is well-titled. It explains why getting your Ph.D. is only the\u00a0<em>start<\/em>\u00a0of your career.<\/p>\n<p>It also contains cautionary tales of how\u00a0<em>not<\/em>\u00a0to begin your scientific career.<\/p>\n<div><\/div>\n<p>&nbsp;<\/p>\n<p><a name=\"sciences\"><\/a><\/p>\n<h2>For graduate students in the sciences<\/h2>\n<p>If you&#8217;re a graduate student in science, math or engineering, you will be writing technical papers with a lot of formal mathematics.<\/p>\n<p>The\u00a0<em>lingua franca<\/em>\u00a0of the academic publishing community is\u00a0<a href=\"http:\/\/www.latex-project.org\/\">LaTeX<\/a>. LaTeX makes it possible for the motivated scientist to typeset technical documents so beautifully that I would call them art.<\/p>\n<p>&nbsp;<\/p>\n<p>(<em>Possible<\/em>\u00a0is the key word. There is some ugly LaTeX out there.)<\/p>\n<p>When you&#8217;re starting out with LaTeX,\u00a0<a href=\"http:\/\/research.microsoft.com\/users\/lamport\/\">Leslie Lamport<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0201529831?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201529831\">LaTeX book<\/a>\u00a0covers all the basics, and it makes a good reference for all of the common things you&#8217;d like to do in LaTeX.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0201529831?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201529831\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51FGJ8HT67L._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p>LaTeX, as it turns out, is a deep rabbit hole. (It&#8217;s\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Turing_complete\">Turing-complete<\/a>.) When you&#8217;re ready for your black belt in TeX-fu,\u00a0<a href=\"http:\/\/www-cs-faculty.stanford.edu\/~knuth\/\">Donald Knuth<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0201134470?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201134470\">TeXbook<\/a>\u00a0is how you get there.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0201134489?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201134489\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51A2M3JJ0QL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>This is\u00a0<em>not<\/em>\u00a0an introductory book. This is for hard-core TeX users.<\/p>\n<p>&nbsp;<\/p>\n<p>Donald Knuth once taught a class on mathematical writing, the result of which has been distilled in book form [<a href=\"http:\/\/jmlr.csail.mit.edu\/reviewing-papers\/knuth_mathematical_writing.pdf\">pdf<\/a>].<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/088385063X?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=088385063X\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51QSHQC1H8L._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>The first section of the book is a concise listing of the major\u00a0<em>dos<\/em>\u00a0and\u00a0<em>don&#8217;ts<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p><a name=\"cs\"><\/a><\/p>\n<h2>For graduate students in computer science<\/h2>\n<p>Justin Zobel&#8217;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/1852338024\/ref=as_li_ss_tl?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1852338024\">Writing for Computer Science<\/a>\u00a0is the &#8220;missing chapter&#8221; for computer scientists in Kate Turabian&#8217;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0226823377\/ref=as_li_ss_tl?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0226823377\">Manual for Writers of Research Papers<\/a>.<\/p>\n<div><\/div>\n<p>For computer science more generally, refer to my post on\u00a0<a href=\"http:\/\/matt.might.net\/articles\/what-cs-majors-should-know\/\">what every CS major should know<\/a>.<\/p>\n<p><a name=\"pl\"><\/a><\/p>\n<h2>For graduate students in programming languages<\/h2>\n<p>It&#8217;s difficult to find a good book to get started in programming languages. Part of the problem is that the field has become so vast that no text can cover the entire field. The other part of the problem is that very few texts and papers are written for the introductory reader.<\/p>\n<p><a href=\"http:\/\/www.cis.upenn.edu\/~bcpierce\/\">Benjamin Pierce<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0262162091?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0262162091\">Types and Programming Languages<\/a>\u00a0really stands out.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0262162091?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0262162091\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51QFBB4EA0L._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>It&#8217;s a comprehensive, readable introduction to both \u03bb-calculus\u00a0<em>and<\/em>\u00a0type theory. At the same time, the book holds up well as a reference for advanced research in the field.<\/p>\n<p>&nbsp;<\/p>\n<p>The Nielsons&#8217; book\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/1846286913?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1846286913\">Semantics with Applications<\/a>\u00a0[<a href=\"http:\/\/www.daimi.au.dk\/~bra8130\/Wiley_book\/wiley.ps\">ps<\/a>] [<a href=\"http:\/\/www.daimi.au.dk\/~bra8130\/Wiley_book\/wiley.pdf\">pdf<\/a>] [<a href=\"http:\/\/www.daimi.au.dk\/~bra8130\/Wiley_book\/wiley.html\">course notes<\/a>] is almost a perfect introduction to formal semantics. (From looking at the table of contents on amazon, the newer edition looks much better than the edition I have.) It gives a detailed account of the three major semantic paradigms: denotational, axiomatic and operational. A section on applying semantics to static analysis provides a nice gateway to the field. The principal strength of this book is its coverage of semantics for imperative languages due to its use and extension of the same While-based language throughout.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/1846286913?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1846286913\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51DGJGnHZ3L._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>The exact same semantic techniques can model functional languages, but this is not covered by the book.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.cs.brown.edu\/~sk\/\">Shriram Krishnamurthi<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.cs.brown.edu\/~sk\/Publications\/Books\/ProgLangs\/\">Programming Languages: Application and Interpretation<\/a>\u00a0is also a solid introduction to the field, and it&#8217;s\u00a0<em>free<\/em>! This book works well for introducing new students to programming languages in part because it uses Scheme and S-Expression notation, which prevents syntax from distracting away from the core issue of semantics. Perhaps more importantly, S-Expression notation means it&#8217;s very easy to fire up an interpreter and just try things out.<\/p>\n<p><a href=\"http:\/\/www.ccs.neu.edu\/~wand\/\">Mitch Wand<\/a>\u00a0and\u00a0<a href=\"https:\/\/www.cs.indiana.edu\/~dfried\/\">Dan Friedman<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0262062798?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0262062798\">Essentials of Programming Languages<\/a>\u00a0is also a good introduction to programming languages and a great reference for formal semantics. Like Shriram&#8217;s, this book also uses Scheme, so it inherits the same advantages.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0262062798?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0262062798\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/41lYT-WAn1L._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>In addition to being great scientists, Mitch and Dan are all-around good people, and in their writing, that comes across as precise yet friendly and approachable prose. I get the sense they actually want the reader to understand the material.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.cs.ru.nl\/~henk\/\">Barendregt<\/a>&#8216;s classic\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0444875085?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0444875085\">The Lambda Calculus<\/a>\u00a0is an encyclopedia of the type-free \u03bb-calculus. There&#8217;s a lot in here on long-forgotten aspects of the \u03bb-calculus, including its role in logic and foundations and its relationship to topology. It&#8217;s almost hard to believe the \u03bb-calculus was so well studied\u00a0<em>before<\/em>\u00a0it was foundational to the theory of modern programming languages.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0444875085?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0444875085\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/41BRXJ7E7GL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>The book makes for dense reading. I would not recommend it as an introductory text, but as a handbook during research, it is indispensible. It&#8217;s a superb complement to\u00a0<a href=\"http:\/\/www.cis.upenn.edu\/~bcpierce\/\">Benjamin Pierce<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0262162091?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0262162091\">Types and Programming Languages<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>If writing high-performance, correct compilers for functional languages is a goal of yours,\u00a0<a href=\"http:\/\/www.eecs.harvard.edu\/~greg\/\">Greg Morrisett<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.eecs.harvard.edu\/~greg\/papers\/index.html\">Ph.D. thesis<\/a>\u00a0is a good read. Greg has done and continues to do a lot of great work, so I would actually recommend any of his papers to more advanced graduate students in programming languages. Greg tends to develop powerful machinery as a byproduct of reaching his underlying goal; I&#8217;ve found that machinery can often be adapted to other research problems.<\/p>\n<p>Much research in programming languages gets implemented in (and for)<a href=\"http:\/\/www.smlnj.org\/\">Standard ML<\/a>,\u00a0<a href=\"http:\/\/caml.inria.fr\/\">OCaml<\/a>\u00a0and\u00a0<a href=\"http:\/\/www.haskell.org\/\">Haskell<\/a>. One of the major challenges (and eventual joys) of using these languages for those more accustomed to imperative languages is learning to use functional data structures effectively.\u00a0<a href=\"http:\/\/www.eecs.usma.edu\/webs\/people\/okasaki\/\">Chris Okasaki<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/0521663504?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0521663504\">Purely Functional Data Structures<\/a>\u00a0provides a full treatment of frequently used data structures in their purely functional form.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0521663504?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0521663504\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/410CKVZM2EL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p><a name=\"compilers\"><\/a><\/p>\n<h2>For graduate students in compilers<\/h2>\n<p>The recently revamped classic, &#8220;the dragon book,&#8221; is a\u00a0<em>great<\/em>\u00a0reference for implementors that want to implement the standard analyses and optimizations that an industrial-strength compiler like GCC has:<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/0321486811?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321486811\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/51XtGJ64tZL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p>In the 1980&#8217;s, advanced compilers used continuation-passing-style (CPS) as their internal representation. In the 1990&#8217;s and early 2000&#8217;s, administrative-normal form (ANF) was in vogue, in part because it didn&#8217;t require compiler writers to understand continuations. Lately, however, I see more and more rediscovering the unmatched power and simplicity of CPS.<a href=\"http:\/\/www.cs.princeton.edu\/~appel\/\">Andrew Appel<\/a>&#8216;s\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/052103311X?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=052103311X\">Compiling with Continuations<\/a>\u00a0was written at the zenith of the first CPS epoch, which makes it an unbeatable reference on CPS-based compilation even today:<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/052103311X?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=052103311X\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/41n+Xz0GH4L._SL110_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p><a name=\"analysis\"><\/a><\/p>\n<h2>For graduate students in static analysis<\/h2>\n<p><a href=\"http:\/\/www.di.ens.fr\/~cousot\/\">Patrick<\/a>\u00a0and\u00a0<a href=\"http:\/\/www.enseignement.polytechnique.fr\/profs\/informatique\/Radhia.Cousot\/\">Rhadia<\/a>\u00a0Cousots&#8217;\u00a0<a href=\"http:\/\/www.di.ens.fr\/~cousot\/COUSOTpapers\/POPL77.shtml\">original paper on abstract interpretation<\/a>, which set an entire paradigm in motion, is a good read even after becoming acquainted with the field. Patrick and Rhadia have shown themselves to be great minds of our time in static analyis, which means that their writing is excellent, but it is often unapproachable to casual readers given its level of sophistication. Their original paper is different: because they&#8217;re starting a field, they cannot and do not assume any background knowledge.<\/p>\n<p>My start in programming languages came from reading the first three chapters of my\u00a0<a href=\"http:\/\/www.ccs.neu.edu\/home\/shivers\/citations.html#diss\">advisor&#8217;s dissertation<\/a>.\u00a0<a href=\"http:\/\/www.ccs.neu.edu\/home\/shivers\/\">Olin Shivers<\/a>\u00a0is a gifted writer, and it&#8217;s always a pleasure to read his work. His dissertation covers\u00a0<em>k<\/em>-CFA, an analytic platform from which a number of Ph.D.&#8217;s can be launched. In his dissertation, you get to see concepts like domain theory, denotational semantics and abstract interpretation in use. It&#8217;s probably one of the last major works of that era to use denotational semantics.<\/p>\n<p>This dissertation is best read after or during an intro-level programming languages course which covers formal semantics, but it is still a remarkably self-contained piece of work.<\/p>\n<p>There are not a lot of books written on static analysis. The Nielsons\/Hankin book\u00a0<a href=\"http:\/\/www.amazon.com\/gp\/product\/3540654100?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=3540654100\">Principles of Program Analysis<\/a>\u00a0is fairly comprehensive.<\/p>\n<div><a href=\"http:\/\/www.amazon.com\/gp\/product\/3540654100?ie=UTF8&amp;tag=ucmbread-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=3540654100\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/matt.might.net\/articles\/books-papers-materials-for-graduate-students\/images\/41z7y8T1OwL._SL160_.jpg\" border=\"0\" \/><\/a><\/div>\n<p>Those with some background in formal semantics should be able to use this book as a reference during their research.<\/p>\n<p>&nbsp;<\/p>\n<p>In my static analysis seminar, I use a reading list of classic papers:<\/p>\n<ol>\n<li><a href=\"http:\/\/projecteuclid.org\/DPubS?service=UI&amp;version=1.0&amp;verb=Display&amp;handle=euclid.pjm\/1103044538\">A lattice-theoretical fixpoint theorem and its applications.<\/a>\u00a0Tarski. 1955.<\/li>\n<li><a href=\"http:\/\/www.eecs.berkeley.edu\/~necula\/Papers\/FloydMeaning.pdf\">Assigning meaning to programs.<\/a>\u00a0Floyd. 1967.<\/li>\n<li><a href=\"http:\/\/portal.acm.org\/citation.cfm?id=512945\">A unified approach to global program optimization.<\/a>\u00a0Kildall. 1973.<\/li>\n<li><a href=\"http:\/\/www.di.ens.fr\/~cousot\/COUSOTpapers\/POPL77.shtml\">Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints.<\/a>\u00a0Cousot and Cousot. 1977.<\/li>\n<li><a href=\"http:\/\/www.di.ens.fr\/~cousot\/COUSOTpapers\/POPL79.shtml\">Systematic Design of Program Analysis Frameworks.<\/a>\u00a0Cousot and Cousot. 1979.<\/li>\n<li><a href=\"http:\/\/www.ccs.neu.edu\/home\/shivers\/citations.html#pldi88\">Control-flow analysis in Scheme.<\/a>\u00a0Shivers. 1988.<\/li>\n<li><a href=\"http:\/\/portal.acm.org\/citation.cfm?doid=115372.115320\">Efficiently computing static single assignment form and the control dependence graph.<\/a>\u00a0Cytron, Ferrante, Rosen, Wegman, Zadeck. 1991.<\/li>\n<li><a href=\"http:\/\/portal.acm.org\/citation.cfm?doid=237721.237727\">Points-to analysis in almost linear time.<\/a>\u00a0Steensgaard. 1996.<\/li>\n<li><a href=\"http:\/\/pages.cs.wisc.edu\/~reps\/#toplas02\">Parametric shape analysis via 3-valued logic.<\/a>\u00a0Sagiv, Reps and Wilhelm. 2002.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h2>Related posts<\/h2>\n<ul>\n<li><a href=\"http:\/\/matt.might.net\/articles\/phd-defense-tips\/\">Tips for defending a Ph.D.<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/peer-review-rebuttals\/\">HOWTO: Respond to peer reviews<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/grad-student-resolutions\/\">12 resolutions for grad students<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/electric-meat\/\">Electric meat<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/phd-commandments\/\">The 5+5 Commandments of a Ph.D.<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/academic-presentation-tips\/\">10 tips for academic talks<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/ways-to-fail-a-phd\/\">10 reasons Ph.D. students fail<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/how-to-blog-as-an-academic\/\">6 tips for low-cost academic blogging<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/fund-phd-students-save-lives\/\">Get The Illustrated Guide in print; fund Ph.D. students; save lives<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/phd-school-in-pictures\/\">The illustrated guide to a Ph.D.<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/advice-for-phd-thesis-proposals\/\">A Ph.D. thesis proposal is a contract<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/successful-phd-students\/\">3 qualities of successful Ph.D. students<\/a><\/li>\n<li><a href=\"http:\/\/matt.might.net\/articles\/advice-for-academic-job-hunt\/\">Academic job hunt advice<\/a><\/li>\n<li><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Jump to Resources for any graduate student. Resources for near-terminal graduate students. Resources for science, engineering or mathematics. Resources for computer science. Resources for programming&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-450","post","type-post","status-publish","format-standard","hentry","category-phddissertation"],"_links":{"self":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/comments?post=450"}],"version-history":[{"count":0,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/450\/revisions"}],"wp:attachment":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/media?parent=450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/categories?post=450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/tags?post=450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}