Course title: Aesthetic Programming (20 ECTS), 2018
Name: Winnie Soon (wsoon@cc.au.dk)
Time: Every Tue 0800 – 1100 (3 hours)
Location: 5361-144, unless otherwise stated
!NB:
Tutorial: Every Wed 14.00-16.00 @ 5361-144 or 5361-135, conducted by Ann Karring and Nynne Lucca Christiansen
Optional shutup and code: Wk 6-10, Friday 08.00-12.00 @ 5361-144, conducted by Ann Karring/Nynne Lucca Christiansen
class detail: Groups in etherpad
“Aesthetic Programming” is a practice-oriented course requires no prior programming experience but with an interest in using code to explore the relationship between art, design, technology and culture within the context of software studies. The course introduces computer coding as an aesthetic, expressive, creative and critical endeavour beyond its functional application. It explores coding as a practice of reading, writing and building, as well as thinking with and in the world, and understanding the complex computational procedures that underwrite our experiences and realities in digital culture. Through coding practice, students are able to contextualize, conceptualize, articulate, design, build, write and run a piece of software. Emphasis is placed on the student acquiring practical skills of expression through an introduction to programming, and this course uses P5.js primarily, which serves as a foundation for further courses on Digital Design.
The course is designed to complement the parallel course in SOFTWARE STUDIES where further critical work will be developed and expanded but without losing sight of coding as critical work in itself. Examples of artists and designers will be introduced that work with coding as their expressive material.
- Weekly mini exercises (mostly individual with a few group works) + peer feedback
- Peer-tutoring/Peer-feedback: within 20 mins in-class presentation with respondents
- Active participation in class discussion and exercises
- FINAL group project - in the form of a “readme” and a “runme” (software) packaged + in class presentation
- Oral exam (Date: to be confirmed)
!NB: 20 ECTS is equivalent to around 25 hours per week, including lecture and tutorial. As such, you are required to spend around 20 hours per week in reading and programming. The more you practice everyday, the more you get out of the course. There is no short cut and the best way is to PRACTICE!
- Weekly 2 hours tutorial session (every Wed - Mandatory)
- Weekly 4 hours shut up+code or code study group discussion (every Friday 08.00-12.00- Optional in 5361-144)
- Learn foundamental concepts in computer programming, such as abstraction, structure, function, iteration, variables and arrays, conditional statements, objects, feedback and interactivity.
- Acquire ability to design, read and write processes via computer code and build/develop computational artefacts.
- Integrate practical and theoretical skills to articulate and conceptualize computational artefacts.
- Recognize coding practice as a way of thinking and inquiry to understand wider cultural systems (computational thinking).
- Transmediale Festival 2018: Face Value
- Read/Watch:
- 1 hr video lecture: Computational Thinking and Thinking About Computing by Jeannette M. Wing (2009)
- Montfort, Nick. Exploratory Programming For the Arts and Humanities. MIT Press, 2016. 267-277 (check blackboard - Appendix A: Why Program?)
- Vee, Annette. Coding Literacty: How Computer Programming Is Changing Writing. MIT Press, 2017.43-93 (Check blackboard - 1 Coding for Everyone and the Legacy of Mass Literacy)
- Thinking line:
- Why do you think you need to know programming? Why is it important to know programming in the area of digital design?
- Class structure:
- Why we need to learn programming?
- What is and why p5.js?
- Setting up: Github + p5.js lib + Atom
- Run the first p5.js program
Examples showcase and discussion
- Read/Watch before class:
- Make sure you have read previous class' readings
- 30 mins Video lecture on Learning While Making P5 JS by Lauren McCarthay. OPENVIS Conference, 2015.
- Short p5.js video by Daniel Shiffman(watch 1.1 and 1.2)
- p5.js: Get Started
- Video on Github: Sharing/version control/operation/hosting by Daniel Shiffman (must watch: 1.1, 1.2, 1.4, 1.8)
- Weekly mini ex1: due week 7, Monday night | Thinking about My First Program
- check mini_ex folder > mini_ex1.md
- Artwork showcase: Inter_fight(2015) by Cesar Escudero Andaluz
- Class structure:
- basic structure: HTML, CSS, JS
- Coordinate system
- Shapes drawing
- Variables
- Image loading/Display
Errors and console.logIn-class challenge: Grid paper portrait in p5.js
- Read/Watch before class:
- Goriunova, Oga. Fun and Software: Exploring Pleasure, Paradox and Pain in Computing. Bloomsbury Academic, 2014. 1-19. (Introduction, pp.1-19)
- p5.js Simple Shapes
- p5.js examples - load/display
- Short p5.js video by Daniel Shiffman(watch 1.3, 1.4, 2.1, 2.2)
- Weekly mini ex2: due week 8, Monday night | A Fun Drawing
- check mini_ex folder > mini_ex2.md
- Artwork showcase: Asterisk Painting by John P. Bell, ported to p5.js and modified by Winnie Soon
- Class structure:
- Arrays
- Conditional Statements
- Iterations: For and While Loops
- Time related syntax:
- FrameRate(), FrameCount, setInterval(), millis()
- Transform: translate(), rotate(), push/pop()
- In-class ex: Decoding a throbber
- Peer-tutoring: Group 1 / Respondents: Group 2, Topic: push()/pop()
- Read/Watch before class:
- Short p5.js video by Daniel Shiffman (watch 3.1, 3.2, 3.3, 3.4, 4.1, 4.2, 5.1, 5.2, 5.3, 7.1, 7.2)
- Soon, Winnie. "Executing Micro-temporality."Executing Practices. Eds. Helen P, Eric S and Magda T. C. Autonomedia, 2017. 89-102.
- Farman, Jason. Fidget Spinners. Real Life, 2017.
- Weekly mini ex3: due week 9, Monday night | Design a Throbber Differently
- check mini_ex folder > mini_ex3.md
- Artwork showcase: How We Act Together by Lauren McCarthy and Kyle McDonald
- Class structure:
- Interacting with captured data: Mouse, Keyboard, Audio, Web Camera
- Capturing and Tracking
- Peer-tutoring: Group 2 / Respondents: Group 3, Topic: p5.dom libary
- How to import and use p5.dom library in your sketch?
- What are the benefits of using p5.dom objects?
- Read/Watch before class:
- Pold, Søren. "Button." Software Studies\ a lexicon. Eds. Matthew Fuller. MIT Press, 2008. 31-36. (can access via e-library)
- Gerlitz, Carolin, and Helmond, Anne. “The like Economy: Social Buttons and the Data-Intensive Web.” New Media & Society 15, no. 8 (December 1, 2013): 1348–65. (can access via e-library)
- p5.js examples - Interactivity 1
- p5.js examples - Interactivity 2
- p5.dom library reference
- Suggested reading/video
- playlist: HTML/CSS/DOM- p5.js Tutorial by Daniel Shiffman
- clmtrackr - Face tracking javascript library by Audun M. Øygard
- Snodgrass, Eric. Executions: Power and Expression in Networked and Computational Media. Malmö University, 2017, pp. 121-152
- Weekly mini ex4: due week 10, Monday night | Capture ALL
- check mini_ex folder > mini_ex4.md
- Artwork showcase: ToFu Go by Francis Lam
- Class structure:
- Objects, Behaviors and Arguments
- Design/Artwork example: ToFu Go by Francis Lam
- Peer-tutoring: Group 3 / Respondents: Group 4, Topic: p5.play library
- How to import and use p5.play library in your sketch?
- Read/Watch before class:
- Short p5.js video by Daniel Shiffman (watch 2.3, 6.1, 6.2, 6.3, 7.1, 7.2, 7.3)
- p5.js examples - Objects
- p5.js examples - Array of Objects
- Lee, Roger Y. Software Engineering: A Hands-On Approach. Springer, 2013. 17-24, 35-37 (Check Blackboard - ch. 2 Object-Oriented concepts)
- Suggested reading/video
- p5.js coding challenge #31: Flappy Bird by Daniel Shiffman
- Crutzen, Cecile and Kotkamp Erna. Object Orientation. Software Studies\a lexicon. Eds Matthew F. MIT Press, 2008. 200-207
- Black, Andrew P. Object-oriented Programming: some history, and challenges for the next fifty years. 2013.
- Dahl, Ole-Johan. The Birth of Object Orientation: the Simula Languages. Object-Orientation to Formal Methods. Eds. Owe O., Krogdahl S., Lyche T. Lecture Notes in Computer Science, vol 2635. Springer, Berlin, Heidelberg . 2004.
- The obscure Objects of Object Orientation, 2017 by Matthew Fuller and Andrew Goffey
- Weekly mini ex5: due week 11, Monday night | Games with objects
- check mini_ex folder > mini_ex5.md
- Artwork showcase: A House of Dust (a simulation of a 1967 poem by Alison Knowles and James Tenney) by Zach Whalen
- Class structure:
- Randomness, loops and rules
- In-class ex: 10 print
- Artwork example: A House of Dust (a simulation of a 1967 poem by Alison Knowles and James Tenney) by Zach Whalen | see more background info here
- Mid-way evaluation
- Peer-tutoring: Group 4 / Respondents: Group 5, Topic: Conditions with sound and video files
- How to incorporate sound and video in your sketch?
- Read/Watch before class:
- take a look at different generative art sketches: http://www.generative-gestaltung.de/2/
- [1 hr video] Beautiful Rules: Generative models of creativity (2007) by Marius Watz
- Soon, Winnie. Executing Liveness. PhD dissertation. Aarhus University, 2016. 82-90 (the section on Generativity)
- The video of Noise() vs Random() by Daniel Shiffman
- Suggested reading/video
- The Recode Project and Memory Slam by Nick Montfort
- Galanter, Philip. "Generative Art Theory". A Companion to Digital Art. Eds. Christiane P, 2016.
- [6 mins Video] How to Draw with Code by Casey Reas
- p5.js Coding Challenge #14: Fractal Trees - Recursive by Daniel Shiffman
- p5.js Coding Challenge #76: Recursion by Daniel Shiffman
- Weekly mini ex6: due week 12, Monday night | A generative program
- check mini_ex folder > mini_ex6.md
- Artwork showcase: Vocable Code by Winnie Soon
- Class structure:
- Speech/Voice/Performativity
- Introduce the final code project
- Peer-tutoring: Group 5 / Respondents: Group 6, Topic: JSON
- What is JSON? How to use JSON?
- Why is it important to know JSON or Why JSON is so popular?
- How may we understand data processing through JSON?
- Read/Watch before class:
- Cox, Geoff and McLean, Alex. Speaking Code. MIT Press, 2013. 17-38. (check blackboard - ch.1 Vocable Code)
- p5.js reference - Typography (All functions within Typography category)
- Text and type by Allison Parrish
- Suggested reading/video
- Rhee, Margaret. “Reflecting on Robots, Love, and Poetry.” XRDS 24, no. 2 (December 2017): 44–46. (can find in uni's lib)
- Matrix Digital Rain video tutorial by Emily Xie
- Raley, Rita. Interferences:[Net.Writing] and the Practice of Codework. electronic book review, 2002.
- Queneau, Ramond, et al. Six Selections by the Oulipo. The New Media Reader. Eds. Noah W-F and Nick M. The MIT Press, 2003. 147-189.
- Weekly mini ex7: due week 13, Monday night | e-literature
- check mini_ex folder > mini_ex7.md
- 15.00-17.00 @ 5008-138
- Details
- Artwork showcase: Net Art Generator by Cornelia Sollfrank
- Class structure:
- API
- In-class ex: Walkthrough Google API
- Different types of errors
- Guest lecture: Don't Erase Me by Tilde Lageri Damborg and Tobias Stenberg Christensen
- Peer-tutoring: Group 6 / Respondents: Group 7, Topic: Parsing
- What is parsing?
- Can you create a sample code that demonstrate parsing?
- What might be the related syntax when we have to parse data?
- Read/Watch before class:
- p5.js video tutorial: working with data by Daniel Shiffman(watch 10.1-10.10)
- Critical Software Thing. "Executing". Nanna Thylstrup, Daniela Agostinho, Annie Ring, Catherine D’Ignazio and Kristin Veel, eds.,Uncertain Archives, (forthcoming). (check blackboard)
- Albright, Jonathan. "The Graph API: Key Points in the Facebook and Cambridge Analytica Debacle". Medium, 2018. (check out the recent hot topic around Cambridge Analytica online)
- Suggested reading/video
- danah boyd & Kate Crawford (2012) CRITICAL QUESTIONS FOR BIG DATA, Information, Communication & Society, 15:5, 662-679,
- Kirschenbaum, Matthew G. Mechanisms: New Media and the Forensic Imagination, 2007, 25-71. (in blackboard)
- Bucher, Taina, “Objects of intense feeling: The case of the Twitter API”, in Computational Culture: a journal of software studies. 2013. Web. 27 Nov. 2013. http://computationalculture.net/article/objects-of-intense-feeling-the-case-of-the-twitter-api
- Winnie Soon, ”Executing Unpredictable Queries” in Executing Liveness. An examination of the live dimension of code inter-actions in software (art) practice (PhD thesis), 2016, pp. 117-139 (excerpt - also in Software Studies assigned reading)
- p5.js video: Twitter Bot Tutorial by Daniel Shiffman
- Weekly mini ex8: due week 15, Monday night | Working with APIs
- check mini_ex folder > mini_ex8.md
- Class Structure
- Peer-tutoring
- Flow chart and Algorithms
- Discussion of final project
- Read/watch before class
- 18 mins video: Algorithms in BBC and full ver (optional) is here
- 4 mins video: Algorithms in pseudocode and flow diagrams
- Ed Finn, “What is an Algorithm,” in What Algorithms Want, MIT Press, 2017, pp. 15-56. (in blackboard - take some time to read it)
- Suggested reading
- Multiple js Files - video by Daniel Shiffman
- Andrew Goffey, "Algorithm", in Fuller, op. cit., pp. 15-20.
- Peer-tutoring: Group 7 / Respondents: Group 8, Topic: Your coding challenge
- Feel free to suggest your own coding challenge
- Peer-tutoring: Group 8 / Respondents: Group 9, Topic: Your coding challenge
- Feel free to suggest your own coding challenge
- Weekly mini ex9: due week 16, Monday night | Flow Chart
- check mini_ex folder > mini_ex9.md
- Class Structure
- What is Machine Learning?
- Introducing ML's js library
- Discussion on students' project
- Peer-tutoring: Group 9 / Respondents: Group 1, Topic: Node.js
- What is node.js?
- Experiment 1 or 2 npm (package manager) and walkthrough with the class?
- Read/Watch before class
- [TED 19 mins video]: From 1 to 100 pixels by Adam Harvey
- [A short text] Cox, Geoff. Machine ways of seeing. unthinking photography, 2016.
- Suggested reading/video
- Dobson, James. E. "Can An Algorithm Be Disturbed?: Machine Learning, Intrinsic Criticism, and the Digital Humanities." College Literature, vol. 42 no. 4, 2015, pp. 543-564. Project MUSE
- ml5.js
- Weekly mini ex10: due week 17, Sun night | Draft of synopsis
- check mini_ex folder > mini_ex10.md
Class 12 | Week 16 | 20 Apr 2018 (Fri), 14.00-16.00 @ The small Auditorium, Building 5510, INCUBA Science Park
- Guest lecture by Anders Visti.
- Title: Programmable matters
- Abstract: This lecture is a presentation of recent works by visual artist and coder Anders Visti, as well as an insight into the processes that inform these works. The lecture is focused on how to think about and work with software and computers in relation to artistic production.
- Bio: Anders Visti is a visual artist working with code. Founder and co-editor of the publishing house * [asterisk] from 2002-12. Founder and editor of the printed web publication ‡ DobbeltDagger and initiator of !=null, a public forum for artists, researchers, developers and hackers using contemporary technology for creative expression and aesthetic inquiry. Currently he is teaching basic coding skills and foundational computing at Funen Art Academy and Jutland Art Academy in Denmark.
- Details will follow soon
NO Wed tutorial session
- Details will follow soon, and it would be a rather long day.
- Daniel Shiffman, Learning Processing: A Beginner’s Guide to Programming Images, Animations, and Interaction, Morgan Kaufmann 2015 (Second Edition)
- Video: Foundations of Programming in Javascript - p5.js Tutorial by Daniel Shiffman
- Daily sketch in Processing by Saskia Freeke
- dwitter.net-within 140 characters of JS
- zach lieberman
- Creative Coding with Processing and P5.JS
- OpenProcessing (search with keywords)
- JS1k
- JavaScript basics by p5.js
- Text and source code: Coding Projects with p5.js by Catherine Leung
- Video: Crockford on Javascript (more historical context)
- A simple introduction to HTML and CSS
- Getting Started with p5.js: Making interactive graphics in Javascript and Processing (Make) by Lauren McCarthy, Casey Reas and Ben Fry
- You are advised to spend at least 10 hours on the weekly mini exercises or coding.
- If the mini exercises are too simple, feel free to program something more complex and advance by exploring other syntax.
- But it is absolutely fine if the program is a simple one and not having a "well designed" screen.
- It is important to address all the questions in the mini exercise, as they help you to understand the subject matter both technically and conceptually.
- Make use of your peers to learn different syntax, functions and operators and to ask questions.
- The more you practice, the more you will get out of the course.
- The aims of having weekly mini exercises are to encourage experimentation, practice programming and stimulate thinking, therefore there is no grade for this.
- Make sure the sketch folder contains necessary libraries, files and a correct directory. It should be able to run on a github server through a web browser.
- In general, the mini ex needs to submit on github on Monday (before the lecture), and peer-feedback should be done on Tue (before the Wed tutorial class)
- It is mandatory to submit weekly mini exercises and to provide feedback to your peers. Those who fails to do any of them may incur a penalty of absence in one class.
- To pass the participation requirement and to enter Exam A, you need to attend at least 75% of the course including guest lectures which means you can only skip maximum 3 lecture classes and 3 tutorials.
- Weekly mini exercises (together with written peer-feedback) is considered as part of the course participation. For those who fail to submit their work may incur a penalty of absence in one class.
- You need to submit your final project with the runme, readme as well as having a presentation to the class at the last lecture.
- Within 15-20 mins presentation (peer tutoring)
- Teaching (able to describe/speak about code and how it works)
- Articulation (able to articulate your learning and coding process)
- Thinking: How programming help you to think about digital culture/design/arts?
- In particular the syntax that you are presenting
- You can also refer to the first class's assigned texts on computational thinking/why program/coding literacy
- You may consider to have sample/creative code or simple code exercise for the class.
- You can also make use of collaborative tools e.g code jam/live coding with teletype on Atom
- Send your slides/sample code to the respondents a day before the class. i.e on Monday. (upload here)
- Within 10 mins response by respondents (feedback and ask questions)
- Read the slides and/or sample code in advance
- Set some questions in mind and lead the class discussion