Loading...

Media Programming — Open & Free

Non-computer science students can put computer programming in a relevant context by focusing on media, such as images, audio, and interactive systems.
Learn about Open & Free OLI courses by visiting the “Open & Free features” tab below.

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. This Open & Free version of the Media Programming course contains all the learning materials except for the scored quizzes at the end of each module.

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 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

Module 2: Manipulating Images: Loops and Arrays

Lab: Modify a java file and add three methods

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

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

Lab: Write a method that creates a collage of images

Module 5: Creating your own classes

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

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

Other course details

June, 2013

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%.

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

Open & Free features

Open & Free Courses

Freeforever
  • Open & Free OLI courses enable independent learners to study a subject on their own terms, at their leisure. Courses are:

    • Self-guided.
    • Self-paced.
    • Self-supported.
  • Open & Free courses include only the learning materials:

    • No teacher.
    • No tests.
    • No college credit.
    • No certificate of completion.
  • *If your teacher gave you a Course Key, do not use an Open & Free course because your teacher will never see your work.

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