IAT265 Multimedia Programming Teaching Portfolio

My Roles

Lab instructor and teaching assistant.
Responsible for leading individual/group discussion sections, technical tutorials, living coding and debugging of 25-50 students, grading assignments, preparing and giving 2-hour lab tutorials once per week throughout the semester.

Course Introduction

This is the third programming course in SIAT that will enhance students’ programming knowledge (in Java) and skills in order that they will be able to propose, design, implement and test complete interactive graphics/multimedia programs. These skills will prepare students for the more advanced topics they encounter in upper division courses. Students will explore fundamental programming concepts and techniques related to graphics and animation, and use these skills to develop larger interactive multimedia applications.
This course reinforces fundamental concepts of object-oriented programming such as classes, objects and inheritance acquired in prior programming class (IAT167). Students will work with additional objected-oriented concepts such as Java interfaces and abstract classes. Students will learn to use and apply UML diagrams and design patterns, and learn to write appropriate program documentation. They will learn to use event-driven programming to support interactivity.
Students will be introduced to simple data structures and to the use of external libraries to add features to their programs. They will develop individual complete multimedia applications in an industry-standard professional IDE (currently Eclipse) using Java and previously learned skills in Processing. Students will be introduced to simple development tools such as debugging techniques and code refactoring to optimize their code construct. Finally, students will demonstrate proficiency in designing, implementing and testing their own unique interactive graphics/multimedia applications.

Course Syllabus

Week Date Topic Reading                    Assignments
1 Lec Getting Started: Overview of course.
Java file structure;
Simple Java Application;
Review Data Types
 Lab Intro Eclipse IDE
Shapes Drawing in Java
Define and call methods
2 Lec Encapsulation (data hiding and interfacing)
Timer based animation
   Lab Design code for the lab tutorial;
Define a shape class along strict Encapsulation: private fields and minimal interface;
Timer based animation
3 Lec Transformations(translation, rotation, scale);
AffineTransform for transformations with multiple shapes
Edge detection I;
  Assignment 1 Phase 1
   Lab Tutorial: Graphics, Incorporating external libraries into eclipse, working with PVectors
4 Lec  


Mouse Interactions: Mouse Listener, Mouse Adapter;
Array and ArrayList;
QUIZ   1
  Assignment 1 Phase 2
   Lab Create an App with mouse interaction and collection of objects using ArrayList
5 Lec Drawing with Graphics2D and geoms;
Collision detection using Shape/Area;
Linear search algorithm


Assignment 2 Phase 1
   Lab Drawing shapes using Graphics2D; Collision detection using Shape/Area
6 Lec Some code-refactoring tips;
Collisions among collections of objects;
Collision avoidance.



Lab Collision among collections of objects
7 Lec   Application of Inheritance
Assignment 2 
   Lab Application of Inheritance and Polymorphism
8 Lec Keyboard Interactions
Finite state machine (FSM)
The basics of Font
Drawing dynamic text message
Assignment 3 Phase 1
   Lab Energy model with FSM
Display textural info
9 Lec Interface, Abstract Class and Package
Lab use abstract class and package to transform the lab code
10 Lec Image basics and image-based interactions;
Sound with Java sound library & Minim;
Runtime exception handling
  Assignment 3



     Lab Image based interaction and sound effect: Pizza baking
11 Lec Custom Shapes: Polygons, Generative Arts and Fractals   Assignment 4 Phase 1
    Lab Work with custom shapes: add steams to pizza baking using Perlin noise
12 Lec GUI with Swing;
Software Design Patterns;
  Assignment 4 Phase 2
     Lab Add control panels and widgets to lab code;
Create a face app with Design patterns.
13 Lec  


Sorting algorithms;
Java approaches for sorting
  Assignment 4 Final Code
Lab Open Lab
Final  Exam

Learning Outcomes

On completion of this course, students will be able to:
1. explain the fundamentals of software architecture, OOP (eg. interfaces and abstract classes), and multimedia programming within the context of interactive graphics applications.
2. design and document software making appropriate use of UML diagrams and best practices.
3. implement a complete interactive graphic/multimedia program, starting from a specification, by applying concepts and techniques of object-oriented and event driven programming. Such programs should include interaction, graphics, animation, text and sound.
4. make use of design patterns, appropriate data structures (eg. 1/2/3D arrays, lists, vectors, and trees), established external libraries and APIs in designing and implementing more complex applications.
5. explain and implement classic sorting algorithms such as quick sort.
6. use testing, debugging and refactoring to improve performance, readability, and maintainability of their code.

Teaching Methods

Technical Tutorials: Each lab has a 45-60 minute programming tutorial at the beginning, which is closely related to the lecture’s concepts. The students will follow the tutorials through live coding and ask questions.

Lab Challenges: After some programming tutorials, there will be a challenge that must be completed before the beginning of the next lab. These challenges will be simple and are designed to test the students’ knowledge learned in the previous lecture and current lab.

Assignments & Projects: The assignments are all project-based, where the students need to code different simulation environments. The outcomes are open-ended, but the technical requirements are derived from the course concepts.

Quizzes & Exams: Three in-class 30 mins quizzes and the final exam test students’ knowledge of the lecture material, readings, and programming capabilities.

Student Sample Projects



Back to Teaching.