IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Programming for Designers 
Kursusnavn (engelsk):Programming for Designers 
Semester:Efterår 2017 
Udbydes under:cand.it., spil (games) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:
Maks. antal deltagere:60 
Formelle forudsætninger:The 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! 
Læringsmål:After the course students are expected to be able to:
· Demonstrate an understanding of fundamental principles of program design
· Acquire basic competence in the chosen programming language
· Design and implement programs as well as read and understand existing programs
· Apply this 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
· Demonstrate an understanding of analysis, design and application of a range of basic algorithms 
Fagligt indhold:Programming for Designers - 2017 Autumn: Programming for Interactivity

I believe the most interesting things to program are interactive systems for people to use productively, express themselves and play with each other. (There might be one or two other approaches, but for this course, I suggest to focus on interaction.) 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, provocant, and playful ways that were unimaginable before, and which have no precedent.

To know something about programming is arguably the only way to use a computer to full extend and to substantially participate in and contribute to the brave new digital world. Software (and money) make the world go 'round, together with hardware, networks and machines; but at the core of it all are algorithms – automatic, dynamic, interactive logic. This is what the amazingly successful computer phenomenon is about; the digital revolution is an algorithmic revolution.

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 handfull of structures, encounter object-based and event-driven programming, and implement a basic multiplayer game – and to see how programming can benefit significantly 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. 
Læringsaktiviteter:

14 weeks of teaching consisting of lectures and exercises

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).

As this is a skill-based technical course, the main criterium for assessing your work is demonstrated understanding of programming concepts (this is e.g. done by skillfully writing code, but also by presenting your solutions and explaining them); further relevant criteria which are clearly connected to that are active participation and constructive criticism in discussions, asking interesting and relevant questions, doing the assigned exercises and handing-in the
material that is asked for on time, managing your time to arrive at good results, being able to talk about your work, support peer learning, and being receptive to new ideas and willing to learn. 

Obligatoriske aktivititer:4 exercises to be handed in. Participants receive individual written feedback. Deadlines will be posted i learnIT.

Be aware: 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. 
Eksamensform og -beskrivelse:C: Skriftlige arbejder uden mundtlig eksamen., (7-scale, external exam)

Hand-in of four programming exercises that demonstrates an understanding of fundamental principles of program design as well as skills related to problem solving and the creation of interactive systems.

Three of the hand-ins are to be done individually. The third hand-in is typically a game and it may be done in pairs.

The exercises are assessed summatively.  

Litteratur udover forskningsartikler:I recommended to get a (hard- or digital) copy of the well-known Processing book by Reas, Fry (Casey Reas, Ben Fry. Processing: A Programming Handbook for Visual Designers and Artists, 2nd ed. Cambridge: MIT Press, 2014). The course loosely follows it, and I find it well-written and reasonably easy to understand.

There is much other excellent literature (and online resources) available, use what speaks to you, for instance (in alphabetical order):

Hal Abelson, Gerald J. Sussman. Structure and Interpretation of Computer Programs. Cambridge: MIT Press, 1985.
Hartmut Bohnacker, Benedikt Gross, Julia Laub. Generative Design: Visualize, Program, and Create with Processing. Ed. Claudius Lazzeroni. Transl. Marie Frohling. New York: Princeton Architectural Press, 2012.
Ira Greenberg. Processing: Creative Coding and Computational Art. Berkeley: Apress, 2007.
Daniel Shiffman. Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction. Burlington: Morgan Kaufmann, 2008.
Joshua Noble. Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFrameworks. Cambridge: O'Reilly, 2009.