learning – Parerga und Paralipomena http://www.michelepasin.org/blog At the core of all well-founded belief lies belief that is unfounded - Wittgenstein Fri, 12 Oct 2012 08:57:46 +0000 en-US hourly 1 https://wordpress.org/?v=5.2.11 13825966 Teaching programming concepts visually with the Online Python Tutor http://www.michelepasin.org/blog/2012/10/12/teaching-programming-concepts-visually-with-the-online-python-tutor/ http://www.michelepasin.org/blog/2012/10/12/teaching-programming-concepts-visually-with-the-online-python-tutor/#comments Fri, 12 Oct 2012 08:52:49 +0000 http://www.michelepasin.org/blog/?p=2208 The Online Python Tutor is a Web-based program visualization for CS education, developed in collaboration with Google. It provides an easy-to-use online environment for writing code and testing it interactively. A great resource for teaching computer science concepts!

As part of his CS education work at Google, Philip Guo has been developing an open-source educational tool called Online Python Tutor. This tool enables teachers and students to write Python programs directly in the web browser and then single-step forwards and backwards to visualize what the computer is doing as it executes those programs. The tool has already been used by over 100,000 people but has a lot of potential for advancement. Philip is actively seeking partnerships with educators at all grade levels to deploy and improve the Online Python Tutor tool. Visit the URL for more information on using the tool and how to get involved.

Create, Test, Share

Once you’ve created a program, you can also share it online via a url, or get a snippet of code that will let you embed it in your site. Which is pretty neat! For example:

 

]]>
http://www.michelepasin.org/blog/2012/10/12/teaching-programming-concepts-visually-with-the-online-python-tutor/feed/ 1 2208
Sound Reasoning: an open educational resource http://www.michelepasin.org/blog/2011/04/04/sound-reasoning-an-open-educational-resource/ Sun, 03 Apr 2011 23:29:03 +0000 http://www.michelepasin.org/blog/?p=1020 I ran into this resource by chance, it’s a complete tutorial on musical analysis by Anthony Brandt and Robert McClure. It’s being made available by Connexions, a “place to view and share educational material made of small knowledge chunks called modules that can be organized as courses, books, reports, etc.”, where anyone may view or contribute:

The summary says:

Sound Reasoning” is a web-based, introductory music appreciation course. It offers a new approach to music appreciation for adults, focusing on style-independent concepts. While the course concentrates primarily on Western classical and modern music, the concepts that are introduced apply to music of any style or era. The goal of “Sound Reasoning” is to equip you with questions that you may ask of any piece of music, thereby creating a richer and more comprehensive understanding of music both familiar and unfamiliar. Here are some additional features of the course. 1) ”Sound Reasoning” is completely listening based. No ability to read music is required. 2) The course assumes little or no musical background. A minimum of terminology is invoked. 3) Musical examples are interpolated directly into the text. 4) The course is interactive. A “listening gallery” with exercises follows each module, so that you may practice and refine your listening skills. 5) The modules may be studied in sequence or individually. 6)You may easily print a .pdf of any module.. “Sound Reasoning” is designed as both a stand-alone, self-paced course as well as a supplement to existing university classes. Thanks to Connexions, “Sound Reasoning” is available free of charge twenty-four hours a day in a cross-platform format. […] You must have the latest version of Macromedia’s free Flash plugin to play the musical examples. The course works best using Internet Explorer 6 on Microsoft Windows, or Mozilla on any platform.

]]>
1020
Learning resources about Scheme http://www.michelepasin.org/blog/2010/08/10/learning-resources-about-scheme/ Tue, 10 Aug 2010 17:27:17 +0000 http://www.michelepasin.org/blog/?p=808 3eangz5w.jpg

So you’ve decided to know everything about scheme and rock the world using fast-paced programming environments like Impromptu.
Well, I confess I did think that on several occasions, but still I haven’t made it even half way through the schemer pilgmim’s path. But I’ve collected quite a few useful resources in the process, and those I can certainly share!

So in what follows I’ve put together a list of learning resources about Scheme that I found useful.. First off, two links that might be useful in all situations:

  • Little Scheme, an online interpreter that you can use for testing things out while you’re on holidays
  • Schemers.org, semi-official website containing news and lots of links to other resources
  • Now, why don’t we start with the definition offered by the self-regulating wikipedia collective intelligence? Here we go:

    Scheme is one of the two main dialects of the programming language Lisp. Unlike Common Lisp, the other main dialect, Scheme follows a minimalist design philosophy specifying a small standard core with powerful tools for language extension. Its compactness and elegance have made it popular with educators, language designers, programmers, implementors, and hobbyists, and this diverse appeal is seen as both a strength and, because of the diversity of its constituencies and the wide divergence between implementations, one of its weaknesses

    If this blurb hasn’t made you proud of learning such a slick language, you’ll surely find more interesting ideas in what follows. I divided up the list in two sections, generic learning materials about scheme, and tutorials about specific topics (for now, only macros are included).
    ———————————-

    1. Learning Resources About Scheme:

  • Scheme for Common Lispers, article

    The Scheme dialect of Lisp was created in 1975 by Guy Steele and Gerry Sussman to explore ideas in programming-language semantics. They showed that a powerful language can be made “not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary”. Scheme pioneered lexical scope in Lisp, first-class continuations, and tail recursion, and more recently added an advanced macro system. It’s the best-known Lisp dialect after Common Lisp (which it influenced).
    This note summarizes the differences from CL that might slow down a CL programmer trying to read a Scheme program; people without a CL background, or wanting to write programs of their own, should see the references.

  • the Schematics Scheme Cookbook

    The Schematics Scheme Cookbook is a collaborative effort to produce documentation and recipes for using Scheme for common tasks. See the BookIntroduction for more information on the Cookbook’s goals, and the important ContributorAgreement statement.

  • Harvey, Wright, Simply Scheme: Introducing Computer Science, 1999 MIT press [a classic]

    Symbolic programming is one aspect of the reason why we like to teach computer science using Scheme instead of a more traditional language. More generally, Lisp (and therefore Scheme) was designed to support what we’ve called the radical view of computer science. In this view, computer science is about tools for expressing ideas. Symbolic programming allows the computer to express ideas; other aspects of Lisp’s design help the programmer express ideas conveniently. Sometimes that goal comes in conflict with the conservative computer scientist’s goal of protection against errors.

  • Felleisen, Findler, Flatt, Krishnamurthi, How to Design Programs An Introduction to Computing and Programming, MIT 2001

    [..] programming is more than just a vocational skill. Indeed, good programming is a fun activity, a creative outlet, and a way to express abstract ideas in a tangible form. And designing programs teaches a variety of skills that are important in all kinds of professions: critical reading, analytical thinking, creative synthesis, and attention to detail.
    We therefore believe that the study of program design deserves the same central role in general education as mathematics and English. Or, put more succinctly, everyone should learn how to design programs.
    On one hand, program design teaches the same analytical skills as mathematics. But, unlike mathematics, working with programs is an active approach to learning. Interacting with software provides immediate feedback and thus leads to exploration, experimentation, and self-evaluation. Furthermore, designing programs produces useful and fun things, which vastly increases the sense of accomplishment when compared to drill exercises in mathematics. On the other hand, program design teaches the same analytical reading and writing skills as English. Even the smallest programming tasks are formulated as word problems. Without critical reading skills, a student cannot design programs that match the specification. Conversely, good program design methods force a student to articulate thoughts about programs in proper English.

  • Dybvig, The Scheme Programming Language, 2003MIT press

    This book is intended to provide an introduction to the Scheme programming language but not an introduction to programming in general. The reader is expected to have had some experience programming and to be familiar with terms commonly associated with computers and programming languages. The author recommends that readers unfamiliar with Scheme or Lisp also read The Little Schemer [see below]to become familiar with the concepts of list processing and recursion. Readers new to programming should begin with an introductory text on programming.

  • Nils M Holm, “Sketchy LISP” [you can download the book here Update 08/12: this book has become ‘Sketchy Scheme’ and is now for-sale here]

    Sketchy LISP is a step-by-step introduction to functional programming in Scheme. It covers various aspects of the language including data types, conditional evaluation, list processing, lexical scoping, closures, recursion, dynamic typing, etc. By means of numerous examples of varying complexity, it takes the reader on an entertaining and informative tour through the language.
    The Scheme language achieves what only few languages have managed before: to bring fun back to programming. Its simple syntax, clean semantics, and powerful functions open the door to a fresh perspective on program design. Programming in Scheme is fun, and this book is an attempt to share some of that fun.

  • Friedman and Felleisen, The Little Schemer, 1996 MIT press

    The goal of this book is to teach the reader to think recursively. Our first task, therefore, is to decide which language to use to communicate this concept. There are three obvious choices: a natural language, such as English; formal mathematics; or a programming language. Natural languages are ambiguous, imprecise, and sometimes awkwardly verbose. These are all virtues for general communication, but something of a drawback for communicating concisely as precise a concept as the power of recursion. The language of mathematics is the opposite of natural language: it can express powerful formal ideas with only a few symbols. We could, for example, describe the entire technical content of this book in less than a page of mathematics, but the reader who understands that page has little need for this book. For most people, formal mathematics is not very intuitive. The marriage of technology and mathematics presents us with a third, almost ideal choice: a programming language. Programming languages are perhaps the best way to convey the concept of recursion. They share with mathematics the ability to give a formal meaning to a set of symbols. But unlike mathematics, programming languages can be directly experienced—you can take the programs in this book and try them, observe their behavior, modify them, and experience the effect of your modifications.

  • The Weiner Lectures Archives [various videos, but not complete lectures unfortunately]

    The goal of this project is to make knowledge of computer science easily available not only to the students at Berkeley, but also to the entire community. For several years, faculty members have been videotaping lectures in CS large lower division courses, mainly as an aid to students with time conflicts that prevent them from attending lectures. By hosting an archive storing all CS lectures that were recorded, we hope the computing knowledge that has been gathered can be easily shared. As a teaching aid, a ‘greatest hits’ lecture will also be compiled for each course covering all major topics addressed in the corresponding class. The best parts of many different past lectures will be linked together and presented along with slides to make this greatest hits lecture. This lecture should represent the best teaching abilities in the lower division CS lectures and should be a valuable resource in the computer community for basic CS knowledge. Thanks to the generous donation of Larry Weiner this online site should become a permanent resource.

  • ———————-

    2. Specific topics:

    On Macros and metaprogramming:

  • The art of metaprogramming, Part 1: Introduction to metaprogramming, IBM developer works

    Summary: One of the most under-used programming techniques is writing programs that generate programs or program parts. Learn why metaprogramming is necessary and look at some of the components of metaprogramming (textual macro languages, specialized code generators). See how to build a code generator and get a closer look at language-sensitive macro programming in Scheme.

  • Lisp Macros — How to Define Entirely New Languages in Lisp

    This is a very interesting lesson if you want to deeply understand Lisp, and some very deep things about programming, but it’s also entirely optional; We suggest that you do through it, but not worry too much about understanding it in detail. If you get very deeply into programming, you’ll find that Lisp macros are an amazing tool, but they are also somewhat mind-bending, and used rather rarely in simple programming. So, feel free to skip this lesson, or at least, if you do study it, let it flow over you, and maybe come back to it later on if you find yourself wanting to know more about some of the deep and subtle reaches of Lisp programming.

  • Scheme FAQ Macros, on schemewiki.org
  • Sources for learning about Scheme Macros: define-syntax and syntax-rules, a thread on StackOverflow
  • A scheme syntax rules primer, an interesting blog post
  • ———————-

    That’s all for now… I’ll be adding more stuff as I run into it!

    ]]>
    808
    Links to CS 193P iPhone dev lectures http://www.michelepasin.org/blog/2010/03/25/links-to-cs-193p-iphone-dev-lectures/ Thu, 25 Mar 2010 08:27:25 +0000 http://magicrebirth.wordpress.com/?p=650 Picture 1.png

    For some reasons the excellent slides and other course materials that used to be available on the CS 193P iPhone Application Development website have been removed..

    Too bad: download all the 2009 course (including videos) from here, or check out an exact copy of the site here.

    If you’re after the 2010 material, there’re plenty of places to find it here

    The web is miraculous!

    ]]>
    650
    Learning iPhone development while sitting on your couch http://www.michelepasin.org/blog/2009/09/13/learning-iphone-development-while-sitting-on-your-couch/ Sun, 13 Sep 2009 11:09:16 +0000 http://magicrebirth.wordpress.com/?p=315 I guess this is just part of the huge e-learning revolution happening in our century.. what I’m referring to is that through ITunesU – a sort of university-centered section of iTunes that delivers podcasts/videocasts – you can learn an incredible amount of stuff from the top-teachers in the world. Free of charge, anywhere, anytime.

    I listened to the first episode of CS193: iPhone Application Programming and it’s just amazing. Please check out the various other things offered at Stanford, really high quality material!

    Picture 1

     

    ]]>
    315
    Academic Earth – hours of free lectures online http://www.michelepasin.org/blog/2009/03/25/academic-earth-hours-of-free-lectures-online/ Wed, 25 Mar 2009 09:46:16 +0000 http://magicrebirth.wordpress.com/2009/03/25/academic-earth-hours-of-free-lectures-online/ Academic Earth is an organization founded with the goal of giving everyone on earth access to a world-class education. If you can’t go to university and follow lectures there the traditional way, there’s plenty of stuff on this website for you to enlarge your horizons!

    As more and more high quality educational content becomes available online for free, we ask ourselves, what are the real barriers to achieving a world class education? At Academic Earth, we are working to identify these barriers and find innovative ways to use technology to increase the ease of learning.

    We are building a user-friendly educational ecosystem that will give internet users around the world the ability to easily find, interact with, and learn from full video courses and lectures from the world's leading scholars. Our goal is to bring the best content together in one place and create an environment that in which that content is remarkably easy to use and in which user contributions make existing content increasingly valuable.

    Watch it on Academic Earth

    ]]>
    95
    Philosophy On the Air http://www.michelepasin.org/blog/2007/06/04/philosophy-on-the-air/ Mon, 04 Jun 2007 10:19:22 +0000 http://people.kmi.open.ac.uk/mikele/blog/?p=237 It’s nice to see the ancient philosophy keeping up with the new technologies – shows how the soul of philosophy is immortal, and linked to men instead of publication mechanisms. There’s a new podcast available, Philosophy Bites, created by Nigel Warburton (who teaches at the OU) and David Edmonds. The podcast makes available interviews on hot topics with eminent actual philosophers.

    For example this week this is what’s on:

    Mary Warnock who sits in the House of Lords and has chaired two important commissions – special education needs and on human fertilisation and embryology – discusses how her training in philosophy prepared her for these roles.

    The other podcast you’d probably want to listen to, is the established Stanford-based  Philosophy Talk.

     

    ]]>
    237