Programming for Designers
AbstractThe course is an introduction to the basic concepts of computing and programming using a general-purpose language such as Processing. It is intended for a general audience with no prior programming experience, and taught with an emphasis on user interaction and graphics.
Programming is an exciting, inspiring and powerful way of creative expression for game designers.
To know something about programming is arguably also the only way to use a computer to full extend and to substantially participate in and contribute to the brave new digital world. At the core of this world are algorithms – automatic, dynamic, interactive logic. This is what the amazingly successful computer phenomenon is about; the *digital revolution* is an *algorithmic revolution*.
I believe the most interesting things to program are interactive systems for people to use productively, express themselves and play with each other. Within interactive applications, initially, the computer has been used and it is still used as a tool to model other media, that is, for example, to paint pictures and cut movies. But increasingly, the computer is coming into its own, and people start to question its uses and experiment with it, and interact with it in novel, provocative, and playful ways that were unimaginable before, and which have no precedent.
For participants who have not done any programming before, it may take a few weeks to get into computational thinking, and to understand how programming works, recognize and use the handful of structures, encounter object-based and event-driven programming, and implement a basic multiplayer game – and to see *how programming can significantly benefit their own design practice*. This course offers a potentially disruptive change of perspective, and participants will experience the world of digital media in a different way, and be able to participate and contribute in ways they could not before.
A semester plan is published in the first week of teaching on LearnIT. Roughly, the course covers basic syntax and program structure, object-based programming, event-driven programming, application examples, interactivity and graphics.
Formal prerequisitesThe course is an introduction to the basic concepts of computing and programming using a general-purpose language such as Processing. It is intended for a general audience with no prior programming experience, and taught with an emphasis on user interaction and graphics.
As an introductory course, there are no prerequisites. Except a wild curiosity and the willingness to learn a challenging but rewarding skill!
Intended learning outcomes
After the course, the student should be able to:
- Acquire basic competence in the chosen programming language
- Design and implement programs as well as read and expand on existing programs
- Apply the chosen programming language to simple tasks using good programming techniques
- Write and use custom-made programming functions
- Acquire skills in problem solving using given tools, steps and strategies, problem analysis, program development, testing and documentation
- Apply a range of basic algorithms
14 weeks of teaching consisting of lectures and exercises The Processing programming language is used to get a first overview of fundamental programming techniques. Teaching time will be divided between lectures, tutored sessions and presentations of students' solutions. All lectures will be complemented by practical programming assignments, some of which will be small and clearly focussed (at the start of the semester), while others will be more open to artistic or playful interpretation (towards the end of it); all will be done individually except the last one which is done in teams. Participants are asked to manage their own time; the exercises are divided into groups, usually including a mix of approaches, requirements and techniques. Participants will go through cycles of learning something and using it for cool stuff; then learning some more, and using that; the cycles get bigger and more challenging during the semester.
I recommended to get a (hard or digital) copy of the well-known Processing book by Reas, Fry (2014). The course loosly follows it, and I find it well-written and reasonably easy to understand. There are several other Processing books available, e.g. by Greenberg (2007), Shiffman (2008), Noble (2009), and Bohnacker et al. (2012), which I find not as well-suited to our introductory course (but do what works for you). Every week there is a lecture; the exercises are introduced and explained. After the lecture everybody can work on the exercises in the lab. At the end of each day participants have the opportunity to present something they have done on that day. There are two rounds of exercises in the course. Round one consists of 36 exercises, four of which are mandatory (see field on Mandatory Activities). The second round of exercises is due in the end of the semester (at ITU's official exam hand-in date - see field on Assessment form & description).
Mandatory activities4 exercises to be handed in. Participants receive individual written feedback. Deadlines are posted in LearnIT.
The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt.
Casey Reas and Ben Fry. Processing: A Programming Handbook for Visual Designers. 2nd ed., 2014
Student Activity BudgetEstimated distribution of learning activities for the typical student
- Lectures: 15%
- Exercises: 15%
- Assignments: 45%
- Exam with preparation: 25%
Ordinary examExam type:
C: Submission of written work, External (7-point scale)
C11: Submission of written work
Hand-in of programming exercises that demonstrate an understanding of fundamental principles of program design as well as skills related to problem solving and the creation of interactive systems. Most of the exercises are to be done individually. The final exercise is typically a game and may be done in pairs. The exercises are assessed summatively.