Glimmer: IAScript: Semi-Annotated Bibliography
From CSWiki
This is the semi-annotated bibliography for the Glimmer Summer 2009 IAScript students. It will be updated as we continue to find sources.
Contents |
Annotated Sources
Alpha Geeks, Inc. (2001). TinyScheme. Retrieved May 29, 2007, from Alpha Geeks Inc Web site: http://www.alphageeksinc.com/tinyscheme/doc/index.html This simply discusses the TinyScheme language- including a tutorial, documentation, and extension functions. May be useful in adding (Tiny)Scheme implementation to Audacity. Not critical to our work or paper at this point.
Andersson, O., Armstrong, P., Axelsson, H., Berjon, R., Bézaire, B., Bowler, J., et al. (2003). Scalable Vector Graphics (SVG) 1.1 Specification. Retrieved May 31, 2007, from World Wide Web Consortium Web site:http://www.w3.org/TR/SVG11/index.html As we are not working directly with scalable vector graphics, this may not be useful. However, it includes a section on ECMAScript Language Bindings. Quote: "This specification defines the features and syntax for Scalable Vector Graphics (SVG) Version 1.1, a modularized language for describing two-dimensional vector and mixed vector/raster graphics in XML"
Backus, John. (1978). Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs. Communications of the ACM, 21(8), 613-641. Discusses the benefits of using functional programming languages rather than traditional languages. I'm not sure about this one. It's FULL of information, a bit over my head, but not really interesting for what we want to think about.
Beckman, B. (1990). A scheme for interactive graphics. Retrieved May 31, 2007, from Indiana University Computer Science Department Scheme Repository Web site: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.7082&rep=rep1&type=pdf. Discusses the idea of creating a graphics shell using Scheme.
Beckman, B. (1991) A scheme for little languages in interactive graphics. Retrieved June 1, 2007, from CiteSeer Web site: http://citeseer.ist.psu.edu/beckman91scheme.html Argues for using Scheme to program interactive graphics. Not critical to work.
Cope, D. (1991) Computers and Musical Style (The Computer Music and Digital Audio Series). Madison: A-R Editions, Inc. Focuses mostly on the concept of replicating the styles of famous composers through programming, but includes a section on Lisp programming to achieve this. Somewhat relevant.I didn't see a Lisp section. It's mainly a review of a music textbook and a critique of composing in mad libs style.
Cumming, M. (2006). Programming with gtkmm. Retrieved May 28, 2007, from gtkmm Web site: http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/index.html Instructions on how to program with gtkmm. Will likely be useful if we end up using GTK+.
Dannenberg, Roger B. A Language for Interactive Audio Applications. Retrieved May 20, 2009, from Carnegie Mellon University Web site: http://www.cs.cmu.edu/afs/cs.cmu.edu/user/rbd/www/papers/icmc02serpent.pdf. Discusses current approaches to audio programming, and positive and negative qualities of various languages. Covers the need for both functional and object-oriented programming characteristics. Proposes the use of a new scripting language, Serpent, to manage the issues of interactive scripting.
Dawson, B. (2002). GDC 2002: Game scripting in python. Retrieved May 30, 2007, from Gamasutra Web site: http://www.gamasutra.com/features/20020821/dawson_pfv.htm Discusses the benefits and drawbacks of scripting in Python. Overall, a highly positive review arguing for the use of Python.
DiGiano, C., & Eisenberg, M. (1995). Self-disclosing design tools: A gentle introduction to end-user programming. Proceedings of the Conference on Designing interactive Systems: Processes, Practices, Methods, & Techniques, 189-197. Interesting Case study on how an end user-language can be learned by showing the user what the command is while they do the same thing with the mouse. Definitely should talk about this in our paper. It ends up that People seem to be able to learn the language pretty well this way.
Dorn, B. and Guzdial, M. 2006. Graphic designers who program as informal computer science learners. In Proceedings of the Second international Workshop on Computing Education Research (Canterbury, United Kingdom, September 09 - 10, 2006). ICER '06. ACM, New York, NY, 127-134. DOI= http://doi.acm.org/10.1145/1151588.1151608 Discusses methods by which graphic designers with no formal computer science education learn to program (for applications in their field). Some methods include code reuse or using old scripts as a template for new ones- which self-disclosing tools would enhance.
Eisenberg, M. (1991). Programmable applications: Interpreter meets interface. Technical Report. UMI Order Number: AIM-1325, Massachusetts Institute of Technology. This one is pretty good, and we should all try to read this. This also has some suggestions of programming with music. Fails to mention interactivity, so we should find a good source about that. This paper suggests that current software relies on interfaces that use direct manipulation. To allow more options, the authors suggest creating programmible applications that let the user use both the mouse and to program when it is convenient, allowing for enhanced usability. As example, discusses the "SchemePaint" graphics application that has a normal paint interface and a Scheme interpreter. ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-1325.pdf
EKIPS.org. (2007). Inkscape effects. Retrieved May 29, 2007, from EKPS site: http://www.ekips.org/comp/inkscape
A collection of different Inkscape effects.
GIMP.org. (2007). GIMP - The GNU image manipulation program. Retrieved May 30, 2007, from GIMP Web site: http://gimp.org/ We will probably need this one. It's GIMP.
GTKMM.org. (2007). gtkmm: C++ interfaces for GTK+ and GNOME. Retrieved May 30, 2007, from GTKMM Web site: http://www.gtkmm.org GTKMM is the C++ toolkit for GTK+ (look at next one). I'm not sure if we're really going to need this. We might though.
GTK.org. (2007). GTK+ The GIMP toolkit. Retrieved May 29, 2007, from GTK Web site: http://www.gtk.org This is used for writing GUI's. I think *when* we end up doing audacity, we will probably need to do some sort of GUI, so this is a necessity, maybe?
Guzdial, M. (September 2003). A media computation course for non-majors. ACM SIGCSE Bulletin, 35(3), pp. 104-108. This one is also about the Georgia Tech media computation course. Basically, non -majors fail less in this course because they find it more relevant and easier to understand. However, there is a more recent article on this in one of the recent ACM Communications that we should use instead of this (if we want to use this at all)
Guzdial, M. & Tew, A. E. (2006). Imagineering inauthentic legitimate peripheral participation: An instructional design approach for motivating computing education. Proceedings of the 2006 international Workshop on Computing Education Research, 51-58. This was about the incorporation of media computation into computing classes at Georgia Tech. Students must feel that the information is relevant to the "real world", or that they are part of a legitimate community of practice and that they are doing authentic work.
Hamer, J. 2004. An approach to teaching design patterns using musical composition. In Proceedings of the 9th Annual SIGCSE Conference on innovation and Technology in Computer Science Education (Leeds, United Kingdom, June 28 - 30, 2004). ITiCSE '04. ACM, New York, NY, 156-160. DOI= http://doi.acm.org/10.1145/1007996.1008038 Disscussed an approach of teaching design patterns (as well as other concepts, including data structures, grammars, parsing, and proofs) using music composition and the connections between programming and musical structure (such as sequencing, loops, and conditionals).
Hudak, P. (1989). Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21, 3, 359- 411. Talks about conception evolution and application of functional programming languages. If we do any sort of history or background thing on functional languages this would be useful.
Hughes, J. (1984). Why functional programming matters. Retrieved May 31, 2007 from Göteburg University Department of Mathematical Sciences Web site: http://www.math.chalmers.se/~rjmh/Papers/whyfp.html Propaganda about functional languages. Useful for talking about how functional languages are easy to learn and also very powerful!
Inkscape.org. (2007). Inkscape. Draw freely. Retrieved May 31, 2007 from Inkscape Web site: http://www.inkscape.org. A repository of information on Inkscape tools and program information. Relevant if we work with Inkscape.
Karczmarczuk, J. (2005). Teaching of image synthesis in functional style. Proceedings of the 2005 Workshop on Functional and Declarative Programming in Education, 19-26. Basically Just an overview of 3-D modeling taught functionally. Not super interesting, maybe good for us.
Kawai, S. (October 2002). Gluing things together - Scheme in the real-time CG content production. Proceedings of the First International Lisp Conference, 342-348. This paper talks about how scheme was used as a gluing language to do a real-time rendering of a cg movie. Its pretty interesting, but at this point, I'm not exactly sure how useful it will be.
Kelleher, C. and Pausch, R. 2005. Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. ACM Comput. Surv. 37, 2 (Jun. 2005), 83-137. DOI= http://doi.acm.org/10.1145/1089733.1089734 Discusses programming languages available for novices, including descriptions of many application scripting languages. Includes a useful summary of DiGiano's self-disclosing tools and Chart N Art. Also discusses the societal and mechanical barriers to programming, and discuss the importance of finding motivating reasons to program in order to convince newcomers to program.
Marsh, M., Bangay, S., & Lobb, A. (2006). Implementing the "GrabCut" segmentation technique as a plugin for the GIMP. Proceedings of the 4th international Conference on Computer Graphics, Virtual Reality, Visualisation and Interaction in Africa, 171-175. They just talk about a certain plug-in for the GIMP and how it is more efficient than the built-in methods for image segmentation. Probably not anything we're interested in.
Miranda, E.R. (2002). Computer Sound Design: Synthesis Techniques and Programming. Oxford: Focal Press. This book gives some examples of different sound editing techniques that may be useful when we are trying to come up with examples or pre-made functions to demonstrate with, includiing Brassage, Zizag, Waveset disortion, and other wave disortions. Goes into a lot of details about the actual modeling and the computation behind sounds, which may not be relevant.
Moore, F. (1990). Elements of Computer Music. New Jersey: Prentice Hall. Covers a huge array of topics, but does include a useful chapter explaining the concepts behind digital audio. Includes much more information that could be relevant.
Ousterhout, J. K. (March 1988). Scripting: Higher-level programming for the 21st century. IEEE Computer 31(3), pp. 23-30. Super interesting. This talks about scripting languages uses for certain circumstances, especially how they can be much easier to code in than system languages. I think this one should definitely go in the paper.
Peterson, J. and Hickman, C. 2008. Algorithmic music composition as an introduction to computing. J. Comput. Small Coll. 24, 1 (Oct. 2008), 212-218. This paper discusses the use of Haskore, an algorithmic music composition language developed by Paul Hudak, in an education setting, where the compositions engaged students while teaching basic programming ideas. It was used primarily to reinforces the relationship between abstract musical objects and their programming language representation." (216) rather than as a general music editing tool.
Peterson, J. (October 2005). Media centered languages for new computing experiences. Proceedings of the 2005 Conference on Diversity in Computing, pp. 23-25. Discuss the use of domain-specialized languages to teach basic concepts of computer science without all the details of a normal computer language. This allows students to creatively problem solve and also attracts more non-majors to computer science. One such language discussed in this paper is Haskore, which is used for algorithmic music; including basic concepts such as pitch and octave. This paper is more of an overview of two types of Media Languages- one with graphics and then this music one. Its references, the relevant ones now found in the annotated bibliography, are more useful; but this is a nice general overview of specialized domain languages and education.
Rebelsky, S. (2007). CS302 2007S: Higher-order graphics. Retrieved May 31, 2007, from Grinnell College Spring 2007 CSC 302 Course Web site: http://www.cs.grinnell.edu/~rebelsky/Courses/CS302/2007S/HOG/index.html One of Sam's Classes. Has labs and readings and things on SCHEMEing with GIMP. We should also include the 151 classes from last year if we use this one.
Taube, H. (2004). Notes from the metalevel: An introduction to computer composition. London; New York: Taylor & Francis Group. This book discusses how computation is a new paradigm for musical composition; it allows users to create music empirically without formal music theory. The book gives examples in LISP with the Common Music software. The book discusses music programming with Lisp, techniques as well as some concepts of computer composition. It includes the representation of sound, musical structure, algorithms, and processes as well as algorithmic design, mapping/transformations and patterns of composition. It coins the term "metalevel" to be an abstraction of the musical score (which itself is an representation of music, rather than music itself), which deals with the computational process of music composition rather than individual scores of music.
Wang, G. (2004). On-the-fly Programming: Using Code as an Expressive Musical Instrument. Proceedings of the 2004 International Conference on New Interfaces for Musical Expression (NIME). They discuss the problems and goals of on-the-fly programming (interactive scripting). Also, their program is interesting, as it is meant let multiple users modify audio synchronously. I'll also check out their sources.
Weinman, J. (2009). CS151 2009S: Functional Problem Solving With Scheme. Retrieved May 20, 2009, from Grinnell College Spring 2009 CSC 151 Course Web site: http://www.cs.grinnell.edu/~weinman/courses/CSC151/2009S/ Contains all labs, readings, and references for basic use of Scheme and Mediascript with GIMP.
Winkler, T. (1998). Composing Interactive Music. Cambridge: MIT Press. This book discussess the technical aspects of interactive music. It might be useful. I don't know. It has an interesting section on inteface design (Chapter 5).
Self-Disclosure Sources
A specific list of sources pertaining to self-disclosing design tools and learning/programming by example/demonstration can be found here.
Gimp Undo Sources
moved to Self-Disclosing Design Tools Bibliography

