1 / 24

Cloud Formations for Curriculum Transformation

Cloud Formations for Curriculum Transformation. Tech-read “Mashing up Services for Students”. Alex Lee & Steve Nisbet, Learning & Research Technology. MMU http://lrt.mmu.ac.uk. Why change what we do?. National Student Survey - we’ve actually asked students what they think

darren
Télécharger la présentation

Cloud Formations for Curriculum Transformation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cloud Formations for Curriculum Transformation Tech-read “Mashing up Services for Students” Alex Lee & Steve Nisbet, Learning & Research Technology. MMU http://lrt.mmu.ac.uk

  2. Why change what we do? • National Student Survey - we’ve actually asked students what they think • Lots of things they don’t like • They Do like the IT (certainly @ MMU in the main), more tech savvy? • Some Unsurprising results perhaps – • Don’t make me think • Do give me what I want • I want it now!

  3. EQAL • EQAL – Complete review of teaching, support and administration of the University. Awareness of the need for change and new tools

  4. Considerations for a solution • Students require (recurring themes): • Immediacy • Personalisation • Simplicity and ease in finding the information they want • A core set of vital information to help them study and take part in their course • Research from Initial developments, lessons learned • Student Portal • Background services for WebCT (alex?) • Identification of needs, software and partners • What do students actually need? • Who /what can best provide (sometimes – choice is limited) the information • How can we tap into the software solutions to provide immediacy, personalisation in a seamless manner, simple for the student?

  5. This work is licensed under a Attribution-NonCommercial-ShareAlike 2.0 licence Core distributed VLE architecture news, events assessments, enrolments Exam papers, digitized materials Learning Objects resource lists timetables news, events moodle.mmu.ac.uk email, storage

  6. This work is licensed under a Attribution-NonCommercial-ShareAlike 2.0 licence Consistent mashups for every Unit Unit Code MMU ID Unit Area Timetable Unit Code MMU ID Hand-ins & marks Unit Code Podcasts Unit Code Reading Lists provisioning Unit Code Past Papers Scanned articles On/off-campus media Unit Code MMU ID Enrolments

  7. The key Problems then… • How do we mash it all up? • Systems often incompatible with each other • Corporate buy-in (we need that data) • Common enforced tags (student id,unit_id) • Get around the incompatibilities • XML as a transit • SSO (permissions, authorization and so on)

  8. Services model • Separate service oriented support platform • Eases the load on the mainline platform • Aggregates many different and occasionally incompatible database driven systems and delivers a standard output of XML based information for consuming blocks/plugins on the mainline • Portable data - isolated from major platform changes (should still work fine in Moodle 2 – doesn’t rely on schema changes Etc.) • standard architecture (render anything not quite standard) • Can be used to deliver to other platforms (W2C Widgets -> phones, CMS etc) • Clear set of logs and statistics – better measurement of use • DR / resiliency potentially easier, but requires excellent network connections and hosting (shameless ULCC plug folks!)

  9. This work is licensed under a Attribution-NonCommercial-ShareAlike 2.0 licence Service-oriented architecture getMoodleAreas getMoodleAnnouncements getMoodleEvents getEvents getResourcesgetEnrolments getAssessments getCurriculumDetails getFeeStatus REST REST SOAP apis.mmu REST Podcast Producer REST SOAP REST

  10. This work is licensed under a Attribution-NonCommercial-ShareAlike 2.0 licence getResources web service Lists tagged with Unit code REST Individual items extracted from RDF & XHTML getResources called with: moodleauth usermoodle course id (unit code)datetime stampsecurity token Custom block + To buy (3) Uploads tagged with Unit code + Essential (8) apis.mmu + Further (12) SOAP REST + Podcasts (4) Web-service searchby Unit returns matching items + Exam papers (4) Search by Unit codereturns RSS feedof matching podcasts getResources returns:Atom feed with SSO item links(item provenance maintained in source element) Podcast Producer REST Podcasts tagged with Unit code

  11. PC Availability Web Service

  12. Rest Web Service Overview • Can be accessed over http in a browser • Allows focus on data! • Very quick to develop • Quick development time means innovation can happen quickly • MMU web services output data in XML, RSS, and Atom • Turns inconsistent formats into standard compliant formats • Access data around firewalls and across networks – access anywhere

  13. REST Web Service Overview • Can develop in a variety of languages – MMU use C# • Strict syntax – good for critical services • What version of .NET? • Cool software or addons: • Use SoapUI to check SOAP services to consume in .NET! • LinqPad • PasteXML as XElement

  14. Consuming RSS in Moodle Block require_once($CFG->libdir .'/rsslib.php'); require_once(MAGPIE_DIR .'rss_fetch.inc'); if (!defined('MAGPIE_OUTPUT_ENCODING')) { define('MAGPIE_OUTPUT_ENCODING', 'utf-8'); // see bug 3107 } ob_start(); $rss = fetch_rss(‘http://apis.mmu.ac.uk/Service1.svc/getResources?’. ‘getResources?person=' . $USER->id . '&unit=' . $COURSE->shortname); $rsserror = ob_get_contents(); ob_end_clean(); if ($rss === false) { //handle error } foreach ($rss->items as $item) { //process the RSS! } Personalised! Tagged!

  15. Results & Stats • In 227 days the web services have had 6,445,204 hits • getWebCTAreas 2,426,383 • getWebCTAnnouncements 1,600,768 • getFeeStatus 768,057 • getPCAvailability 306,403 This is only by widgets and My Mobile does not count My MMU getFeeEmail 3,506 (i.e. number of students who have requested full details)

  16. Useful Links • lrt.mmu.ac.uk/ • /w2c = W2C widget developments • /staff-blogs • LRT on twitter • twitter.com/MMULRT/lrtstaff

  17. Questions?

  18. Creating a REST Web Service in VS2008 • Create a new project in Visual Studio with WCF Service Application Template • Edit the config.xml file • Delete the <service> and <servicebehavoiur> nodes • Add the following code:

  19. <service name="uk.ac.mmu.Service1" behaviorConfiguration="uk.ac.mmu.Service1Behavior">        <endpoint address="" binding="wsHttpBinding" contract="uk.ac.mmu.IService1">         </endpoint>        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <endpointBehaviors> <behavior name="webHttp"> <webHttp/> </behavior> </serviceBehaviors> </endpointBehaviors>

  20. Create the Interface Edit Iservice.cs using System.ServiceModel.Web; [OperationContract, WebGet(UriTemplate = "getResources?person={user}&unit={unit}", ResponseFormat = WebMessageFormat.Xml)] Rss20FeedFormatter GetResourcesRss( string user, string unit);

  21. Reading XML – Simple Way string token = GetMD5Hash(developer + date + sharedsecret); egXml.Load('Service1.svc/getResources?person=' + person + 'unit=' + unit + 'developer=' + dev + 'dtm=' + date + 'token=' + token); nsm.AddNamespace("mmu", "http://apis.mmu.ac.uk/"); XmlNodeListxnList = homeAreaXml.SelectNodes("//entry"); foreach (XmlNodexn in xnList) { //do something! }

  22. Reading XML or RSS – The LINQ Way var items = from item in feed.Items where true orderbyitem.LastUpdatedTime.Date descending select item; foreach (SyndicationItem item in items) { //do something! }

  23. Outputting RSS SyndicationFeedresourcesFeed = new SyndicationFeed( "Resources for " + unit, "", null); Collection<SyndicationItem> items = new Collection<SyndicationItem>(); item = new SyndicationItem( title1 , description1, new Uri(buyItemsFeed) ); items.Add(item); item = new SyndicationItem( title2 , description2, new Uri(essentialItemsFeed) ); items.Add(item); resourcesFeed.Items = items; //choose between outputting as RSS or Atom Rss20FeedFormatter rss = new Rss20FeedFormatter(feed); return rss;

More Related