<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Teaching &amp; Learning</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/18/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Tensor Considered Harmful</title>
 <link>http://lambda-the-ultimate.org/tensor-considered-harmful</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://nlp.seas.harvard.edu/NamedTensor&quot;&gt;Tensor Considered Harmful&lt;/a&gt;, by Alexander Rush&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
TL;DR: Despite its ubiquity in deep learning, Tensor is broken. It forces bad habits such as exposing private dimensions, broadcasting based on absolute position, and keeping type information in documentation. This post presents a proof-of-concept of an alternative approach, &lt;strong &gt;named tensors&lt;/strong&gt;, with named dimensions. This change eliminates the need for indexing, dim arguments, einsum- style unpacking, and documentation-based coding. The prototype &lt;strong &gt;PyTorch library&lt;/strong&gt; accompanying this blog post is available as &lt;a href=&quot;https://github.com/harvardnlp/NamedTensor&quot;&gt;namedtensor&lt;/a&gt;.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Thanks to Edward Z. Yang for pointing me to this &quot;Considered Harmful&quot; position paper.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Thu, 27 Jun 2019 14:26:57 +0000</pubDate>
</item>
<item>
 <title>Seven Sketches in Compositionality: An Invitation to Applied Category Theory</title>
 <link>http://lambda-the-ultimate.org/node/5571</link>
 <description>&lt;a href=&quot;http://xahlee.info/math/i/category_theory_brendan_fong_david_spivak_2018-03.pdf&quot;&gt;Seven Sketches in Compositionality: An Invitation to Applied Category Theory&lt;/a&gt;
&lt;p &gt;2018 by Brendan Fong and David I. Spivak&lt;/p&gt;
&lt;blockquote &gt;
Category theory is becoming a central hub for all of pure mathematics. It is unmatched
in its ability to organize and layer abstractions, to find commonalities between structures of all sorts, and to facilitate communication between different mathematical
communities.
But it has also been branching out into science, informatics, and industry. We believe
that it has the potential to be a major cohesive force in the world, building rigorous
bridges between disparate worlds, both theoretical and practical. The motto at MIT is
mens et manus, Latin for mind and hand. We believe that category theory—and pure
math in general—has stayed in the realm of mind for too long; it is ripe to be brought
to hand.
&lt;/blockquote&gt;
A very approachable but useful introduction to category theory. It avoids the Scylla and Charybdis of becoming incomprehensible after page 2 (as many academic texts do), and barely scratching the surface (as many popular texts do).</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Sun, 28 Apr 2019 03:53:25 +0000</pubDate>
</item>
<item>
 <title>Simon Peyton Jones elected into the Royal Society Fellowship</title>
 <link>http://lambda-the-ultimate.org/node/5332</link>
 <description>&lt;p &gt;&lt;A href=&#039;http://research.microsoft.com/en-us/people/simonpj/&#039;&gt;Simon Peyton Jones&lt;/A&gt; has been &lt;A href=&quot;https://royalsociety.org/fellows/fellows-directory/#?earliestelectedyear=2016&quot;&gt;elected&lt;/A&gt; as a &lt;A href=&#039;https://royalsociety.org/people/simon-peyton-jones-12889/&#039;&gt;Fellow of the Royal Society&lt;/A&gt;. The Royal Society biography reads:&lt;BLOCKQUOTE &gt;&lt;br &gt;
Simon&#039;s main research interest is in functional programming languages, their implementation, and their application. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages.&lt;/p&gt;
&lt;p &gt;More generally, Simon is interested in language design, rich type systems, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation -- that is one reason he loves functional programming so much.&lt;/p&gt;
&lt;p &gt;Simon is also chair of Computing at School, the grass-roots organisation that was at the epicentre of the 2014 reform of the English computing curriculum.&lt;br &gt;
&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p &gt;Congratulations SPJ!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/25">Spotlight</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Sat, 30 Apr 2016 19:44:24 +0000</pubDate>
</item>
<item>
 <title>Static vs. Dynamic Languages: A Literature Review</title>
 <link>http://lambda-the-ultimate.org/node/5286</link>
 <description>&lt;p &gt;We&#039;ve mentioned some empirical studies of programming languages &lt;a href=&quot;http://lambda-the-ultimate.org/node/5081&quot;&gt;a few times&lt;/a&gt;, but I haven&#039;t seen a comprehensive list we can use as a reference.&lt;/p&gt;
&lt;p &gt;Fortunately, I just came across &lt;a href=&quot;http://danluu.com/empirical-pl/&quot;&gt;this pretty decent overview of existing literature&lt;/a&gt; on how types impact development. Agree or disagree with Dan Luu&#039;s position, the comprehensive list warrants a front-page post in my opinion.&lt;/p&gt;
&lt;p &gt;One point worth noting is that all the studies used relatively inexpressive languages with bland type systems, like C and Java, and compared those against typed equivalents. A future study ought to compare a more expressive language, like OCaml, Haskell or F#, which should I think would yield more pertinent data to this age-old debate.&lt;/p&gt;
&lt;p &gt;Part of the benefits of types allegedly surround documentation to help refactoring without violating invariants. So another future study I&#039;d like to see is one where participants develop a program meeting certain requirements in their language of choice. They will have as much time as needed to satisfy a correctness test suite. They should then be asked many months later to add a new feature to the program they developed. I expect that the maintenance effort required of a language is more important than the effort required of initial development, because programs change more often than they are written from scratch.&lt;/p&gt;
&lt;p &gt;This could be a good thread on how to test the various beliefs surrounding statically typed and dynamically languages. If you have any studies that aren&#039;t mentioned above, or some ideas on what would make a good study, let&#039;s hear it!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Thu, 26 Nov 2015 19:19:53 +0000</pubDate>
</item>
<item>
 <title>Using Commutative Assessments to Compare Conceptual Understanding in Blocks-based and Text-based Programs</title>
 <link>http://lambda-the-ultimate.org/node/5226</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://dl.acm.org/citation.cfm?doid=2787622.2787721&quot;&gt;Using Commutative Assessments to Compare Conceptual Understanding in Blocks-based and Text-based Programs&lt;/a&gt;, David Weintrop, Uri Wilensky. Proceedings of the eleventh annual International Conference on International Computing Education Research. Via &lt;a href=&quot;https://computinged.wordpress.com/2015/08/17/icer-2015-blocks-win-programming-language-design-ui-design/&quot;&gt;Computing Education Blog&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Blocks-based programming environments are becoming increasingly common in introductory programming courses, but to date, little comparative work has been done to understand if and how this approach affects students&#039; emerging understanding of fundamental programming concepts. In an effort to understand how tools like &lt;a href=&quot;https://scratch.mit.edu/&quot;&gt;Scratch&lt;/a&gt; and &lt;a href=&quot;https://developers.google.com/blockly/&quot;&gt;Blockly&lt;/a&gt; differ from more conventional text-based introductory programming languages with respect to conceptual understanding, we developed a set of &quot;commutative&quot; assessments. Each multiple-choice question on the assessment includes a short program that can be displayed in either a blocks- based or text-based form. The set of potential answers for each question includes the correct answer along with choices informed by prior research on novice programming misconceptions. In this paper we introduce the Commutative Assessment, discuss the theoretical and practical motivations for the assessment, and present findings from a study that used the assessment. The study had 90 high school students take the assessment at three points over the course of the first ten weeks of an introduction to programming course, alternating the modality (blocks vs. text) for each question over the course of the three administrations of the assessment. Our analysis reveals differences on performance between blocks-based and text-based questions as well as differences in the frequency of misconceptions based on the modality. Future work, potential implications, and limitations of these findings are also discussed.&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Mon, 17 Aug 2015 12:25:44 +0000</pubDate>
</item>
<item>
 <title>Eve: the development diary of a programming environment aimed at non-programmers</title>
 <link>http://lambda-the-ultimate.org/node/5156</link>
 <description>&lt;p &gt;In spring 2012 Chris Granger successfully completed a Kickstarter fundraising and got $300K (instead of the requested $200K) to work on &lt;a href=&quot;http://www.chris-granger.com/2012/04/12/light-table---a-new-ide-concept/&quot;&gt;a live-feedback IDE inspired by Bret Victor &quot;Inventing on principle&quot; talk&lt;/a&gt;. The IDE project was called &lt;a href=&quot;http://en.wikipedia.org/wiki/Light_Table_%28software%29&quot;&gt;Light Table&lt;/a&gt;. It initially supported Clojure (the team&#039;s favourite language) only, but eventually added support for Javascript and Python. In January 2014, Light Table was &lt;a href=&quot;http://www.chris-granger.com/2014/01/07/light-table-is-open-source/&quot;&gt;open sourced&lt;/a&gt;, and in October 2014 the Light Table development team &lt;a href=&quot;http://www.chris-granger.com/2014/10/01/beyond-light-table/&quot;&gt;announced&lt;/a&gt; that they decided to create a new language, Eve, that would be a better fit for their vision of programming experience.&lt;/p&gt;

&lt;p &gt;There is little public about Eve so far, no precise design documents, but the development team has a public monthly &lt;a href=&quot;http://incidentalcomplexity.com/archive/&quot;&gt;Development Diary&lt;/a&gt; that I found fairly interesting. It displays an interesting form of research culture, with in particular recurrent reference to academic works that are coming from &lt;em &gt;outside&lt;/em&gt; the programming-language-research community: database queries, Datalog evaluation, distributed systems, version-control systems. This diary might be a good opportunity to have a look at the internals of a language design process (or really programming environment design) that is neither academic nor really industrial in nature. It sounds more representative (I hope!) of the well-educated parts of startup culture.&lt;/p&gt;

&lt;blockquote &gt;&lt;p &gt;Eve is a &lt;a href=&quot;http://shaffner.us/cs/papers/tarpit.pdf&quot;&gt;functional-relational&lt;/a&gt; language. Every input to an Eve program is stored in one of a few insert-only tables. The program itself consists of a series of views written in a relational query language. Some of these views represent internal state. Others represent IO that needs to be performed. Either way there is no hidden or forgotten state - the contents of these views can always be calculated from the input tables.&lt;/p&gt;

&lt;p &gt;Eve is designed for live programming. As the user makes changes, the compiler is constantly re-compiling code and incrementally updating the views. The compiler is designed to be resilient and will compile and run as much of the code as possible in the face of errors. The structural editor restricts partially edited code to small sections, rather than rendering entire files unparseable. The pointer-free relational data model and the timeless views make it feasible to incrementally compute the state of the program, rather than starting from scratch on each edit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p &gt;The public/target for the language is described as &quot;non-programmers&quot;, but in fact it looks like their control group has some previous experience of Excel. (I would guess that experimenting with children with no experience of programming at all, including no Excel work, could have resulted in very different results.)&lt;/p&gt;

&lt;p &gt;Posts so far, by Jamie Brandon:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;&lt;a href=&quot;http://incidentalcomplexity.com/2014/10/16/retrospective/&quot;&gt;Eve so far (October 2014)&lt;/a&gt;: a summary of the work from January to September 2014. The general vision; a move from a functional pidgin to a datalog-like language motivated by non-programmers testing; discussions of algorithms for incremental Datalog evaluation (ending with a poor-man solution).&lt;/li&gt;
&lt;li &gt;&lt;a href=&quot;http://incidentalcomplexity.com/2014/11/05/october/&quot;&gt;October: bootstrap editor, experiments, aggregates&lt;/a&gt;: the team picks five concrete use-cases and draws lessons for their language needs&lt;/li&gt;
&lt;li &gt;&lt;a href=&quot;http://incidentalcomplexity.com/2014/12/01/november/&quot;&gt;November: more experiments, better performance, integrity constraints, zztrees&lt;/a&gt;&lt;/li&gt;
&lt;li &gt;&lt;a href=&quot;http://incidentalcomplexity.com/2015/01/08/december/&quot;&gt;December: more zzjoin, communication, process spawning&lt;/a&gt;&lt;/li&gt;
&lt;li &gt;&lt;a href=&quot;http://incidentalcomplexity.com/2015/02/24/january--february/&quot;&gt;January / February: GUIs, time, joins and aggregates&lt;/a&gt;&lt;/li&gt;
&lt;li &gt;&lt;a href=&quot;http://incidentalcomplexity.com/2015/04/22/version-control/&quot;&gt;Version control, collaborative editing and undo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p &gt;Some random quotes.&lt;/p&gt;

&lt;p &gt;Retrospective:&lt;/p&gt;

&lt;blockquote &gt;Excited, we presented our prototype to a small number of non-programmers and sat back to watch the magic. To our horror, not a single one of them could figure out what the simple example program did or how it worked, nor could they produce any useful programs themselves. The sticking points were lexical scope and data structures. Every single person we talked to just wanted to put data in an Excel-like grid and drag direct references. Abstraction via symbol binding was not an intuitive or well-liked idea.&lt;/blockquote&gt;

&lt;p &gt;[...]&lt;/p&gt;

&lt;blockquote &gt;&lt;p &gt;Our main data-structure was now a tree of tables. Rather than one big top-level function, we switched to a pipeline of functions. Each function pulled data out of the global store using a datalog query, ran some computation and wrote data back. Having less nesting reduced the impact of lexical scope and cursor passing. Using datalog allowed normalising the data store, avoiding all the issues that came from hierarchical models.&lt;/p&gt;

&lt;p &gt;At this point we realised we weren&#039;t building a functional language anymore. Most of the programs were just datalog queries on normalised tables with a little scalar computation in the middle. We were familiar with &lt;a href=&quot;http://bloom-lang.net/&quot;&gt;Bloom&lt;/a&gt; and realised that it fit our needs much better than the functional pidgin we had built so far - no lexical scoping, no data-structures, no explicit ordering. In late March we began work on a Bloom interpreter.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p &gt;October:&lt;/p&gt;

&lt;blockquote &gt;&lt;p &gt;Where most languages express state as a series of changes (&#039;when I click this button add 1 to the counter&#039;), Eve is built around views over input logs (&#039;the value of the counter is the number of button clicks in the log&#039;). Thinking in terms of views makes the current language simple and powerful. It removes the need for explicit control flow, since views can be calculated in any order that is consistent with the dependency graph, and allows arbitrary composition of data without requiring the cooperation of the component that owns that data.&lt;/p&gt;

&lt;p &gt;Whenever we have tried to introduce explicit change we immediately run into problems with ordering and composing those changes and we lose the ability to directly explain the state of the program without reference to data that no longer exists.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p &gt;[...]&lt;/p&gt;

&lt;blockquote &gt;In a traditional imperative language, [context] is provided by access to dynamic scoping (or global variables - the poor mans dynamic scope) or by function parameters. In purely functional languages it can only be provided by function parameters, which is a problem when a deeply buried function wants to access some high up data and it has to be manually threaded through the entire callstack.&lt;/blockquote&gt;

&lt;p &gt;December:&lt;/p&gt;

&lt;blockquote &gt;Eve processes can now spawn subprocesses and inject code into them. Together with the new communication API this allowed much of the IDE architecture to be lifted into Eve. When running in the browser only the UI manager lives on the main thread - the editor, the compiler and the user&#039;s program all live in separate web-workers. The editor uses the process API to spawn both the compiler and the user&#039;s program and then subscribes to the views it needs for the debugging interface. Both the editor and the user&#039;s program send graphics data to the UI manager and receiving UI events in return.&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Thu, 14 May 2015 12:27:02 +0000</pubDate>
</item>
<item>
 <title>Dependently-Typed Metaprogramming (in Agda)</title>
 <link>http://lambda-the-ultimate.org/node/4804</link>
 <description>&lt;p &gt;&lt;A href=&quot;http://www.strictlypositive.org&quot;&gt;Conor McBride&lt;/A&gt; gave an 8-lecture summer course on &lt;A href=&quot;http://www.cl.cam.ac.uk/~ok259/agda-course-13/&quot;&gt;Dependently typed metaprogramming (in Agda)&lt;/A&gt; at the &lt;A href=&quot;http://www.cl.cam.ac.uk/&quot;&gt;Cambridge University Computer Laboratory&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Dependently typed functional programming languages such as Agda are capable of expressing very precise types for data. When those data themselves encode types, we gain a powerful mechanism for abstracting generic operations over carefully circumscribed universes. This course will begin with a rapid depedently-typed programming primer in Agda, then explore techniques for and consequences of universe constructions. Of central importance are the â€œpattern functorsâ€ which determine the node structure of inductive and coinductive datatypes. We shall consider syntactic presentations of these functors (allowing operations as useful as symbolic differentiation), and relate them to the more uniform abstract notion of â€œcontainerâ€. We shall expose the double-life containers lead as â€œinteraction structuresâ€ describing systems of effects. Later, we step up to functors over universes, acquiring the power of inductive-recursive definitions, and we use that power to build universes of dependent types.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The &lt;A href=&quot;https://github.com/pigworker/MetaprogAgda/blob/master/notes.pdf?raw=true&quot;&gt;lecture notes&lt;/A&gt;, &lt;A href=&quot;https://github.com/pigworker/MetaprogAgda&quot;&gt;code&lt;/A&gt;, and &lt;A href=&quot;http://www.youtube.com/playlist?list=PL_shDsyy0xhKhsBUaVXTJ2uJ78EGBpvQa&quot;&gt;video captures&lt;/A&gt; are available online. &lt;/p&gt;
&lt;p &gt;As with his &lt;A href=&quot;http://www.cl.cam.ac.uk/~ok259/agda-course/&quot;&gt;previous course&lt;/A&gt;, the notes contain many(!) mind expanding exploratory exercises, some of which quite challenging.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Fri, 30 Aug 2013 07:34:49 +0000</pubDate>
</item>
<item>
 <title>Socio-PLT: Principles for Programming Language Adoption</title>
 <link>http://lambda-the-ultimate.org/node/4691</link>
 <description>&lt;p &gt;In their &lt;a href=&quot;http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/paper0413.pdf&quot;&gt;survey paper&lt;/a&gt; and their &lt;a href=&quot;http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/viz/index.html&quot;&gt;website&lt;/a&gt;, Leo Meyerovich and Ari Rabkin take Jared Diamond approach to explaining Programming Language adoption.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for examining the sociological groundings of programming language theory: socio-PLT.&lt;br &gt;
Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;There are also videos of talks available from &lt;a href=&quot;http://www.infoq.com/presentations/Socio-PLT&quot;&gt;Splash 2012&lt;/a&gt; and &lt;a href=&quot;http://www.youtube.com/watch?v=v2ITaI4y7_0&quot;&gt;Google Tech Talks&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;See also &lt;a href=&quot;http://lambda-the-ultimate.org/node/4593&quot;&gt;previous discussions&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Wed, 27 Feb 2013 03:49:10 +0000</pubDate>
</item>
<item>
 <title>Brown CS: CSCI 1730: Programming Languages: On-Line Offering</title>
 <link>http://lambda-the-ultimate.org/node/4587</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
We will be making &lt;a href=&quot;http://www.cs.brown.edu/courses/cs173/2012/OnLine/&quot;&gt;this course&lt;/a&gt;, Brown&#039;s upper-level programming languages offering, available for free on the Web.  People anywhere are welcome to view the lectures, read the materials, and do the &lt;a href=&quot;http://www.cs.brown.edu/courses/cs173/2012/Assignments/&quot;&gt;assignments&lt;/a&gt;&lt;/blockquote&gt;
&lt;p &gt;
This is a great opportunity! I have relied heavily on Shriram&#039;s lecture notes when I was starting out.&lt;p &gt;
It is nice to see that he promises to give personal recognition for those who participate, and even has a system in place for giving partial credit to busy professionals who cannot spare the time to do all the assignments and projects.&lt;p &gt;
My only misgiving is that the course uses Racket; I wish it was in Scheme. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Sun, 12 Aug 2012 21:20:48 +0000</pubDate>
</item>
<item>
 <title>Google Blockly Lets You Hack With No Keyboard</title>
 <link>http://lambda-the-ultimate.org/node/4540</link>
 <description>&lt;p &gt;Following on from recent discussions about &lt;a href=&quot;http://lambda-the-ultimate.org/node/4534&quot;&gt;graphical languages in the Russian space program&lt;/a&gt;, here&#039;s a recent story about Google&#039;s new visual programming language.&lt;/p&gt;
&lt;p &gt;Cade Metz, &lt;a href=&quot;http://www.wired.com/wiredenterprise/2012/06/google-blockly/&quot;&gt;&quot;Google Blockly Lets You Hack With No Keyboard&quot;&lt;/a&gt;, Wired Enterprise.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt; Now available on Google Code â€” the companyâ€™s site for hosting open source software â€” the new language is called &lt;a href=&quot;http://code.google.com/p/google-blockly/&quot;&gt;Google Blockly&lt;/a&gt;, and itâ€™s reminiscent of Scratch, a platform developed at MIT that seeks to turn even young children into programmers.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;As the Blockly FAQ says, &quot;Blockly was influenced by App Inventor, which in turn was influenced by Scratch.&quot; So if you&#039;ve seen &lt;a href=&quot;http://scratch.mit.edu/&quot;&gt;Scratch&lt;/a&gt; before, this will look very familiar. If you &lt;i &gt;haven&#039;t&lt;/i&gt; seen Scratch, and want to have a go with Blockly, you can find the maze demo from the Wired story &lt;a href=&quot;http://blockly-demo.appspot.com/blockly/demos/maze/index.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Mon, 11 Jun 2012 01:34:10 +0000</pubDate>
</item>
<item>
 <title>Interactive Tutorial of the Sequent Calculus</title>
 <link>http://lambda-the-ultimate.org/node/4529</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://logitext.ezyang.scripts.mit.edu/logitext.fcgi/tutorial&quot;&gt;Interactive Tutorial of the Sequent Calculus&lt;/a&gt; by Edward Z. Yang.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;This interactive tutorial will teach you how to use the sequent calculus, a simple set of rules with which you can use to show the truth of statements in first order logic. It is geared towards anyone with some background in writing software for computers, with knowledge of basic boolean logic. ...&lt;/p&gt;
&lt;p &gt;Proving theorems is not for the mathematicians anymore: with theorem provers, it&#039;s now a job for the hacker. â€” Martin Rinard ...&lt;/p&gt;
&lt;p &gt;A common complaint with a formal systems like the sequent calculus is the &quot;I clicked around and managed to prove this, but I&#039;m not really sure what happened!&quot; This is what Martin means by the hacker mentality: it is now possible for people to prove things, even when they don&#039;t know what they&#039;re doing. The computer will ensure that, in the end, they will have gotten it right.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The tool behind this nice tutorial is &lt;a href=&quot;http://logitext.ezyang.scripts.mit.edu/logitext.fcgi/main&quot;&gt;Logitext&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/31">Javascript</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/13">Logic/Declarative</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Thu, 31 May 2012 14:48:52 +0000</pubDate>
</item>
<item>
 <title>The Algebra of Data, and the Calculus of Mutation</title>
 <link>http://lambda-the-ultimate.org/node/4443</link>
 <description>&lt;p &gt;Kalani Thielen&#039;s &lt;a href=&quot;http://blog.lab49.com/archives/3011&quot;&gt;The Algebra of Data, and the Calculus of Mutation&lt;/a&gt; is a &lt;em &gt;very&lt;/em&gt; good explanation of ADTs, and also scratches the surfaces of Zippers:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;With the spreading popularity of languages like F# and Haskell, many people are encountering the concept of an algebraic data type for the first time.  When that term is produced without explanation, it almost invariably becomes a source of confusion.  In what sense are data types algebraic?  Is there a one-to-one correspondence between the structures of high-school algebra and the data types of Haskell?  Could I create a polynomial data type?  Do I have to remember the quadratic formula?  Are the term-transformations of (say) differential calculus meaningful in the context of algebraic data types?  Isnâ€™t this all just a bunch of general abstract nonsense?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;(hat tip to &lt;a href=&quot;https://twitter.com/dyokomizo&quot;&gt;Daniel Yokomizo&lt;/a&gt;, who used to be an LtU member...)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Fri, 03 Feb 2012 15:53:09 +0000</pubDate>
</item>
<item>
 <title>Cambridge Course on &quot;Usability of Programming Languages&quot;</title>
 <link>http://lambda-the-ultimate.org/node/4422</link>
 <description>&lt;p &gt;From the syllabus of the Cambridge course on &lt;a href=&quot;http://www.cl.cam.ac.uk/teaching/1011/R201/&quot;&gt;Usability of Programming Languages&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Compiler construction is one of the basic skills of all computer scientists, and thousands of new programming, scripting and customisation languages are created every year. Yet very few of these succeed in the market, or are well regarded by their users. This course addresses the research questions underlying the success of new programmable tools. A programming language is essentially a means of communicating between humans and computers. Traditional computer science research has studied the machine end of the communications link at great length, but there is a shortage of knowledge and research methods for understanding the human end of the link. This course provides practical research skills necessary to make advances in this essential field. The skills acquired will also be valuable for students intending to pursue research in advanced HCI, or designing evaluation studies as a part of their MPhil research project.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Is this kind of HCI based research going to lead to better languages?  Or more regurgitations of languages people are already comfortable with?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Mon, 19 Dec 2011 17:42:53 +0000</pubDate>
</item>
<item>
 <title>CRA-W/CDC and SIGPLAN Programming Languages Mentoring Workshop</title>
 <link>http://lambda-the-ultimate.org/node/4412</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.seas.upenn.edu/~sweirich/plmw12/&quot;&gt;CRA-W/CDC and SIGPLAN Programming Languages Mentoring Workshop&lt;/a&gt;,  Philadelphia, PA (co-located with POPL 2012) Tuesday January 24, 2012&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We are pleased to invite students interested in programming languages research to the first PL mentoring workshop. The goal of this workshop is to introduce senior undergraduate and early graduate students to research topics in programming language theory as well as provide career mentoring advice to help them get through graduate school, land a great job, and succeed. We have recruited leaders from the programming language community to provide overviews of current research topics, and have organized panels of speakers to give students valuable advice about how to thrive in graduate school, search for a job, and cultivate habits and skills that will help them in research careers.&lt;/p&gt;
&lt;p &gt;This workshop is part of the activities surrounding POPL, the Symposium on Principles of Programming Languages, and takes place the day before the main conference. One goal of the workshop is to make the POPL conference more accessible to newcomers and we hope that participants will stay through the entire conference.&lt;/p&gt;
&lt;p &gt;Through the generous donation of our sponsors, we are able to provide travel scholarships to fund student participation. These travel scholarships will cover reasonable travel expenses (airfare, hotel and registration fees) for attendance at both the workshop and the POPL conference. Anyone may apply for a travel scholarship, but first priority will be given to women and under-represented minority applicants.&lt;/p&gt;
&lt;p &gt;The workshop registration is open to all. Students with alternative sources of funding for their travel and registration fees are welcome.&lt;/p&gt;
&lt;p &gt;APPLICATION FOR TRAVEL SUPPORT:&lt;br &gt;
The travel funding application can be accessed from the workshop web site. The deadline for full consideration of funding is December 2, 2011. Selected participants will be notified starting December 9th and will need to register for the workshop by December 24th.&lt;/p&gt;
&lt;p &gt;ORGANIZERS:&lt;br &gt;
Stephanie Weirich, Kathleen Fisher and Ron Garcia&lt;/p&gt;
&lt;p &gt;SPONSORS:&lt;br &gt;
The Computing Research Association&#039;s Committee on the Status of Women (CRA-W),  the Coalition to Diversify Computing (CDC), and the ACM Special Interest Group on Programming Languages (SIGPLAN).
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;We don&#039;t usually post conference or workshop announcements on the front page, but this seemed sufficiently new and worthy to me. Please note that the deadline for the application for travel support is only two days away!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Wed, 30 Nov 2011 20:45:30 +0000</pubDate>
</item>
<item>
 <title>Programming and Scaling</title>
 <link>http://lambda-the-ultimate.org/node/4325</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://tele-task.de/archive/video/flash/14029/&quot;&gt;Programming and Scaling&lt;/a&gt;, a one-hour lecture by Alan Kay at his finest (and that&#039;s saying something!)&lt;/p&gt;
&lt;p &gt;Some of my favorite quotes:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;&quot;The biggest problem we have as human beings is that we confuse our beliefs with reality.&quot;
&lt;li &gt;&quot;We could imagine taking the internet as a model for doing software modules. Why don&#039;t people do it?&quot; (~00:17)
&lt;li &gt;&quot;One of the mistakes that we made years ago is that we made objects too small.&quot; (~00:26)
&lt;li &gt;&quot;Knowledge in many cases trumps IQ. [Henry] Ford was powerful because Isaac Newton changed the way we think.&quot; (~00:28)
&lt;li &gt;&quot;Knowledge is silver. Outlook is gold. IQ is a lead weight.&quot; (~00:30)
&lt;li &gt;&quot;Whatever we [in computing] do is more like what the Egyptians did. Building pyramids, piling things on top of each other.&quot;
&lt;li &gt;&quot;The ability to make science and engineering harmonize with each other - there&#039;s no greater music.&quot; (~00:47)
&lt;/ul&gt;
&lt;p &gt;And there are some other nice ideas in there: &quot;Model-T-Shirt Programming&quot; - software the definition of which fits on a T-shirt. And imagining source code sizes in terms of books: 20,000 LOC = a 400-page book.  A million LOC = a stack of books one meter high.  (Windows Vista: a 140m stack of books.) &lt;/p&gt;
&lt;p &gt;Note: this a Flash video, &lt;a href=&quot;http://tele-task.de/archive/lecture/overview/5819/&quot;&gt;other formats&lt;/a&gt; are available.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Sat, 06 Aug 2011 15:47:05 +0000</pubDate>
</item>
</channel>
</rss>
