Loading...

Media Programming

$25

Non-computer science students can put computer programming in a relevant context by focusing on media, such as images, audio, and interactive systems.

Description

Programming is a way of organizing a task so that it is replicable by something else—a computer. If you have ever given someone directions, or written down a recipe, you have some experience with programming. Learning more about programming will help you develop the skills of thinking systematically about a task and breaking it down into manageable pieces, which can be applied in many disciplines.

The Media Programming course contextualizes the task of programming by focusing on media, such as images, audio, and interactive systems. By doing so, we hope to put programming in a relevant context. For example, iteration is a programming concept that is essential to creating negative and grayscale images. You will learn algorithms for blending two images together and how hierarchical relationships are used to organize elements of a user interface.

This introductory course has no particular prerequisites and is designed primarily for non-computer science students.

Topics Covered:

  • Loops and Arrays
  • Nested Loops and Two-Dimensional Arrays
  • Conditionals and Drawing
  • Creating Classes
  • Graphical User Interfaces
  • Event Handling, Documentation
  • Style
  • Java
  • Dr. Java
  • Flex

This course is based on a well tested course for non CS students—the Media Computation course taught at Georgia Tech and developed by Mark Guzdial and Barbara Ericson. Students in their course have gone from an average of 72% success rate in CS1 (but as low as 49% for majors such as management science) to an average success rate of 84%.

What students will learn

By the end of this course, students will:

  • learn the basic principles of computer programming
  • become familiar with common programming terminology
  • put new programming knowledge into practice in labs at the end of each module:
    • create a method calleddrawWord() that uses a Turtle object to draw any 5-letter word

Learning objectives by module

Unit 1: Main Course Content for Introduction to Programming for Non Programmers

  • Module 1: Introduction to Programming
    • Compile a method to turn it into something the computer understands
    • Compile and run a file
    • Create and initialize objects using the new keyword, and initialize those objects by passing in important information at creation time.
    • Deconstruct a problem and use pseudocode to sketch out a solution that you can translate into Java. Use that pseudocode to comment and explain your code
    • Execute a method it to try it out
    • Execute simple Java statements
    • Explain how casting converts between different types and why you might need it
    • Explain how to use Java’s library to set Turtle’s pen color
    • Explan what types are and how they affect the output of Java math statements
    • Help the instructor find out what went right and wrong
    • Learn about some basics for programming neatly.
    • Open a file
    • Send messages to objects asking them to do something using a series of Java statements
    • Show how to make a method more reusable
    • Test your grasp of the material
    • Understand how computers use binary numbers.
    • Understand how to change the value of a variable
    • Understand rules for declaring variables
    • Understand the difference between a primitive and object variable
    • Understand the impact of counting from 0 instead of 1.
    • Understand the meaning of words like program, object, class, and so on
    • Understand the role of naming in different components of a program
    • Understand what a compiler is for.
    • Understand what a programming language is.
    • Understand what an object or class is.
    • Understand what an operator is and some examples
    • Use a variable to store data or objects and explain what an object variable is
    • Use Java math and relational operators
    • Use Turtles to draw simple shapes
  • Module 2: Manipulating Images: Loops and Arrays
    • Be able to convert from one type of loop to another
    • Create a piece of code that implements an algorithm, and test it.
    • Explain how casting converts between different types and why you might need it
    • Import a class from a package
    • Learn about pictures and how they are represented in a program
    • Learn what a for each loop is and how to use it
    • Learn what a What a for loop is and how to use it
    • Learn what a while loop is and how to use it
    • Learn what loops are, and some conventions for writing loops such as using ++ and declaring variables outside the loop
    • Trace your code to understand how your algorithm works and make sure it does what you expect
    • Understand and use a 2D array
    • Understand and use an array
    • Understand how Java uses evaluation and substitution to interpret your code
    • Understand that picture files are made up of pixels and how pixels are represented
    • Understand the coordinate system for pixels and how to retrieve one
    • Understand the difference between files and memory.
    • Understand the relative advantages of using different loops for repeating statements
    • Understand what a literal is and how it differs from a variable or an expression
    • Understand what an algorithm is
    • Understanding the scope within which a variable is accessible
    • Use the Picture Explorer to explore an image
  • Module 3: Fun with Images: Nested Loops and Two-Dimensional Arrays
    • Copy parts of a picture from one picture to another.
    • Copy pictures to other pictures with 90 degree rotation left or right
    • Copy pixels from one image to another.
    • Create a piece of code that implements an algorithm, and test it.
    • Create concrete examples of simple versions of a problem to make it easier to generate an algorithm that solves it.
    • Declare, initialize, and use multiple variables within a for loop.
    • How to save a picture to disk
    • How to scale pictures up and down
    • Know how to mirror a picture vertically and horizontally.
    • Learn about image algorithms
    • Learning about how to convert an image into grayscale and how to adjust it based on perceived colors
    • Learning about how to negate an image
    • Make methods generic by using parameters
    • Understand and use a 2D array
    • Understand how to convert from a single loop to a nested loop
    • Understand nested loops and how they allow you to manipulate two-dimensional objects.
    • Understand the coordinate system for pixels and how to retrieve one
    • Understand what an algorithm is
    • Understand what makes a good method and rewrite methods to make your code more reusable and get rid of redundant code.
  • Module 4: Conditionals and Drawing: Making Images a bit more interesting
    • Bitmapped pictures versus vector graphics
    • Explain inheritance and understand how it impacts your code
    • How (and why) to use the java.awt.Graphics2D class
    • How to change the background on a picture
    • How to clip a picture to a shape
    • How to conditionally execute a statement or block of statements
    • How to create and paint the object to be painted
    • How to create image collages
    • How to do a general scale method using the java.awt.geom.AffineTransform class
    • How to do chroma key
    • How to do simple edge detection
    • How to draw simple shapes on an image
    • How to draw text on top of an image
    • How to draw with a gradient paint and what it is
    • How to posterize an image
    • How to remove red-eye from a picture
    • How to sepia-tint a picture
    • How to set the color to draw with
    • How to set the color, paint, and stroke (paint brush) for the Graphics2D class
    • How to set the font to write with
    • How to test for values in ranges
    • How to use ‘and’, ‘or’, ‘exclusive or’ and ‘not’ in a conditional
    • How to use conditionals with 2 possibilities
    • How to use conditionals with more than 2 possibilities
    • What an interface is and what it is used for
  • Module 5: Creating your own classes
    • Create a class that simulates a number game
    • Create methods in your Java objects to perform calculations and manipulate the state of the objects.
    • Create methods to access and modify various information stored within your object.
    • Declare a class
    • Declare a main method to perform the task desired.
    • Deconstruct a problem into objects, and assign methods (skills) and fields (data to each object.
    • Explain inheritance and understand how it impacts your code
    • Import a class from a package
    • Inherit from a class
    • Override parent methods
    • Practice going from requirements to class definitions and field declarations
    • Understand how method invocations are resolved
    • Understand implicit calls to super() and how to call parent constructors
    • Understand random number generators
    • Understand the difference between a class method and an object method, and between a class field and an object field.
    • Understand what a constructor does and write a constructor
    • Use a compiler error to find and fix bugs
    • Use a debugger to find bugs
  • Module 6: Graphical User Interfaces: Creation, Layout and Event Handling
    • Advanced information on events
    • How to position components within a GUI using a layout manager
    • Learn how to add a button to a GUI
    • Learn how to add a list to a GUI
    • Learn how to change visual attributes to interface elements
    • Learn how to create a basic frame window
    • Learn how to create and use an event listener
    • Learn how to handle user interface events
    • Learn how to use a library of classes provided by someone else, and the difference between a library and a programming language
    • Learn to create graphical components using Swing
    • Understand the concept of binding and why it is relevant to event handling
    • Understand what an anonymous inner class is, and how to use it for event handling
    • Understand what GUIs are and how to create them

Unit 2: Appendix

  • Module 10: Java details
    • Import a class from a package
    • Use a compiler error to find and fix bugs
    • Use a debugger to find bugs
  • Module 11: Dr. Java
    • Add Java code for a new class to that file
    • Compile and run a file
    • Create a new file in Dr. Java
    • Download, install, and set up Dr Java
    • Execute simple Java statements
    • Figure out what version of Java is installed on your machine
    • Open a file
    • Save, compile, and run the class
    • Use Dr. Java’s history

Course assessments, activities, and outline

UNIT 1: Main Course Content for Introduction to Programming for Non Programmers

Module 1: Introduction to Programming

Lab: Create a method that uses a Turtle object to draw a word

Quiz: Introduction to Programming

Module 2: Manipulating Images: Loops and Arrays

Lab: Modify a java file and add three methods

Quiz: Manipulating Images

Module 3: Fun with Images: Nested Loops and Two-Dimensional Arrays

Lab: Create your own image “special effect”; in an image, replace a person’s head with an object

Quiz: Fun with Images

Module 4: Conditionals and Drawing: Making Images a bit more interesting

Lab: Write a method that creates a collage of images

Quiz: Conditionals and Drawing

Module 5: Creating your own classes

Lab: Create a FortuneTeller class; create a MoodyFortuneTeller class that inherits from FortuneTeller

Quiz: Creating your own Classes

Module 6: Graphical User Interfaces: Creation, Layout and Event Handling

Lab: Create a meme generator — an interface that can be used to modify and caption images

Quiz: Graphical User Interfaces

Other course details

June, 2013

This class would not have come about without the generosity and effort of many individuals

  • Most of the content was based [with permission] on a syllabus and slides put together by Barb Ericson at Georgia Tech.
  • Ideas for labs and assignments were drawn [with permission] from nifty media comp assignments, from the labs and assignments designed by Wayne Summers at Columbus State University for his version of the MediaComp class, and from the CS6630 matlab assignments created by Michael Weeks at Georgia State University. Some useful videos can be found at the Tea Party site which discusses linking media computation and Alice.
  • The staff at OLI, especially Bill Jerome and Ross Strader, were instrumental in teaching us about their software and providing ongoing support for issues large and small, as well is implementing custom features for some of our needs
  • The students who helped to create the content were Zhiquan Yeo (“ZQ”), Greg Methvin, and Young Jae Park. Without them
    this would never have been a 6 month project!
  • Two students volunteered to help test the material we put together as we went (John Santerre and Richard Ram). Without their invaluable feedback this class would be a lot harder to get through!

System requirements

OLI system requirements, regardless of course:

  • internet access
  • an operating system that supports the latest browser update
  • the latest browser update (Chrome recommended; Firefox, Safari supported; Edge and Internet Explorer are supported but not recommended)
  • pop-ups enabled
  • cookies enabled

Some courses include exercises with exceptions to these requirements, such as technology that cannot be used on mobile devices.

This course’s system requirements:

  • A full desktop operating system, such as Windows or Mac OS X.
  • Flash
  • Java
  • DrJava

Included instructor tools

Instructors who teach with OLI courses benefit from a suite of free tools, technologies, and pedagogical approaches. Together they equip teachers with insights into real-time student learning states; they provide more effective instruction in less time; and they’ve been proven to boost student success.

If you’d like to update an OLI course for your students, or even develop a new course or program of study, contact OLI Support for information about the OLI Author platform.

Learning and participation data is displayed in the Learning Dashboard. Read more.

Learning Engineering is the virtuous cycle of iterative improvement of learning content, instructional technologies, and the greater scientific research community. Read more

Cost and payment options

$25 per student

Students are prompted for payment during the OLI course registration process, and can pay with a credit card or an OLI Payment Code purchased from your campus bookstore.

The two payment options presented to students during their OLI course registration process: credit card payment or OLI Payment Code redemption.
Learn about offering OLI Payment Codes in your bookstore.

Bulk discounts and alternative payment arrangements are available, including institutional or departmental payments. Learn about discounts and payment options.

Title

OLI Website:
New look and
New student registration process

OLI’s website has undergone a refresh, and so has the student registration process. Watch the video to see how easily students can register with a Course Key.

Go to Top