publications: - title: "The First Report on Scheme Revisited" author: - name: "Gerald Jay Sussman" link: "http://groups.csail.mit.edu/mac/users/gjs/" - name: "Guy L. Steele Jr." link: "http://research.sun.com/people/mybio.php?uid=25706" year: "1998" doi: "http://dx.doi.org/10.1023/A:1010079421970" links: doi: "http://dx.doi.org/10.1023/A:1010079421970" tags: - "Scheme" researchr: "https://researchr.org/publication/SussmanS98" cites: 0 citedby: 0 journal: "lisp" volume: "11" number: "4" pages: "399-404" kind: "article" key: "SussmanS98" - title: "Scala for generic programmers" author: - name: "Bruno C. d. S. Oliveira" link: "http://ropas.snu.ac.kr/~bruno/" - name: "Jeremy Gibbons" link: "http://www.comlab.ox.ac.uk/jeremy.gibbons/" year: "2008" doi: "http://doi.acm.org/10.1145/1411318.1411323" links: doi: "http://doi.acm.org/10.1145/1411318.1411323" tags: - "Scala" - "C++" researchr: "https://researchr.org/publication/OliveiraG08" cites: 0 citedby: 0 pages: "25-36" booktitle: "ICFP" kind: "inproceedings" key: "OliveiraG08" - title: "Using a Multiple Term Project to Teach Object Oriented Programming and Design" author: - name: "James C. McKim" link: "https://researchr.org/alias/james-c.-mckim" - name: "Heidi J. C. Ellis" link: "https://researchr.org/alias/heidi-j.-c.-ellis" year: "2004" doi: "http://csdl.computer.org/comp/proceedings/cseet/2004/2099/00/20990059abs.htm" links: doi: "http://csdl.computer.org/comp/proceedings/cseet/2004/2099/00/20990059abs.htm" tags: - "object-oriented programming" - "teaching object-oriented programming" - "C++" - "teaching" - "programming" - "subject-oriented programming" - "design" - "feature-oriented programming" researchr: "https://researchr.org/publication/McKimE04" cites: 0 citedby: 0 pages: "59-64" booktitle: "csee" kind: "inproceedings" key: "McKimE04" - title: "Can Programming Be Liberated, Period?" author: - name: "David Harel" link: "http://www.wisdom.weizmann.ac.il/~harel/" year: "2008" doi: "http://doi.ieeecomputersociety.org/10.1109/MC.2008.10" abstract: "The author describes his dream about freeing ourselves from the straightjackets of programming, making the process of getting computers to do what we want intuitive, natural, and also fun. He recommends harnessing the great power of computing and transforming a natural and almost playful means of programming so that it becomes fully operational and machine-doable." links: doi: "http://doi.ieeecomputersociety.org/10.1109/MC.2008.10" tags: - "programming" researchr: "https://researchr.org/publication/Harel08" cites: 0 citedby: 0 journal: "Computer" volume: "41" number: "1" pages: "28-37" kind: "article" key: "Harel08" - title: "The Lively Kernel: just for fun, let s take JavaScript seriously" author: - name: "Dan Ingalls" link: "https://researchr.org/alias/dan-ingalls" year: "2008" doi: "http://doi.acm.org/10.1145/1408681.1408690" abstract: "The Sun Labs Lively Kernel is a new approach to Web programming. It provides a complete platform for Web applications, including dynamic graphics, network access, and development tools, and requires nothing more than available web browsers. We call the system \"lively\" for three reasons. It comes live off a web page. There is no installation. The entire system is written in JavaScript, and it becomes active as soon as the page is loaded by a browser. It can change itself and create new content. The Lively Kernel includes a basic graphics editor that allows it to alter and create new graphical content, and also a simple IDE that allows it to alter and create new applications. It comes with a basic library of graphical and computational components, and these, as well as the kernel, can be altered and extended on the fly. It can save new artifacts, even clone itself, onto new web pages. The kernel includes WebDAV support for browsing and extending remote file systems, and thus has the ability to save its objects and \"worlds\" (applications) as new active Web pages. The Lively Kernel uses only existing Web standards. The implementation and user language is JavaScript, known by millions and supported in every browser. The graphics APIs are built upon SVG (Scalable Vector Graphics), also available in major browsers. The network protocols used are asynchronous HTTP and WebDAV. The speaker will demonstrate the Lively Kernel and discuss various aspects of JavaScript as a programming language. " links: doi: "http://doi.acm.org/10.1145/1408681.1408690" tags: - "programming languages" - "object-oriented programming" - "JavaScript" - "completeness" - "meta programming" - "protocol" - "aspect oriented programming" - "web applications" - "programming" - "subject-oriented programming" - "Meta-Environment" - "systematic-approach" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/Ingalls08" cites: 0 citedby: 0 pages: "9" booktitle: "DLS" kind: "inproceedings" key: "Ingalls08" - title: "Mixin-based Inheritance" author: - name: "Gilad Bracha" link: "https://researchr.org/alias/gilad-bracha" - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" year: "1990" tags: - "rule-based" researchr: "https://researchr.org/publication/BrachaC90" cites: 0 citedby: 1 pages: "303-311" booktitle: "OOPSLA" kind: "inproceedings" key: "BrachaC90" - title: "Programming Languages: Application and Interpretation" author: - name: "Shriram Krishnamurthi" link: "http://www.cs.brown.edu/~sk/" year: "2007" doi: "http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/" links: doi: "http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/" tags: - "programming languages" - "programming" researchr: "https://researchr.org/publication/PLAI%3A2007" cites: 0 citedby: 0 kind: "book" key: "PLAI:2007" - title: "Why programming is a good medium for expressing poorly understood and sloppily formulated ideas" author: - name: "Gerald Jay Sussman" link: "http://groups.csail.mit.edu/mac/users/gjs/" year: "2005" doi: "http://doi.acm.org/10.1145/1094855.1094860" abstract: " I have stolen my title from the title of a paper given by Marvin Minsky in the 1960s, because it most effectively expresses what I will try to convey in this talk.We have been programming universal computers for about 50 years. Programming provides us with new tools to express ourselves. We now have intellectual tools to describe \"how to\" as well as \"what is.\" This is a profound transformation: it is a revolution in the way we think and in the way we express what we think.For example, one often hears a student or teacher complain that the student knows the \"theory\" of some subject but cannot effectively solve problems. We should not be surprised: the student has no formal way to learn technique. We expect the student to learn to solve problems by an inefficient process: the student watches the teacher solve a few problems, hoping to abstract the general procedures from the teacher's behavior on particular examples. The student is never given any instructions on how to abstract from examples, nor is the student given any language for expressing what has been learned. It is hard to learn what one cannot express. But now we can express it!Expressing methodology in a computer language forces it to be unambiguous and computationally effective. The task of formulating a method as a computer-executable program and debugging that program is a powerful exercise in the learning process. The programmer expresses his/her poorly understood or sloppily formulated idea in a precise way, so that it becomes clear what is poorly understood or sloppily formulated. Also, once formalized procedurally, a mathematical idea becomes a tool that can be used directly to compute results.I will defend this viewpoint with examples and demonstrations from electrical engineering and from classical mechanics. " links: doi: "http://doi.acm.org/10.1145/1094855.1094860" tags: - "programming languages" - "object-oriented programming" - "transformation engineering" - "language engineering" - "transformation language" - "debugging" - "programming" - "subject-oriented programming" - "feature-oriented programming" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/Sussman05" cites: 0 citedby: 0 pages: "6" booktitle: "OOPSLA" kind: "inproceedings" key: "Sussman05" - title: "Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages" author: - name: "Terence John Parr" link: "http://www.cs.usfca.edu/~parrt/" year: "2010" doi: "http://pragprog.com/titles/tpdsl/language-implementation-patterns" abstract: "Learn to build configuration file readers, data readers, model-driven code generators, source-to-source translators, source analyzers, and interpreters. You don’t need a background in computer science—ANTLR creator Terence Parr demystifies language implementation by breaking it down into the most common design patterns. Pattern by pattern, you’ll learn the key skills you need to implement your own computer languages." links: doi: "http://pragprog.com/titles/tpdsl/language-implementation-patterns" tags: - "programming languages" - "design science" - "meta programming" - "data-flow language" - "pattern language" - "meta-model" - "interpreter" - "modeling language" - "language modeling" - "language design" - "data-flow programming" - "data-flow" - "source-to-source" - "e-science" - "ANTLR" - "DSL" - "programming" - "software languages" - "Meta-Environment" - "compilers" - "design" - "interpreters" - "open-source" - "domain-specific language" researchr: "https://researchr.org/publication/Parr%3A2010" cites: 0 citedby: 0 publisher: "The Pragmatic Bookshelf" kind: "book" key: "Parr:2010" - title: "Structure and Interpretation of Computer Programs, Second Edition" author: - name: "Harold Abelson" link: "http://groups.csail.mit.edu/mac/users/hal/" - name: "Gerald Jay Sussman" link: "http://groups.csail.mit.edu/mac/users/gjs/" year: "1996" doi: "http://mitpress.mit.edu/sicp/" links: doi: "http://mitpress.mit.edu/sicp/" tags: - "Scheme" researchr: "https://researchr.org/publication/AbelsonS96" cites: 0 citedby: 0 publisher: "MIT Press" isbn: "0-262-01153-0" kind: "book" key: "AbelsonS96" - title: "Teaching object-oriented programming and design (abstract)" author: - name: "James C. McKim" link: "https://researchr.org/alias/james-c.-mckim" year: "1993" tags: - "object-oriented programming" - "meta programming" - "C++" - "teaching" - "programming" - "subject-oriented programming" - "Meta-Environment" - "design" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/McKim93" cites: 0 citedby: 0 journal: "oopsm" volume: "4" number: "2" pages: "221" kind: "article" key: "McKim93" - title: "After the gold rush: toward sustainable scholarship in computing" author: - name: "Raymond Lister" link: "http://chai.it.usyd.edu.au/People/RaymondLister" year: "2008" abstract: "In just thirty years, we have gone from punched cards to Second Life. But, as the American National Science Foundation (NSF) recently noted, \"undergraduate computing education today often looks much as it did several decades ago\" (NSF, 2006). Consequently, today's \"Nintendo Generation\" have voted with their feet. We bore them. The contrast between the changes wrought via computer research over the last 30 years, and the failure of computing education to adapt to those changes, is because computing academics lead a double life. In our research lives we see ourselves as part of a community that reaches beyond our own university. We read literature, we attend conferences, we publish, and the cycle repeats, with community members building upon each other's work. But in our teaching lives we rarely discuss teaching beyond our own university, we are not guided by any teaching literature; instead we simply follow our instincts. Academics in computing, or in any other discipline, can approach their teaching as research into how novices become experts. Several recent multi-institutional research collaborations have studied the development of novice programmers. This paper describes some of the results from those collaborations. The separation of our teaching and research lives diminishes not just our teaching but also our research. The modern practice of stripping away all 'distractions' to maximize research output is like the practice of stripping away rainforest to grow beef -- both practices appear to work, for a little while, but not indefinitely. Twenty-first century academia needs to bring teaching and research together, to form a scholarship of computing that is an integrated, sustainable, ecological whole." links: "acm": "http://portal.acm.org/citation.cfm?id=1379269#" tags: - "e-science" - "teaching" - "systematic-approach" researchr: "https://researchr.org/publication/Lister%3A2008" cites: 0 citedby: 0 booktitle: "ACE '08: Proceedings of the tenth conference on Australasian computing education" kind: "inproceedings" key: "Lister:2008" - title: "17th Conference on Software Engineering Education and Training (CSEE&T 2004), 1-3 March 2004, Norfolk, VA, USA" year: "2004" tags: - "teaching software engineering" - "software engineering" - "teaching" researchr: "https://researchr.org/publication/csee%3A2004" cites: 0 citedby: 0 booktitle: "17th Conference on Software Engineering Education and Training (CSEE&T 2004), 1-3 March 2004, Norfolk, VA, USA" conference: "csee" publisher: "IEEE Computer Society" isbn: "0-7695-2099-5" kind: "proceedings" key: "csee:2004" - title: "Educating the e-citizen" author: - name: "Roberto Di Cosmo" link: "http://www.dicosmo.org/index.html.en" year: "2006" doi: "http://doi.acm.org/10.1145/1140124.1140125" abstract: " The education of computer science students is a challenging task: the compexity of the material that is part of a curriculum is increasing at an astonishing pace, following the complexity of the software artifacts that our students are trained to master.The free software revolution has entered the scene, and offers new challenges, and new solutions; on one side, the sheer amount of code available as free software today calls for the education of a new kind of computer scientist, and software engineer: they must be prepared to manage the complexity of software systems built out of components coming from all around the planet, evolving at fast, yet unrelated pace, and whose source code is freely available for inspection or customization. On the other side, this very same availability of the source code gives our student the possibility to reach a level of technical insight that was previously unthinkable.In this talk, we will try to give a few examples of new research challenges emerging from the free software revolution, as well as evidence that teaching computer science can no longer be done without free software.Nevertheless, it would be a huge error to believe that we are only called to educate computer scientists and software engineers, and hence could stick to a purely technical view of our duties: due to the unprecedented penetration of ICT in every aspects of everyday life, we are also, as computer science teachers, the first responsible of educating the citizens of tomorrow.This duty will not be fulfilled by simply passing over technical details: as the recent example of the electonic voting machines clearly show, we face the challenge of educating e-citizens which are not simply computer literate, but have a mental model of computer machinery allowing them a clear understanding of the limitations of this technology which is beautiful, but in no way magic. " links: doi: "http://doi.acm.org/10.1145/1140124.1140125" tags: - "software components" - "software component" - "source-to-source" - "e-science" - "teaching" - "open-source" researchr: "https://researchr.org/publication/Cosmo06" cites: 0 citedby: 0 pages: "1" booktitle: "iticse" kind: "inproceedings" key: "Cosmo06"