IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Programming for Game Designers 
Kursusnavn (engelsk):Programming for Game Designers 
Semester:Forå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:30 
Formelle forudsætninger:After the course the student should be able to:

Use the chosen programming language
- Apply this language to simple tasks using good programming techniques
- Discuss fundamental principles of program design
- Design and implement programs
- Read and analyse existing programs
- Analyse and design of a range of basic algorithms
- Create custom-made programming functions
- Solve problems using given tools, steps and strategies, problem analysis, program development, testing and documentation

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:Successful participants will be able to
- Acquire basic competence in the chosen programming language
- Apply this language to simple tasks using good programming techniques
- Demonstrate an understanding of fundamental principles of program design
- Design and implement programs as well as read and understand existing programs
- Demonstrate an understanding of analysis, design and application of a range of basic algorithms
- 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 
Fagligt indhold:Programming for Game Designers - 2017 Spring: Programming as a Design Tool

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 will take a few weeks to get into computational thinking, and to understand how computers work, recognize and use the handfull of structures, move to object-based 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 see 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 will be published in the first week of teaching. Roughly, we will cover basic syntax and program structure, object-based programming, application examples, interactivity and graphics. 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

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 in week 13. Participants will get written feedback.

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)

Assessment form & description:
C: Submission exam. (7-scale, external exam)

Hand-in of three 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.
Two 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:Abelson, Sussman 1985 Hal Abelson, Gerald J. Sussman. Structure and
Interpretation of Computer Programs. Cambridge: MIT Press, 1985.
Bohnacker et al. 2012 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.
Reas, Fry 2007 Casey Reas, Ben Fry. Processing: A Programming
Handbook for Visual
Designers and Artists. 2nd ed. Cambridge: MIT Press, 2014.
Greenberg 2007 Ira Greenberg. Processing: Creative Coding and
Computational Art. Berkeley: Apress, 2007.
Shiffman 2008 Daniel Shiffman. Learning Processing: A Beginner's
Guide to Programming Images, Animation, and Interaction. Burlington:
Morgan Kaufmann, 2008.
Noble 2009 Joshua Noble. Programming Interactivity: A Designer's
Guide to Processing, Arduino, and openFrameworks. Cambridge:
O'Reilly, 2009.