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:
- Learn about the nature of text, image, audio, video, graphic and animation files.
- Learn about capturing the various media.
- Learn about creating, editing and storing the various media.
- Learn about digitization and compression and the role they play in multimedia.
- Learn about authoring tools for packaging multimedia systems.
- Learn about web-based multimedia and the special problems involved in delivering media over the WWW.
- Learn about effective graphical user interfaces.
- 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:
- Quiz 1: Tuesday, February 21
- Quiz 2: Tuesday, March 28
- Quiz 3: Tuesday, April 18
- Quiz 4: Thursday, April 27
- 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:
|
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:
-
bork({"menu": {
-
"id": "file",
-
"value": "File",
-
"popup": {
-
"menuitem": [
-
{"value": "New", "onclick": "CreateNewDoc()"},
-
{"value": "Open", "onclick": "OpenDoc()"},
-
{"value": "Close", "onclick": "CloseDoc()"}
-
]
-
}
-
}});
Which is the same as this XML Example:
-
<menu id="file" value="File">
-
<popup>
-
<menuitem value="New" onclick="CreateNewDoc()" />
-
<menuitem value="Open" onclick="OpenDoc()" />
-
<menuitem value="Close" onclick="CloseDoc()" />
-
</popup>
-
</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
-
echo 'bork({"Image": { "Width":500, "Height":250, "Title":"Giant Cow", "Thumbnail":{"Url":"http://someurl.com/image/1234", "Height": 75, "Width": 150}}});';
-
?>
Here's the html file we want the user to see/interact with:
file: client.html
-
<script src="js/jsr_class.js" type="text/javascript"></script>
-
<script type="text/javascript">
-
function addScript()
-
{
-
var obj=new JSONscriptRequest('http://someurl.com/remote_file.php');
-
obj.buildScriptTag(); // Build the script tag
-
obj.addScriptTag(); // Execute (add) the script tag
-
}//end addScript
-
-
function bork(data)
-
{
-
var text='';
-
-
if(data==null)
-
alert('error');
-
else
-
{
-
text='Image Title: ' + data.Image.Title + '<br />';
-
text+='Width: ' + data.Image.Width + '<br />';
-
text+='Height: ' + data.Image.Height + '<br />';
-
text+='Thumbnail Data: ' + data.Image.Thumbnail.Url;
-
text+=' (' + data.Image.Thumbnail.Width + 'x' + data.Image.Thumbnail.Height + ')<br />';
-
}
-
document.getElementById('output').innerHTML=text;
-
}//end bork
-
</script>
-
<a href="#" onClick="addScript(); return false;">Click to Get Stuff</a>
-
<div id="output"></div>
-
</body>
-
</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.
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!
- Rounded Corners
- Rounded Corners without images
- Creating a Netflix style star ratings
- Tableless forms
- Styling Lists with CSS
- 2 Column Layout Technique
- 3 Column Layout with CSS
- 3 Column Fixed width centered layout
- Printing with CSS
- Adding a CSS stylesheet to an RSS feed
- Footer Stick
- CSS Element Hover Effect
- Styling Horizontal Rules
- Clearing Floats
- CSS Popups
- Box Punch
- CSS Badge
- Orange RSS Buttons with pure CSS
- 10 CSS Tricks you may not know
- 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
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 |


