Spring 2024 (Section 1, 14276) - 3 credit hours
JMU CS349 - Developing Multimedia
Gallery Help Policies Solutions Study-Aids Tools
Syllabus


Description: This course considers both theoretical and practical aspects of digital media. In particular it considers: object-oriented programming techniques used in multimedia applications, event-based programming, a variety of different individual media (both auditory and visual), the issues that arise when combining multiple media, and dynamic (a.k.a., time-based) media.
Textbook: The optional textbook for this course is:

Bernstein, David (2011) The Design and Implementation of Multimedia Software, Jones and Bartlett Learning , Sudbury, MA.
(Order from amazon , order from Barnes and Noble , compare at bigwords , compare at CampusBooks4Less , order from Chegg , or search eFollett )

and the supplements that are available on-line. The textbook is optional because the lecture materials are almost identical to, though less wordy than, the corresponding chapters in the textbook. Hence, in the past, most students have not found it necessary to read the textbook.

Note that, if you do purchase the textbook, Chapter 3 has been re-written since it was published. So, you should read the version that is available on-line instead.

Outline: This course is organized as follows (though specific topics and dates may change).

Readings are listed in the right-most column.

Topics to Understand Completely Before the First Meeting
Basics The Programming Process , Classes , Enumerated Types , Exceptions , Custom Exceptions , Specialization , Abstract Classes and Interfaces
Polymorphism Through Inheritance and Through Interfaces
Input/Output (I/O) File System Basics and I/O Basics
Reference Types Objects and Arrays
Other Topics Packages and Collections
Unit Testing Verification and Testing and JUnit
Labs to Complete Before the First Meeting
Eclipse Skills Tool Editing [Lab] , Tool Debugging[Lab] and Tool Unit Testing (and Coverage)[Lab]
Part I: Introduction
1/17 Some Background/Review Ch. 1
1/19 Parameterized Classes/Generics
Part II: OOP for Multimedia Applications
1/22-1/24 Design Patterns: Iterator , Singleton , Factory-Method , Observer , Composite , Decorator and Strategy S. 2
1/26 Event-Driven Programs (and a Brief Discussion of GUIs) Ch. 2
1/29-1/31 A Brief Discussion of Programs Ch. 3 (v2)
Part III: Static Visual Content
2/2-2/7 Introduction to Visual Content Ch. 4
2/9-2/14 Sampled Static Visual Content Ch. 5
2/16-2/21 Described Static Visual Content Tutorial and Ch. 6
2/23-2/26 A Complete Static Visual Content System Ch. 7
2/28 Q & A Session
3/1 Mid-Term Exam
Part IV: Dynamic Visual Content
3/4-3/8 Sampled Dynamic Visual Content Ch. 8
3/18-3/22 Described Dynamic Visual Content Ch. 9
Part V: Auditory Content
3/25 Introduction to Auditory Content Tutorial and Ch. 10
3/27-4/1 Sampled Auditory Content Ch. 11
4/3-4/5 Described Auditory Content Ch. 12
Part VI: Final Project
4/8-4/12 Team Meetings
4/15-4/17 Presentation of First Increment of the Product
4/19-4/26 Team Meetings
4/29-5/1 Presentation of Final Product
Part VII: Final Exam
5/6 75-Minute Final Exam (8:00AM-9:15AM)

Attendance at lectures is not mandatory but is strongly encouraged. You are expected to come to class prepared to ask and answer questions. Hence, you should complete the readings on a topic before it is discussed in lecture.

Grading: Final grades will be based on your performance on: 1 mid-term exam (30% total) , 1 75-minute final exam [during the exam period] (30% total) , several programming assignments (20% total) and 1 final project (20% total).
Programming Assignments: 7 programming assignments will be assigned during the semester. Note that their due dates are subject to change.

The main page for each programming assignment is written for you as a student, and typically includes an overview, instructions, hints/advice, links to resources of various kinds, and links to other documents. The other documents are written for you as a programmer/software engineer, and are similar to the kinds of documents used by professionals (e.g., needs lists, requirements specifications and/or stories, design specifications, test plans, etc...). For more information, see the "Help" page on understanding programming assignments.

Programming Assignment 1 ; Due: 1/22 (Mon.) 11:00PM (Warming Up)
Programming Assignment 2 ; Due: 1/26 (Fri.) 11:00PM (OOP and Some Patterns)
Programming Assignment 3 ; Due: 2/2 (Fri.) 11:00PM (I/O and Some Patterns)
Programming Assignment 4 ; Due: 2/16 (Fri.) 11:00PM (Programs and Resources)
Programming Assignment 5 ; Due: 2/28 (Wed.) 11:00PM (Static Visual Content)
Programming Assignment 6 ; Due: 3/20 (Wed.) 11:00PM (Sampled Dynamic Visual Content)
Programming Assignment 7 ; Due: 3/29 (Fri.) 11:00PM (Described Dynamic Visual Content)

Make sure you read and understand all of the policies related to programming assignments. Programming assignments may not be submitted after the due date/time (in other words, you will receive a grade of 0 on any programming assignment that is not submitted on time).

Individual/Group Project: Each student must complete a project. Projects must be completed using a scrum-like process. This means that you must create a prioritized list of features (called a product backlog) and you must always have a working product (that you are adding features to during each sprint). You may be called upon to demonstrate your product at any time. The product backlog, along with a brief description of the product, is due on 4/1. Sprint 1 ends on 4/15. Sprint 2 ends on 4/29. Group evaluation forms are due on 5/1 (even if you worked in a group of size one). Make sure you read and understand all of the policies related to projects.
Office Hours: You may meet (either face-to-face or virtually, depending on the situation and schedule) with Prof. Bernstein during his scheduled office hours or you may schedule an appointment with him.
Contact Information: Prof. Bernstein's contact information is available on the contact page of his WWW site.

Copyright 2024