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.
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.
|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|
|Mouse Interactions: Mouse Listener, Mouse Adapter;
Array and ArrayList;
|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;
|Lab||Collision among collections of objects|
|7 Lec||Application of Inheritance
|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
|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.
Java approaches for sorting
|Assignment 4 Final Code|
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.
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.