Source

nplrg-website / index.html

Full commit
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>NPLRG</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="Northwestern Programming Languages Reading Group" />
        <meta name="keywords" content="NPLRG, Northwestern, Computer Science, Programming Languages, Student Group" />
        <meta name="author" content="NPLRG" />
        <link href="assets/css/bootstrap.css" rel="stylesheet">
        <style type="text/css">
            body {
                font-family: "Georgia", serif;
                padding-top: 60px;
                padding-bottom: 40px;
            }
            p {
                font-family: inherit;
                font-size: 10pt;
            }
            h1 {
                font-size: 15pt;
                font-weight: normal;
                margin: 1em 0;
            }
            h2 {
                font-size: 14pt;
                font-weight: normal;
                margin: 2em 0;
            }
            blockquote {
                margin: 2em 0;
            }
            dd {
                margin: 0 0 1em;
            }
            .signup {
                text-align: center !important;
            }
        </style>
        <link href="assets/css/bootstrap-responsive.css" rel="stylesheet" />
        
        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
        <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        
        <link rel="shortcut icon" href="assets/ico/favicon.ico" />
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.png" />
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.png" />
        <link rel="apple-touch-icon-precomposed" href="assets/ico/apple-touch-icon-57-precomposed.png" />
    </head>
    <body>
        <div class="navbar navbar-fixed-top">
            <div class="navbar-inner">
                <div class="container">
                    <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </a>
                    <a class="brand" href="#">NPLRG</a>
                    <div class="nav-collapse">
                        <ul class="nav">
                            <li class="active"><a href="#">Home</a></li>
                            <li><a href="#purpose">Purpose</a></li>
                            <li><a href="#schedule">Schedule</a></li>
                            <li><a href="#preparation">Preparation</a></li>
                            <li><a href="#contact">Contact</a></li>
                            <li><a href="#related">Related</a></li>
                        </ul>
                    </div><!--/.nav-collapse -->
                </div>
            </div>
        </div>
        
        <div class="container">
            
            <div class="row">
                <div class="span8 offset2">
                    <h1>Northwestern Programming Languages Reading Group</h1>
                </div>
            </div>
            
            <div class="row">
                <div class="span8 offset2">
                    <h2 id="purpose">Purpose</h2>
                    <p>The "reading group" portion of the moniker is somewhat of a misnomer. The purpose of the reading group is <em>not</em> to summarize or critique important papers in the field of programming language theory. Instead, members are asked to choose one (1) individual programming language as a topic of presentation, and to summarize the interesting and unique features of that one language.</p>
                    <p>This can be summarized by the following mission statement:</p>
                    <blockquote>
                        <p><strong>The purpose of NPLRG is to present and interactively introduce the unique features of a pragmatic and novel programming language or DSL.</strong><p>
                    </blockquote>
                    <p>The important words here are:</p>
                    <dl class="dl-horizontal">
                        <dt>Present</dt><dd>Assignees should develop a slideshow presentation in PowerPoint, Keynote, Google Docs or similar. Presenters need to come fully equipped with a laptop, display dongle and any other materials needed. Presentations should take no more than 30&ndash;40 minutes, allotting time for answering questions afterwards.</dd>
                        <dt>Interactively</dt><dd>Presenters should always demonstrate code features by example. A suggested approach to doing this is, for each feature, to show sample inputs and their corresponding outputs, side by side. If you feel extremely comfortable with typing the language quickly and correctly, feel free to use a live REPL session with carefully crafted examples.</dd>
                        <dt>Introduce</dt><dd>Presenters should try their best to instruct the audience on how to develop programs in the language. This includes mentioning implementations, interpreters, compilers, development environment and best practices. Although the emphasis should be on novel features, a good presentation should encourage the audience to go home and try it themselves.</dd>
                        <dt>Unique</dt><dd>Presenters should pick languages with features that the audience will most likely not have seen before. Older languages can be novel for their time but are often no longer unique. For example. Simula 67 introduced subtype polymorphism into mainstream programming, but these features are too well-known today by C++ and Java programmers to provide an interesting presentation.</dd>
                        <dt>Pragmatic</dt><dd>Every year, dozens (if not hundreds) of languages are developed and formalized by researchers to examine new topics in programming language theory research. However, the vast majority of these languages were never intended to be used in real-world program development. Presenters should avoid languages that are used by only a single researcher or organization, and instead pick a language with an active (albeit small) developer community and practical applications.</dd>
                        <dt>Novel</dt><dd>Above all else, presenters should focus on the truly novel features of the language. When picking a language, try to concentrate on the two to five (2&ndash;5) features of the language that cannot be found anywhere else in mainstream programming languages. The presenter's primary goal should be to introduce a new semantic concept that the audience has never seen before.</dd>
                    </dl>
                    <p>Here is an incomplete list of languages that do not fit the above requirements:</p>
                    <div class="row">
                        <div class="span6 offset1"><p>C++, Java, C#, Python, Ruby, PHP, Perl, JavaScript, CoffeeScript, Smalltalk, Scheme, Common Lisp, Ada, Objective-C, Visual Basic, Lua, Fortran, Cobol, Matlab, R, Groovy, ML, SQL, Squirrel, haXe</p></div>
                    </div>
                    <p>(However, if you can make a convincing argument that any language on this list contains novel and useful features fitting the above description, feel free to present it!)</p>


                    <h2 id="schedule">Schedule</h2>
                    <p>NPLRG meets <strong>every Wednesday at 12:30pm</strong>. Free lunch will be provided to all attendees.</p>
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th>Date</th>
                                <th>First Name</th>
                                <th>Last Name</th>
                                <th>Language</th>
                                <th>Slides</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>04/25</td>
                                <td colspan="4" class="signup"><a href="#contact">Sign Up!</a></td>
                            </tr>
                            <tr>
                                <td>05/02</td>
                                <td colspan="4" class="signup"><a href="#contact">Sign Up!</a></td>
                            </tr>
                            <tr>
                                <td>05/09</td>
                                <td colspan="4" class="signup"><a href="#contact">Sign Up!</a></td>
                            </tr>
                            <tr>
                                <td>05/16</td>
                                <td colspan="4" class="signup"><a href="#contact">Sign Up!</a></td>
                            </tr>
                            <tr>
                                <td>05/23</td>
                                <td colspan="4" class="signup"><a href="#contact">Sign Up!</a></td>
                            </tr>
                        </tbody>
                    </table>


                    <h2 id="preparation">Preparation</h2>
                    <p>If you're having trouble finding a language to meet the criteria, here is a short list of interesting programs languages (and corresponding unique features) that haven't been selected yet, which you may want to consider:
                    <table class="table table-condensed">
                        <thead>
                            <tr>
                                <th>Language</th>
                                <th>Unique Features</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)">Haskell</a></td>
                                <td>Type Inference, Call-by-Need, Monads, Type Classes</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Erlang_(programming_language)">Erlang</a></td>
                                <td>Actors, Processes, Supervision Trees</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Coq">Coq</a>/<a href="http://en.wikipedia.org/wiki/Epigram_(programming_language)">Epigram</a>/<a href="http://en.wikipedia.org/wiki/Agda_(programming_language)">Agda</a></td>
                                <td>Theorem Proving, Dependent Types</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Shen_(programming_language)">Shen</a>/<a href="http://en.wikipedia.org/wiki/Qi_(programming_language)">Qi</a></td>
                                <td>Pattern Matching in Lisp</td>
                            </tr>
                            <tr>
                                <td><a href="http://docs.racket-lang.org/web-server/stateless.html">Racket's #lang web-server</a></td>
                                <td>Stateless Web Continuations</td>
                            </tr>
                            <tr>
                                <td><a href="http://docs.racket-lang.org/redex/">Racket's #lang redex</a></td>
                                <td>Operational Semantics Language</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Concurrent_ML">Concurrent ML</a></td>
                                <td>Asynchronous Typed Channels</td>
                            </tr>
                            <tr>
                                <td><a href="http://llvm.org/releases/1.3/docs/BytecodeFormat.html">LLVM</a></td>
                                <td>Typed Register Bytecode</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Typed_assembly_language">TAL-0/TAL-1</a></td>
                                <td>Typed Assembly Language</td>
                            </tr>
                            <tr>
                                <td><a href="http://justtesting.org/singleton-a-general-purpose-dependently-typed">Singleton</a></td>
                                <td>Dependently Typed Assembly Language</td>
                            </tr>
                            <tr>
                                <td><a href="http://code.google.com/p/decac/">Deca</a></td>
                                <td>Higher-Level Assembly, Regions and Effects</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/BitC">BitC</a></td>
                                <td>Type Inference over Mutation, Effect Typing</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Rust_(programming_language)">Rust</a></td>
                                <td>Typestates, Safe Pointers, Pointer Regions</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Go_(programming_language)">Go</a></td>
                                <td>Automatic Interface Conformity, Build System</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Datalog">Datalog</a></td>
                                <td>First Order Logic for Databases</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Io_(programming_language)">Io</a></td>
                                <td>Pure Prototypical OOP</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Joy_(programming_language)">Joy</a></td>
                                <td>Concatenative Programming, Tacit Programming</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/APL_(programming_language)">APL</a>/<a href="http://en.wikipedia.org/wiki/J_(programming_language)">J</a></td>
                                <td>Array Programming, Tacit Programming</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Factor_(programming_language)">Factor</a></td>
                                <td>Stack Programming, Tacit Programming</td>
                            </tr>
                            <tr>
                                <td><a href="http://en.wikipedia.org/wiki/Max_MSP#Language">Max</a></td>
                                <td>Visual Concatenative Programming</td>
                            </tr>
                        </tbody>
                    </table>


                    <h2 id="contact">Contact</h2>
                    <p>We are always looking for volunteers to present! Send us an email (<a href="mailto:nplrg@cs.northwestern.edu">nplrg@cs.northwestern.edu</a>) to reserve a time spot. Presenting a language is a good way to practice your public speaking skills, to learn more about an interesting language, and to network with your peers. If you have any questions about preparation or about the format, send us an email and we would be glad to help.</p>
                    <p>The organizers for NPLRG are currently the following students:</p>
                    <p>
                    <table class="table table-condensed">
                        <thead>
                            <tr>
                                <th>First Name</th>
                                <th>Last Name</th>
                                <th>Email</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Geoff</td>
                                <td>Hill</td>
                                <td><a href="geoff@geoffhill.org">geoff@geoffhill.org</a></td>
                            </tr>
                            <tr>
                                <td>Andy</td>
                                <td>Gocke</td>
                                <td><a href="agocke@gmail.com">agocke@gmail.com</a></td>
                            </tr>
                        </tbody>
                    </table>
                    </p>

                    <h2 id="related">Related</h2>
                    <dl>
                        <dt>Hyperpolyglot</dt><dd><a href="http://hyperpolyglot.org/">http://hyperpolyglot.org/</a></dd>
                        <dt>Computer Languages Benchmarks Game</dt><dd><a href="http://shootout.alioth.debian.org/">http://shootout.alioth.debian.org/</a></dd>
                        <dt>Lambda the Ultimate</dt><dd><a href="http://lambda-the-ultimate.org/">http://lambda-the-ultimate.org/</a></dd>
                        <dt>List of programming languages by type</dt><dd><a href="http://en.wikipedia.org/wiki/List_of_programming_languages_by_type">http://en.wikipedia.org/wiki/List_of_programming_languages_by_type</a></dd>
                        <dt>Comparison of application virtual machines</dt><dd><a href="http://en.wikipedia.org/wiki/Comparison_of_application_virtual_machines">http://en.wikipedia.org/wiki/Comparison_of_application_virtual_machines</a></dd>
                        <dt>Advanced programming languages</dt><dd><a href="http://matt.might.net/articles/best-programming-languages/">http://matt.might.net/articles/best-programming-languages/</a></dd>
                        <dt>The Next 700 Programming Languages</dt><dd><a href="http://www.thecorememory.com/Next_700.pdf">http://www.thecorememory.com/Next_700.pdf</a></dd>
                    </dl>
                </div>
            </div>

            <hr>

            <footer>
            <p>Copyright &copy; NPLRG 2012</p>
            </footer>

        </div> <!-- /container -->

        <!-- Placed at the end of the document so the pages load faster -->
        <script src="assets/js/jquery.js"></script>
        <script src="assets/js/bootstrap-transition.js"></script>
        <script src="assets/js/bootstrap-alert.js"></script>
        <script src="assets/js/bootstrap-modal.js"></script>
        <script src="assets/js/bootstrap-dropdown.js"></script>
        <script src="assets/js/bootstrap-scrollspy.js"></script>
        <script src="assets/js/bootstrap-tab.js"></script>
        <script src="assets/js/bootstrap-tooltip.js"></script>
        <script src="assets/js/bootstrap-popover.js"></script>
        <script src="assets/js/bootstrap-button.js"></script>
        <script src="assets/js/bootstrap-collapse.js"></script>
        <script src="assets/js/bootstrap-carousel.js"></script>
        <script src="assets/js/bootstrap-typeahead.js"></script>

    </body>
</html>