Multimedia Syllabus

January 31, 2006 | 1 Comment

Class: Multimedia (CS 3440)

Instructor: Matthew Batchelder
Office: Hyde 3rd Floor, ITS Offices
Phone: 535-2086
Office Hours: I am in my office most of the time between 8AM and 5PM. However, I will make sure I’m there if you call or email me ahead of time.
Email: mtbatchelder (AT) plymouth (DOT) edu
Required Text Book: Fundamentals of Multimedia, Ze-Nian Li, Mark S. Drew (publisher: Pearson Prentice Hall, ISBN: 0-13-061872-1)

Meeting Times and Places:
Tuesday: Rounds 207, 12:30-1:45.
Thursday: Memorial 213, 12:30-1:45 Lab.


Course Description:
Use and development of multimedia - combining text, graphics, sound, still and video images and animation into a unified, seamless document. Examines the nature of the various media, the capture or creation, digitalization and modification of each media type, the architecture and technology of multimedia systems, the principles behind effective multimedia presentations, analysis and design of GUI systems and multimedia development through the use of common software packages. Treats both the fundamental concepts and current and emerging technologies.

Course Goals and Objectives:

  1. Learn about the nature of text, image, audio, video, graphic and animation files.
  2. Learn about capturing the various media.
  3. Learn about creating, editing and storing the various media.
  4. Learn about digitization and compression and the role they play in multimedia.
  5. Learn about authoring tools for packaging multimedia systems.
  6. Learn about web-based multimedia and the special problems involved in delivering media over the WWW.
  7. Learn about effective graphical user interfaces.
  8. Learn to use a variety of common software packages to complete the above objectives.

Evaluation:
40% - Labs
30% - Quizzes
30% - Final Project

Grade Scale:
Grades will be assigned according to the following scale:
93-100 - A
90-92 - A-
88-89 - B+
83-87 - B
80-82 - B-
78-79 - C+
73-77 - C
70-72 - C-
68-69 - D+
63-67 - D
60-62 - D-
below 60 - F

Evaluation Items

  • Final Project: Every student will be expected to complete a semester project. The project will be presented to the rest of the class during the last week of classes and during the final exam period (which is Tuesday, May 16, 11am - 1:30pm). The project will comprise 30% of the semester grade.
  • Quizzes: There will be 4 hour-long quizzes. Of the four quizzes, only 3 will count toward the semester grade, with the lowest score of the four being dropped. These three quizzes and a final exam will comprise 30% of the semester grade (6% each). NO makeup quizzes will be given for any reason. If for some reason a student misses an quiz, that quiz will be his or her dropped quiz. The first section (11-11:50) of the final exam period will be used for project presentations. The quiz schedule is as follows:
    1. Quiz 1: Tuesday, February 21
    2. Quiz 2: Tuesday, March 28
    3. Quiz 3: Tuesday, April 18
    4. Quiz 4: Thursday, April 27
    5. Final Exam: Tuesday, May 16, 11am-1:30am (11-11:50 will be used for project presentations)
  • Labs: There will be a number of lab sesions throughout the semester. During the lab, we will meet in Memorial 213. During some of these lab periods, students will be expected to complete an exercise. These lab assignments will comprise 40% of the semester grade, with the lowest lab assignment grade being dropped. NO late labs will be accepted. If for some reason a student misses a lab, that lab will be his or her dropped lab.

Attendance Policy:
Attendance will not be taken in class or lab. However, every student is responsible for everything covered, even if it is not in the text.

Academic Honesty:
Issues of copyright and attributing original sources are particularly important in this course. These topics will be covered in this course, but it is important to realize from the first day of this course that you must accurately represent work that you have created originally versus work that consists of elements from other authors/creators. A safe guideline is to very clearly attribute the work of others, and use content from other people sparingly in your own work. I reserve the right to individually question students about their homework assignments and labs to have the student explain his or her answers to me. If you are unable to explain your answers when I ask, you will not be given credit for the assignment or lab. Such a situation constitutes plagiarism and you are referred to the Student Handbook for a description of the possible consequences of such academic dishonesty.

Tentative Schedule:

Week Date Topic Assignment
week 1
January 30
Ummm…hello to you.  (omghi2u)
Read Chapter 1
February 2
Introduction to Multimedia Read Handout (Navigating the Digital Vista)
week 2
February 7
Introduction to Multimedia (cont.) Read Lab Handout
February 9
Lab - Versatile Powerpoint Navigation
Read Handout (Chapter 7-10 excerpts)
week 3
February 14
File Compression
Read Lab Handout
February 16
Lab - Compression

week 4
February 21
Quiz
Read Handouts (Chapter 3-4 excerpt & Web Usability)
February 23
Images, Color, & Web Usability
Meet in Memorial. Read Handout (Web 2.0)
week 5
February 28
Web 2.0
Read Lab Handout
March 2
Lab - Webpage Usability
Meet in Memorial 213; Read Handout (Chapter 6 excerpt)
week 6
March 7
Basics of Digital Audio
Read Lab Handout
March 9
-
Meet in Memorial 213;
week 7
March 14
Audio & Project Planning Read Handout (Project Planning, Delivery, & Presentation)
March 16
Quiz Read Handout (Chapter 2 excerpt)
week 8
March 21
No Class
Spring Break - Develop Project Idea
March 23
No Class/Lab Spring Break - Develop Project Idea
week 9
March 28
Animation & Authoring Software
Read Lab Handout
March 30
Lab - Flash
Meet in Memorial 213;
week 10
April 4
No Class

April 6
No Class/Lab (Work on your Flash Lab)
Work in Memorial 213 (if needed)
week 11
April 11
Quiz
Read Handout (Chapter 5 Excerpt)
April 13
Video

week 12
April 18
Flash Help & Video Slides
Read Lab Handout
April 20
Lab/Project Assistance
 
week 13
April 25
Legal & Ethical Issues/Presenting Your Project

April 27
Quiz

week 14
May 2
Work on Project
May 4
Work on Project

week 15
May 9
Presentations

May 11
Presentations

week 16
May 16
Presentations & Final Exam (11am-1:30pm)

Chuck Norris Roundhouse Kicks the World

January 12, 2006 | 9 Comments

It may seem odd, but there is a Chuck Norris fad that is sweeping the net…specifically, the World of Warcraft forums. People are coming up with random Chuck Norris facts that really are quite hilarious. He seems to be a much more accomplished man than I had realized. Here are a few of my favorites:

  • Chuck Norris does not hunt because the word hunting infers the probability of failure. Chuck Norris goes killing.
  • Chuck Norris sold his soul to the devil for his rugged good looks and unparalleled martial arts ability. Shortly after the transaction was finalized, Chuck roundhouse kicked the devil in the face and took his soul back. The devil, who appreciates irony, couldn’t stay mad and admitted he should have seen it coming. They now play poker every second Wednesday of the month.
  • If you can see Chuck Norris, he can see you. If you can’t see Chuck Norris you may be only seconds away from death.
  • When the Boogeyman goes to sleep every night he checks his closet for Chuck Norris.
  • Chuck Norris is currently suing NBC, claiming Law and Order are trademarked names for his left and right legs.
  • Chuck Norris lost his virginity before his father did.
  • In fine print on the last page of the Guinness Book of World Records it notes that all world records are held by Chuck Norris, and those listed in the book are simply the closest anyone else has ever gotten.
  • Chuck Norris once ate a whole cake before his friends could tell him there was a stripper in it.
  • There are no races, only countries of people Chuck Norris has beaten to different shades of black and blue.
  • Chuck Norris built a time machine and went back in time to stop the JFK assassination. As Oswald shot, Chuck met all three bullets with his beard, deflecting them. JFK’s head exploded out of sheer amazement.

Here’s what Chuck Norris has to say about the whole thing.

Look Ma, Cross-Domain Scripting!

January 12, 2006 | 21 Comments

Ajax, as I've stated time and time again, is sweet. So what is problem? XMLHTTPRequest requires that the called scripts that execute server side and return information to the client must reside on the same domain. This has irked me time and time again during my exploration and experimentation of the Web 2.0 world.

Enter JSON Web Services and dynamic script tags. This beauty allows for Ajax-like communication across domains without requiring page loads. Right right right...so how do you use it? Read on...

First, lets clarify what JSON (JavaScript Object Notation) is. Wikipedia explains that JSON is just a way to structure object data in a way that is easily interpreted...primarily with JavaScript. Here's some examples from Wikipedia:

JSON Example:

JavaScript:
  1. bork({"menu": {
  2.   "id": "file",
  3.   "value": "File",
  4.   "popup": {
  5.     "menuitem": [
  6.       {"value": "New", "onclick": "CreateNewDoc()"},
  7.       {"value": "Open", "onclick": "OpenDoc()"},
  8.       {"value": "Close", "onclick": "CloseDoc()"}
  9.     ]
  10.   }
  11. }});

Which is the same as this XML Example:

XML:
  1. <menu id="file" value="File">
  2.   <popup>
  3.     <menuitem value="New" onclick="CreateNewDoc()" />
  4.     <menuitem value="Open" onclick="OpenDoc()" />
  5.     <menuitem value="Close" onclick="CloseDoc()" />
  6.   </popup>
  7. </menu>

So...if JSON just the data representation part of things, how does it work similarly to Ajax?

Now we're getting into the Web Services side of things. The quick answer: When you dynamically create <script> tags on a page, the JavaScript source is executed immediately. Now, as most experimental web developers may well know, you can reference remote JavaScript source in a <script> tag. Which means....if you dynamically create a script tag that references a source on another domain, and that source outputs JSON, you are as good as gold!

Here's the step by step: (I use a JavaScript Object I found over at Dan Theurer's Blog for the dynamic adding of script elements...it helps avoid duplicate script tags).

First, lets make the remote file that outputs JSON. (obviously, most cases will have the data dynamically generated...but I'll use a static example as the generation of this data is trivial)

file: remote_file.php

PHP:
  1. <?php
  2. echo 'bork({"Image": { "Width":500, "Height":250, "Title":"Giant Cow", "Thumbnail":{"Url":"http://someurl.com/image/1234", "Height": 75, "Width": 150}}});';
  3. ?>

Here's the html file we want the user to see/interact with:

file: client.html

HTML:
  1. <head><title>Test</title></head>
  2. <script src="js/jsr_class.js" type="text/javascript"></script>
  3. <script type="text/javascript">
  4. function addScript()
  5. {
  6.   var obj=new JSONscriptRequest('http://someurl.com/remote_file.php');     
  7.   obj.buildScriptTag(); // Build the script tag     
  8.   obj.addScriptTag(); // Execute (add) the script tag
  9. }//end addScript
  10.  
  11. function bork(data)
  12. {
  13.   var text='';
  14.  
  15.   if(data==null)
  16.     alert('error');
  17.   else
  18.   {
  19.     text='Image Title: ' + data.Image.Title + '<br />';
  20.     text+='Width: ' + data.Image.Width + '<br />';
  21.     text+='Height: ' + data.Image.Height + '<br />';
  22.     text+='Thumbnail Data: ' + data.Image.Thumbnail.Url;
  23.     text+=' (' + data.Image.Thumbnail.Width + 'x' + data.Image.Thumbnail.Height + ')<br />';
  24.   }
  25.   document.getElementById('output').innerHTML=text;
  26. }//end bork
  27. </script>
  28. <a href="#" onClick="addScript(); return false;">Click to Get Stuff</a>
  29. <div id="output"></div>
  30. </body>
  31. </html>

Thats all there is to it! Simple and slick.

Thomas Fuchs of Script.aculo.us: Ajaxian Podcast

January 9, 2006 | 1 Comment

Ajaxian has posted a podcast of their interview with Thomas Fuchs, the creator of Script.aculo.us. Ajaxian summarizes the content that is discussed:

  • How script.acuo.us was born out of a real project
  • Why Rails was chosen for Fluxiom
  • Where Rails shines with Ajax
  • The new RJS templates feature that makes Ajax even easier
  • The difference between Prototype and Script.aculo.us
  • How Script.aculo.us is available in Rails 1.0
  • Future plans for Script.aculo.us
  • When you should use the cool effects, and when you should not
  • About drag and drop and web usability
  • Challenges that Thomas has faced with his Ajax projects
  • Why you would choose an Ajax application versus using other technologies such as Flash
  • How hard it is to build a very rich Ajax application
  • How to handle browser differences
  • Experiences with DOM manipulation and innerHTML
  • How naming collisions are not as much of an issue in recent builds of Prototype

Here's two tidbits of information that I'll share with you that really stood out for me:

  • Fuchs summed up the reason for using Ajax over Flash nicely. Flash isn't for developers...(and I hold that Flash isn't very maintainable)
  • XML wrappers for objects passed from the server via Ajax is MUCH slower than simply passing JSON. It seems Zimbra has actially completely re-architected their product to utilize JSON over XML wrappers solely based on parsing performance! Regarding the use of XML wrappers, Fuchs says: "...its dog slow. Don't do it."

Its good to see someone whose work I respect have the same opinions as myself. Makes me feel like I'm doing something right.

Here's the podcast.

20 CSS Tips and Tricks

January 9, 2006 | 26 Comments

Pete Freitag as generated a list of 20 CSS Tips and Tricks. Definately some useful stuff in there!

  1. Rounded Corners
  2. Rounded Corners without images
  3. Creating a Netflix style star ratings
  4. Tableless forms
  5. Styling Lists with CSS
  6. 2 Column Layout Technique
  7. 3 Column Layout with CSS
  8. 3 Column Fixed width centered layout
  9. Printing with CSS
  10. Adding a CSS stylesheet to an RSS feed
  11. Footer Stick
  12. CSS Element Hover Effect
  13. Styling Horizontal Rules
  14. Clearing Floats
  15. CSS Popups
  16. Box Punch
  17. CSS Badge
  18. Orange RSS Buttons with pure CSS
  19. 10 CSS Tricks you may not know
  20. 10 More CSS Tricks you may not know

One of the comments on Pete's site says the following:

Technique #12 does NOT work for most browsers, since uses CSS features not implemented in most popular browsers.

Fall Out Boy

January 7, 2006 | 17 Comments

I've been checking out random videos on Google Video and came across this home-made video of a Fall Out Boy song. It had me bursting with laughter!

The System Administrator Song

January 7, 2006 | Leave a Comment

Watch this video. Its a video of one of the guys from deadtroll.com. Quality stuff...and so true!

Node Manipulation in the DOM

January 4, 2006 | 4 Comments

DOM

I've been screwing around with DOM Manipulation for a few years now, doing stuff sporadically here and there. With my development of MasterWish and my recent interest in Script.aculo.us, I often find myself forgetting the various objects, functions and attributes relating to nodes. Hence the reason for this post. I want a quick and easy way to find the information...So, here's a quick run-down of node structure:

Assuming we have the following simple structure:

<div id="outer">
    <div id="inner_1">
        Bork!
    </div>
    <div id="inner_2">
        OMG Lazerz Pew pew!1!!!1!
    </div>
    <div id="inner_3">
        <div id="super_inner">
            I like butter
        </div>
    </div>
</div>

We know the following (I completely understand the relationships between nodes...but I'm filling this out for completeness):

  • Node "outer": is the parent of nodes inner_1, inner_2, and inner_3
  • Nodes inner_1, inner_2, and inner_3: are the child nodes of outer
  • Node inner_1: is the first child node of outer
  • Node inner_3: is the last child node of outer
  • Node inner_1: is the previous sibling node of inner_2
  • Node inner_3: is the next sibling node of inner_2
  • Node super_inner: is not a child node of outer, but is a child node of inner_3

Here are the node related functions available:

property description
nodeName name of the node
nodeValue value of node (only applicable to text nodes)
nodeType type of node - see below
parentNode parent, if one exists
childNodes list (array) of child nodes
firstChild first child
lastChild last child
previousSibling previous sibling
nextSibling next sibling
attributes list of attributes of an element
ownerDocument document containing the element

Here are the node types:

number description
1 an HTML element
2 an element attribute
3 text
8 an HTML comment
9 a document
10 a document type definition