Topic outline

  • Please note!

    The course consists of common lectures on Monday afternoons and hands-on programming teaching and exercises on Thursday and Friday mornings!

    The course has two groups in SISU:

    • Beginner XXM01 - This one is aimed for students who are beginners in programming, taught by Matti Niinimäki
    • Advanced XXM02 - This one is aimed for students who already understand the basic concepts of programming and want to study some more advanced concepts, taught by Markku Reunanen


    Schedule for the joint lectures for all students


    You can find the group specific schedules from the Beginner and Advanced sections. All the joint Monday lectures are in Q101.

    Monday, 05/09/2022
    15:15–17:00
    Introduction, exercise, forming the groups

    Monday, 12/09/2022
    15:15–17:00
    Markku Reunanen: History of programming (slides below)

    Monday, 19/09/2022
    15:15–17:00

    Monday, 26/09/2022
    15:15–17:00
    Matti Niinimäki: Generative art

    Monday, 03/10/2022
    15:15–17:00
    Markku Reunanen: Hard and soft ware (slides below)

    Monday, 10/10/2022
    15:15–17:00
  • To pass the course the students need to be present on 80% of the lectures and complete the given homework and other assignments.

  • The instructions, schedule and materials for the beginner group of the course will appear on this page. Joint Monday sessions can be found on the front page.

    The course materials will be on a different site: https://learn.newmedia.dog/courses/computational-art-and-design/

    Schedule

    All of the Thursday and Friday classes will be in Room G203. There are no computers there so bring a laptop.

    Period 1






    Period 2

    • Nov 3: Working with Data (JSON), Room G203
    • Nov 4: Working with Data Continued | FFT Analysis Room L208

    • Nov 10: Introduction to other creative coding environments: Processing, Room G203
    • Nov 11: Introduction to other creative coding environments: TouchDesigner, Room L208

    • Nov 17: Working with Hardware (serial, OSC), Room G203
    • Nov 18: Machine learning with ml5.js, Room L208

    • Nov 24: 3D | Project Work and Tutoring, Room G203
    • Nov 25: Project Work and Tutoring, Room L208

    • Dec 1: Project Work and Tutoring, Room G203
    • Dec 2: Project Work and Tutoring, Room L208

  • The instructions, schedule and materials for the advanced group of the course can be found on this page. We'll use Processing for this track, so if you're using your own laptop – highly recommended – download the tool before we start and make sure it works. Thursday and Friday computer classroom sessions will be held at M102 unlike the Monday lectures. Note that there are no lectures on workshop weeks.

    Schedule

    • Sep 8: Arrangements, setting up, basic graphics in Processing
    • Sep 9: Variables and basic types, type conversion, comments
    • Sep 15: Math in processing, Interactive sketches with mouse, formatting. Online. 
      Homework: make a little animation using setup, draw and variables.
    • Sep 16: Flow control: if, if-else, switch-case. Online.
      Homework: flag of Belgium paint program using if/if-else and mouse button, see picture.
    • Sep 22: Flow control: for, while and do-while loops, nested loops.
      Homework: using loops, draw a grid of rectangles and make the mouseover work. See picture.
    • Sep 23: Arrays, arrays with loops.
      Make an int array with the following x/y/color content: 100,100,#ff0000, 500,200,#00ff00, 300,500,#0000ff, 200,400,#808080. Plot the data using a for loop. Expected outcome.
    • Sep 29: Functions: parameters and return values (recursion, if time allows)
      Homework: make a function that draws a smiley face at x,y. Call it from draw with mouse coordinates. Expected outcome.
    • Sep 30: Dealing with text: displaying, searching, replacing


    • Oct 6: Basics of object-oriented programming
      Homework: make a class called Cat and two cat objects that can display themselves. They follow the mouse pointer around. Something like this.
    • Oct 7: More advanced object-oriented programming, inheritance and protecting members
    • Oct 13: Callbacks, images, recap of the 1st part
      Homework: make a creative experiment using PImage.
    • Oct 14: Text file input and output, splitting and trimming
      Homework: solve the mystery.
    • Oct 27: Data structures: lists, trees, hash tables
      Homework: using an IntList let the user draw with the mouse. Pressing 'u' will undo the drawing step by step. Expected outcome.
    • Oct 28: Sorting strings, numbers and objects, making an object list
      Homework: read in the list of famous Western actors and display it in the sketch window in an alphabetical order. Expected outcome.


    • Nov 3: Distances, angles and circles, affine transformations
      Homework: download arrows.pde and add transformations so that you get this out.
    • Nov 4: More transformations, vectors and matrices
    • Nov 10: Direct pixel access
      Homework: display Bub and Bob in a window of 600x600 pixels using direct pixel access (PImages have loadPixels and pixels[] too). Expected outcome.
    • Nov 11: Hex, binary and decimal numbers, logical operations on pixels
      Homework: invert archery.png colors using pixel-level operations. Expected outcome.
    • Nov 17: Video input, built-in and own filters
    • Nov 18: Network programming, server and client using TCP
      Homework: make a server (800x600) where users can place images by sending telnet messages. Expected outcome. Test feed (tip: trim the received string to remove trailing garbage):
      100,100,http://www.kameli.net/~marq/cad/player.jpg
      500,300,http://www.kameli.net/~marq/cad/football.png
    • Nov 24: Loading and playing back audio, synthesis. Note frequencies.
    • Nov 25: More synthesis



    Links

  • Some more courses where you can develop and apply your coding skills

    • AXM-E7004 Physical Computing
    • AXM-E7005 Internet Technologies and Web Development
    • AXM-E7007 Generative and Interactive Narratives
    • AXM-E7008 Embodied Interaction
    • AXM-E0301 Art + Media Studio
    • AXM-E0403 Coding Virtual Worlds
    • Digital Fabrication Courses (Arduino, advanced microcontroller programming)


    • AXM-E6003 Composing with New Musical Instruments (Sound in New Media)
    • AXM-E6004 Deep Learning with Audio (Sound in New Media)
    • AXM-E6006 IXI Workshop (Sound in New Media)
    • AXM-E6009 Procedural Audio (Sound in New Media)


    • AXM-E5005 Software Studies for Game Designers (Game Design and Development)


    Plus various one-week workshops offered throughout the year. A lot more available at the Department of Computer Science – pay attention to prerequisites, though. There is a Computer Science Minor too.