Media & Programming: Introduction
Dr. Jennifer Mankoff is an Associate Professor in the Human Computer Interaction Institute at Carnegie Mellon University, where she joined the faculty in 2004. She earned her B.A. at Oberlin College and her Ph.D. in Computer Science at the Georgia Institute of Technology advised by Gregory Abowd and Scott Hudson. Her research focuses on addressing critical social problems through interactive technologies that empower people. Dr. Mankoff's work leverages mobile, desktop and social web technologies to help individuals and effect positive social change. She uses empirical methods to uncover problems, innovates new technologies and methods to address those problems, and constructs enabling tools and processes. Application areas of her work include persuasive techniques for encouraging energy saving behavior, web accessibility for the blind and mobile transcription services for the deaf. Dr. Mankoff is an active member of the ACM ASSETS, CHI, and UIST research communities, and has served on the program and conference committees at all three conferences. She helped found the sustainable-chi group (firstname.lastname@example.org). Her research has been supported by Google Inc., the Intel Corporation, Hewlett-Packard, Microsoft Corporation, and the National Science Foundation. She was awarded the Sloan Fellowship in 2007 and the IBM Faculty Fellowship in 2004 & 2006.
For more details http://www.cs.cmu.edu/~jmankoff/
Dr. Anind Dey is an Associate Professor in the Human Computer Interaction Institute at Carnegie Mellon University. His interests include feedback/intelligibility and control in ubiquitous computing, context-aware computing, toolkits and end-user programming environments, sensor-rich environments, information overload, ambient displays, privacy, human-computer interaction, machine learning. For his dissertation, completed at Georgia Tech in 2000 under Dr. Gregory Abowd, he researched programming support for building context-aware applications: The Context Toolkit.
Attached is a syllabus for the course we will be teaching. It is an introductory Java course that combines an introduction to the language (assuming minimal or no programming experience) with an introduction to image processing algorithms and GUI coding.
For more details http://www.cs.cmu.edu/~anind/
This course has two main goals: (i) to teach students practical programming skills and (ii) to introduce media concepts that will allow students to see the impact of their programming efforts and connect them to topics such as user interface design.
The course is 4 weeks long, and will require approximately 20 hours a week of effort (one module per week).
The optional textbook is Introduction to Computing and Programming in Java: A Multimedia Approach by Mark Guzdial. The book is available online via Amazon at: http://tinyurl.com/mediacompbook. The book is also available via on-line or downloadable subscription at Coursemart.com. It is substantially cheaper than the printed book but you only get access for 180 days.
Since this is an online course, technology will be a key part of your experience. We will use the Open Learning Initiative software developed at CMU to make the course material and assessments available to students (http://oli.web.cmu.edu/openlearning/).
- Introduction to Media Computation
- Introduction to Java
- Programming is about Naming and Manipulating Information
- Declaring and Using Variables
- Methods, Parameters & Expressions
- Pictures and Arrays
- 2D Arrays and Images
- Arrays and Loops
- Scope and Foreach
- For Loop
- Creating and implementing algorithms
- Nested Loops
- Copying Pictures
- Scaling Images
- Conditionals and Selective Image Manipulation
- More on conditionals
- Conditionals and Special Image Effects
- Conditionals and Background Changing
- Creating Collages
- Creating Your Own Objects
- Methods, Accessors and Modifiers
- Standalone Programs
- Object Inheritance
- Putting It All Together
- Advanced Classes and Interfaces
- Introduction to GUIs
- Adding some basic controls
- GUIs and Layout
- Event Handling
- Event Listeners
- Advanced Events
- A more complex GUI
- Java Details
- Dr. Java Tutorials
- Moving from Java to Flex