The "Computing with Media Data" course
addresses a wide range of topics that are
not covered in an introductory programming class, but that are central
to the
development of modern multimedia software. These include:
- media
data structures and class hierarchies;
- software architecture and models for interactive applications;
- software engineering: analysis and design, design patterns;
- file formats and programming libraries for sound and image I/O;
- construction and programming of graphical userinterfaces,;
- distributed applications and network sockets programming; and
- advanced programming techniques for applications.
The course is
an intensive hands-on workshop in
software development for multimedia applications; it gives students
theoretical insights and practical experience in multimedia software
development. The theoretical component presents the basic
representations, data structures, and file and interchange formats used
for multimedia data such as sound and still and dynamic images. In the
practical part, students work on several platforms
(Linux/UNIX, MS-Windows, and Macintosh), and develop programs for
basic multimedia tasks such as file I/O, data streaming, format
conversion, and data analysis. All students are expected to
become comfortable with software development tools and operating system
APIs on all three classes of platforms.

Students
are assumed to be "moderately
proficient" in a mainstream
low-level programming language such as C, C++, or Java, at the level of
a
1-quarter introductory programming course and 1-quarter "data
structures and algorithms" course. Topics such as simple data
structures (e.g., collections, streams), basic object-oriented design
(class hierarchies),
and I/O libraries will be assumed. Students are also expected to be
able to use
an integrated development environment such as KDevelop (Linux),
VisualStudio (MS-Windows), or Xcode (Mac).