Thursday, October 22, 2009

Is Formal E-Learning Dead or Alive?

I just attended the BYOL conference at the University of Utah in SLC. At the conference, there was a panel discussion that talked about Rapid E-Learning Development. I asked the question if eLearning is Dead or Not? I referred to a Webinar done by John Bersin entitled Metrics for the Modern CLO put on by Chief Learning Officer Magazine. http://www.mediatecpublishing.com/uploads/2009/Oct/metricsforthemodernclo14.pdf This webinar wasn't so much about metrics and more about the state of learning today and where it is headed in the future. He talked a lot about informal learning and how learning is moving to a more collaborative and dynamic structure. In one part of his presentation he talked about the evolution of learning and how formal e-learning and LMS's will be replaced informal learning and learning portals.

Mark Lassoff recently wrote a blog posting about the current state of eLearning. http://learntoprogram.tv/2009/10/a-few-lessons-learned-about-elearning/
I agree with everything that Mark said in this post. I consider myself an eLearning developer (I have a masters in Instructional Technology) and have been frustrated as well with the typical formal elearning that consists of a slide of text and maybe some basic interactivity and a multiple choice quiz at the end. If a classroom training session were like a elearning course, it would consist of everyone in the class in soundproof booths where they could only see the powerpoint on the screen, the students wouldn't be able to ask questions, and the instructor would only know if anyone understood the course until after the course was done. That is just sad... Learning comes from interaction, asking questions, applying knowledge and receiving feedback among other things.

However, I think there is hope for formal e-Learning. The first few generations of movies looked a lot like stage plays because of the mindset and the limitations of the technology. I believe it wasn't until movies started using more than one camera and realized the possibilities of editing and the many possibilities of storytelling that we see in todays movies. I believe today's limitations with elearning includes the use of LMSs that limit functionality and how much data you can store using SCORM. (There are hundreds of LMS vendors, that tells me that no one has found a right answer yet.) Because of these limitations to the standard asynchronous LMS distributed elearning course, information really is only communicated one way, from the screen to the learner. There is really no opportunity for customized feedback for the learner from the instructor, or for the student to know what other students think about a particular topic or concept. What if you created a course using Flash or Flex or some other tool that still presented a course in a logical step by step format, but allowed the learner to comment on the content on the same slide that it is presented and ask questions about the content and have that information saved and made available to everyone who takes the course. Notifications could be sent out and then people could return to the course, view what other people had asked and collaborate. This could potentially be better than a classroom training in some ways because more knowledge could be shared and more participants could have their questions answered.

One promising concept is that of LearningComponents.com they have built a structure using Flex that does an excellent job at giving feedback for each step of the learning process, and for real time collaboration. The drawback with their approach is that it works best when people are taking the class at the same time, and when you want to script out every step in a learning process. This seems hard to do for most training.

What do you think? Is there hope for formal eLearning or are we just going to search the internet in the future when we want to learn anything?

Saturday, August 29, 2009

Creating a Online Book, using EXCEL, XML and Flash

In preparation for the BYOL eLearning Conference, I wanted to create a series of blog postings that highlighted some of the things I will talk about in my presentation on creating simulations and quizzes in Flash using XML.

See conference information here.
http://elearning.byol.com/

Traditionally, if you were to make a simulation that you didn't need to reuse, you would hard code it Flash using the timeline or MovieClips. The problem with creating a simulation this way is that if you want to reuse your code you will have to create the whole simulation over again, and to make changes to your simulation would require a lot of work. The problem I find with Quizzes is that there are a lot of tools out there that help you build quizzes but don't let you customize the look and feel to your liking.
So, basically this is trying to recreate what they have already created. There are pros and cons to creating a custom simulation or quiz but it is sure fun to do.

I first wanted to show how easy it is to use Excel 2007 to create XML documents.
Excel works great for populating a XML document because it feels like you are editing a spreadsheet or a database, you can copy and paste items and you don't have to create start and end tags for each time that you put in some text.

There are some downsides to using Excel as you can only create one level instead of having XML nodes nested inside of other XML nodes. They call this a recursive structure, which works great for creating a Menu, but Excel has trouble doing that kind of structure. There are ways around that though.

In this example, you will learn how to create an simple online book, using Flash, Excel and XML.

First we need to create our XML structure.

Open a code editor such as Dreamweaver and paste in the following code.


<?xml version="1.0" encoding="UTF-8"?>
<Book>
<Title></Title>
<Pages>
<Page>
<Text></Text>
</Page>
<Page>
<Text></Text>
</Page>
</Pages>
</Book>

For sake of simplicity we are just going to create a title for the book and pages using XML.To make sure that Excel knows that there will be more than one page we have to put at least two into our structure.
Save your XML Document.
Open Excel 2007.
Note: You can do this with Excel 2003 but the process is a little different.
To use the XML in Excel you need to have the Developer ribbon enabled.
To do this, click on the Microsoft Office Icon in the top left corner.
Select Excel Options
In the popular tab make sure that Show Developer tab in Ribbon is selected.
Click OK.
Next, click Open from the main menu.
Open the xml file that you saved previously.
When the Open XML pop-up appears select the third option "Use the XML Source task pane. "











An XML Source box should open in the right side of the window.Drag the Title node to the B column.A little box should pop up next to it, click on the option to place the title to the left.This node is a non-repeating element. Next, drag the Page element to the D column. You will notice that this only shows the Text Node, this is because this is the only one that is editable in the Page. We could add other tags such as a page number or chapter number, but Text is enough for right now.

After you have finished mapping the cells. Fill in the spreadsheet. I chose the Count of Monte Cristo because it is in the public domain and can be found at the Gutenberg Project.http://www.gutenberg.org

















Save the file.
Click inside a mapped cell.
Select the Developer ribbon and click Export.
Save the XML file to the same folder where you will create your Flash File.
After you have saved the .xml file go ahead and open it.
You should have something similar to what is found below.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Title>THE COUNT OF MONTE CRISTO</Title>
<Pages>
<Page>
<Text>On the 24th of February, 1815, the look-out at Notre-Dame de la Garde signalled the three-master, the Pharaon from Smyrna, Trieste, and Naples.</Text>
</Page>
<Page>
<Text>As usual, a pilot put off immediately, and rounding the Chateau d'If, got on board the vessel between Cape Morgion and Rion island.</Text>
</Page>
<Page>
<Text>Immediately, and according to custom, the ramparts of Fort Saint-Jean were covered with spectators; it is always an event at Marseilles for a ship to come into port, especially when this ship, like the Pharaon, has been built, rigged, and laden at the old Phocee docks, and belongs to an owner of the city.</Text>
</Page>
</Pages>
</Book>

It would have taken more time to type out all of the XML tags if we hadn't used Excel.However, you are somewhat limited to what you can do with Excel and XML(i.e. recursive structures) , so I would recommend using Excel only when you have to collaborate with someone else, or you know that you will have a large Excel document.
Create a Flash File using Actionscript 3.0.It should have a dynamic text box for your page text, another dynamic text box for your page numbers and then a back and next button.Your final example could look something like this.


















First, we need to load in the XML.

      var bookXML:XML;

      var xmlLoader:URLLoader = new URLLoader();

      xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

      xmlLoader.load(new URLRequest("Count.xml"));

      function xmlLoaded(e:Event):void {

      bookXML = new XML(e.target.data);

      trace(bookXML);

      }


We need to now load the text for each of the pages.We will do this by creating a function that will load the page text and page number text.We will create a load page function that will ask for the current page number.


      function xmlLoaded(e:Event):void {

      bookXML = new XML(e.target.data);

      trace(bookXML);

      loadPage(0);

      }

      function loadPage(pNum:int):void {

      page_txt.text = bookXML.Pages.Page[pNum].Text;

      }

When you reference an XML structure the Root node or our case becomes bookXML. That is why we start with Pages. Each dot (".") represents another level in the XML. This could also be written, bookXML..Page[pNum].Text. Using the two dots allows you to reference all of the Page tags. Test your project to make sure that your text appears correctly.
Next, we need to create a way to go forward and backward through each page.We will do this by creating a currentPage variable and a totalPages variable to help us know where we are in the book.
Place the following variables before the xmlLoaded functions.


      var currentPage:int = 0;

      var totalPages:int;

      function xmlLoaded(e:Event):void {

      bookXML = new XML(e.target.data);

      totalPages = bookXML..Page.length();

      trace(totalPages);

      loadPage(currentPage);

      next_btn.addEventListener(MouseEvent.CLICK, nextPage);

      back_btn.addEventListener(MouseEvent.CLICK, backPage);

      }


Instead of loading Page 0, which is the first page.We will reference the current pages variable.We use the .. Syntax to reference all the pages in the XML.Remember that with XML you must use length() with parenthesis, and not .length.As you use with Arrays.Next we added event listeners to the next and back buttons.

    Next, we will modify the loadPage function.

      function loadPage(pNum:int):void {

      page_txt.text = bookXML.Pages.Page[pNum].Text;

      currentPage = pNum;

      pageNum_txt.text = (currentPage+1) + " / " + totalPages

      }


Whenever there is a change in the page number we will update the currentPage variable. Also, we will send the page number text to the Page Number text box.Remember, that XML starts with Zero so every time that is why we have to add 1 to the currentPage variable.

    Next, we will create our nextPage and backPage button functions.


      function nextPage(e:MouseEvent):void {

      if(currentPage <>

      currentPage++

      loadPage(currentPage);

      }

      }

      function backPage(e:MouseEvent):void {

      if(currentPage > 0){

      currentPage--

      loadPage(currentPage);

      }

      }


On the nextPage function, we have to decrease the totalPages by 1 because it starts counting at 1 where XML starts counting at 0.We do this here so that we don't have to change it in the PageNumber text.However, you could choose where you want to do this.Just be aware that errors will popup if you don't have the correct number.

    Here is the finished script.


      var bookXML:XML;

      var xmlLoader:URLLoader = new URLLoader();

      xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

      xmlLoader.load(new URLRequest("Count.xml"));


      var currentPage:int = 0;

      var totalPages:int;


      function xmlLoaded(e:Event):void {

      bookXML = new XML(e.target.data);

      trace(bookXML);

      totalPages = bookXML..Page.length();

      trace(totalPages);

      loadPage(currentPage);

      next_btn.addEventListener(MouseEvent.CLICK, nextPage);

      back_btn.addEventListener(MouseEvent.CLICK, backPage);

      }

      function loadPage(pNum:int):void {

      page_txt.text = bookXML.Pages.Page[pNum].Text;

      currentPage = pNum;

      pageNum_txt.text = (currentPage+1) + " / " + totalPages

      }

      function nextPage(e:MouseEvent):void {

      if(currentPage <>

      currentPage++

      loadPage(currentPage);

      }

      }

      function backPage(e:MouseEvent):void {

      if(currentPage > 0){

      currentPage--

      loadPage(currentPage);

      }

      }


In the next tutorial, I will show how to create a Quiz using EXCEL, XML and Flash, which will build on the concepts learned in this tutorial.

Friday, June 19, 2009

Using iPods to teach Cello

I teach cello lessons on the side. I do it because I love it. My job by day is to train employees how to do their jobs better. Sometimes, what I read or think about during my daily work kind of sparks ideas of how to motivate and get my cello students to perform better. I specifically deal alot with using technology to help people learn and how to we can support better performance.

I attended a conference session at eLearning DevCon 2009 by Thor Anderson of UVU where he talked about the importance of giving feedback to students in real time and that they crave this feedback to make sure they learning correctly. He has an excellent example teaching HTML using learning components that he built in Adobe Flex. Check out his great work at https://www.learningcomponents.com

Anyways, this concept of feedback got me thinking about how I can use technology to help my cello students to learn better. Especially to have good intonation.

Here is the idea that came to me while I was teaching a lesson.
  • Have the student use an iPod while they are practicing to listen what the song should sound like.
  • Record a slow, medium and fast version of the solo line of each song.
  • Record a slow, medium and fast version of the cello accompaniment for each song
  • Record a slow, medium and fast version of the piano accompaniment for each song.
While it would take quite a bit of work for all the suzuki books, this would be really helpful for students in the first two and maybe three suzuki books. The student could then listen to the accompaniment or the solo line and play along. While this may seem like a lot of work, I think it could help students. Maybe you add another version that has changing dynamics.

What do you think? What ways do you use technology in your music teaching?

Tuesday, August 19, 2008

return e-learning;

Here is my new blog that I just decided to start writing. It will talk about my adventures in using Flash, Flex and other web technologies to enhance and engage learners. For those who don't know when you return a function in a program like Flex or Flash it looks something like this. ;)

public function instructionalDesign(boringCourse:Learning):AwesomeCourse {
e-learning = objectives + goals + greatInstruction + realWorldProblems;
return e-learning;
}

While this is a contrived example based on a function in Actionscript, it highlights my goal that through technology we can make elearning and rich and fulfilling experience for those that take the course. (probably because I had to explain that title that much it might not be the best.)

I have been here at 360 | Flex and have really enjoyed it. My brain is fried but I like to think that I am learning a few things. I am currently trying to create a swf xml course loader in Flex to replace the course loaders that we are currently doing in Flash. From what I have learned at this conference, I almost think that I should wait until the new version of Flex comes out. It will give a lot better options to modify the design of a shell. But oh well, maybe by then I will actually figure it out.

If you use flex or Flash to develop e-learning I would like to hear from you, with your experiences.

I will try to post code, examples and if I am really ambitious tutorials of how to do things that I have learned. If I ever figure out how to implement AICC with a Flash course I will be sure to pass that on, and feel that I am contributing something to the world.