BIM – Allowing staff to change student registrations

BIM is essentially complete and about to go into user testing, however, initial testing suggests that an ability for staff to change the blog students have registered would be a significant benefit during the first couple of weeks. This post describes the design and implementation of this feature.


The aim is to allow all teaching staff should be able to modify the blog that has been registered for any of their students.

  • Add to the student details screen, for each registered student, a link “change blog” in the “live blog” – actually change it to “Current blog | Change blog”
  • The change blog is a link to a new form, essentially the same as the student register, just ask for a URL.
  • When submitted, pass it through the same checks as the student does when registering — Will need to abstract this code out into a function to use in both places.

Update the student details screen

Add the change/current blog stuff. Easy, done.

Need to identify the URL for the form….&screen=ChangeBlogRegistration

Display the form

Need to call the function to show the form for both:

  • Marker
  • Coordinator

Show the details of the student and the current blog, show a form.

All done

All done and working. Need to update some of the bread crumbs for navigation, but that is part of another task.

BIM – talking to the gradebook

One of the bigger tasks left to do is to integrate BIM with the gradebook. Some initial exploration has been done, this post seeks to document the initial implementation.

This implementation is going to be quite simple, and perhaps simple minded. The less than straight-forward nature of the task of finding information about how to do this and the reducing time available are the main reasons for the simple approach. Potentially, the simple approach might also help the academic staff driving it.

Initial design

As posts are “released” by the coordinator, the marks will be added to a column in the gradebook that matches the name of the BIM activity. i.e. this will be simple addition. In terms of scaling etc. it will be up to the teaching staff to use the gradebook features to do this.

At best there should be an option to include in the gradebook.


Add option to include results in gradebook

  • Modify the bim table with new field.
  • Modify mod_form.php to have field.
  • Modify lib.php functions to appropriately modify the database appropriately.

    TO DO: Modify add_instance to include a call to grade_update to add the item to the gradebook.

    Borrowing a lot from existing modules.

Question arises: what happens if the gradebook option is added after some results have been released? Should BIM:

  • Not allow changing.
  • Allow coordinator to “reset” gradebook for all currently released results?

Add the results

  • Modify the “release” posts function to update the gradebook.

    TO DO: If the appropriate option is set, then call grade_update to change the entry.

    Have initial code in place. Doesn’t seem to be updating correctly. Need to look at this more. Subsequent additions of marks, not summing up?

A simple testing process for this:

  • Register feeds for 3 students in the one course.
  • Allocate posts to a few questions for each.
  • As an iterative process
    • Mark one or two, check gradebook, release one or two, check gradebook, repeat
  • Repeat for another course, observe.

Initial testing of releasing 2 students with 2 of the same questions, works fine. All in gradebook as expected.

More questions/students seems to work.

Go to another course, without creating questions and register a couple of student blogs. Now, create the questions and run the bim_cron function. Yep, that works like a charm. Now back to gradebook.

Adding BIM to gradebook after initial addition is working. Can I release and add marks to it? Oops, yes, but it adds another entry!!!! Bugger. Will it do it again? Nope. and it works.

TO DO: fix the problem with an update of BIM adding Gradebook followed by release resulting in 2 columns, not one.

Problem with bugs introduced in the update_instance method. Fixed and working.

BIM – backup and restore

Just about done with development of version 1.0 of the module. A couple of important, but hopefully straight forward tasks to do. One of these is adding the ability for BIM activities to be backed up and restored. That’s the purpose of this post. The plan is to find out how it is meant to work and plan how it can be done for BIM.

At this stage, I’ve worked out the basics of how this works. I think. I haven’t implemented it, so new wrinkles may appear. Current status is to defer work on this and focus on that functionality required for immediate use. This can be added in a little while.

How it works

The Module extension development book I’ve been using is pretty poor in its treatment of backups/restores. Some existing Moodle documentation includes:

Some basic stuff gleaned from the code of some activities – incomplete

  • Moodle looks for files backuplib.php and restorelib.php
  • Data is saved in a simple XML file format.
  • backup functions (from core choice module) QUESTION Are these specific to choice or common?
    • choice_backup_mods($bf,$preferences)
      Standard, purpose is to backup everything for this module
    • choice_backup_one_mod($bf,$preferences,$choice)
      Standard, purpose is to backup just a single instance of the module based on the $choice parameter as the id
    • backup_choice_answers ($bf,$preferences,$choice)
      Standard, previous function backs up the instance data and then this one saves some contents
    • backup_choice_options ($bf,$preferences,$choice)
    • choice_check_backup_mods($course,$user_data=false,$backup_unique_code,$instances=null)
    • choice_check_backup_mods_instances($instance,$backup_unique_code)
    • choice_encode_content_links ($content,$preferences)
    • choice_ids ($course)
    • choice_answer_ids_by_course ($course)
    • choice_answer_ids_by_instance ($instanceid)
  • Need to save
    • instance data

An attempt to describe the process

  • Moodle module backup works be essentially creating a XML file that contains all the information in the database tables associated with the module.
  • It assumes a hierarchical relationships in the data.
    • All instances of the module
      • Data specific to an instance. (non-hierarchical)
      • All hierarchical data for an instance (e.g. student feeds for a bim)
        • Data specific to a single instance (e.g. feed_url)
        • All hierarchical data (e.g. posts made to the feed)
          • Data specific to a single instance (e.g. content of post)
          • All hierarhical data (…and so on)
  • The nested/hierarchical relationship with the XML produced is mirrored in the functions that exist. The first one is MODULENAME_backup_mods($bf,$preferences) which calls the next level down…
  • Two other required functions with names containing …_check_.. are used to generate some options that allow the user doing the backup to choose what to backup.
  • Another function MODULENAME_encode_content_links is a bit of a mystery. Might be to “support inter-activities linking” or “recode links to ensure they work when reimported” – NOT SURE.
    I’m assuming that this is needed because as the database ids are created by a restore, they are likely to be different to the original data. If they do change, then it will be necessary to modify some other links. There are two types I could think of:
    1. links between database tables
    2. links in URLs with fields in the tables.

    The backup stuff for chat, seems to indicate the latter

  • The functions doing the save are meant to write XML by using fwrite and XML functions like “start_tag” “end_tag” full_tag”.

The bim hierarchy

  • bim
    • Instance data: id course name intro introformat timecreated timemodified register_feed mirror_feed change_feed grade_feed ….Other standard module stuff???
    • bim_group_allocation
      • Instance data: id bim userid groupid
    • bim_questions
      • Instance data: id, bim, title, body, min_mark, max_mark
    • bim_student_feeds
      • Instance data: id, bim, userid, numentries, lastpost, blogurl, feedurl
    • bim_marking
      • Instance data: id, bim, userid, marker, question, mark, status, timepublished, timemarked, link, post, comments, title

Implementing it

Seems a fairly straight forward process in generating the backup. I’m simply copying the backuplib.php functions from the choice and forum modules. Mostly choice as it’s simpler.

NOTE: In saving the data for an element they are not saving the foreign key back to the instance of the module. i.e. each question belongs to BIM, specified by the bim->id. But the BIM id is not being saved for the question. Obviously to be populated on restore.

I am wondering how some of the large text fields – including HTML – will go.

Also how the underscores in field names in the database tables will go. Seems the Moodle model is to run the text all together – minmark instead of my min_mark.

Getting it to appear

I have an initial backuplib.php up. Have tried to do a backup on the course with a BIM and it failed due to syntax errors in backuplib.php. However, when those were fixed there were no options in the displayed backup page for BIM. Something is missing.

Maybe it is the function bim_check_backup_mods – something in backuplib.php for the module that informs the general back up what to display. Let’s try.

Actually, it appears I had a typo in one of the functions.

A bit more provision of functions and hey presto, it is working, at least the bit I’ve implemented.

Next steps

  • Writing restore functions for course data.

    Got the initial ones working. Even tested them round trip.

  • Writing the backup functions for the user data.
    • student feeds – write data
    • student feeds – display
    • marking – write data
    • marking – display
    • group allocation – write data
    • group allocation – display
  • Writing restore functions for user data.
    • group allocation
    • marking
    • student feeds

Challenges in developing innovative pedagogy in blended learning: The case of BIM

The following is the start of a process for developing a paper that I plan to submit to Moodlemoot AU 2010 based on my recent experience in developing BIM. The plan is to:

  • Write a series of blog posts based on very rough ideas for the paper (this is the first).
  • Bring those together into a presentation that will be given at CQU under the banner of LTERC and, if I can overcome some local barriers, ustream’d.
  • Use the presentation as the structure/content for the paper submission.

Papers are due to be submitted on the 22nd March.

Some of the ideas in this post were sparked or mentioned in the discussion on this post giving an unofficial update on MoodleMoot AU 2010.

Basic idea

Over the last year or so I have been working to convert BAM (Jones and Luck, 2009) – a local e-learning tool that supports the use of individual student reflective journals hosted on external blog sites – into BIM (BAM into Moodle). The aim of the paper is to reflect on this process and attempt to identify the challenges in getting BAM/BIM developed and used effectively.

Theoretically, this idea could form the basis for on-going work. This paper identifies a single persons perspective with a single innovations in a single context. Subsequent work could expand to multiple perspectives, multiple innovations and multiple contexts.

Explanation of the title

The current use of “blended learning” in the title is in part because of a current local institutional focus. It’s use here is simply indicating a mix of media and approaches (which is what people have always done) to support L&T within a university context.

However, the use of blended learning also allows some interesting points to develop around the rhetoric and current suggestions about how to implement blended learning at an organisational level. In particular, blended learning requires a focus on re-designing how learning occurs to best take advantage of the different types of media. I think that the paper may start to argue that implementing innovative blended learning pedagogies also requires a re-design of the information technology used and also a re-design of how that information technology is managed and supported.

In addition, and not to suggest the problem only sits on the IT side, there are indications that the policies and processes managing learning and teaching within universities also pose a challenge. As do the conceptions/purpose of a number of the teaching staff, especially in terms of having to respond to/handle the policies and subsequent mismatch. Problems also exist, I think on how knowledge about L&T theory is made available (i.e. staff development and curriculum design activities) and leveraged within universities.

Why is this important?

It’s still widely recognised that the vast majority of learning and teaching within universities is somewhat less than innovative and much of it less than good. There’s been a lot of efforts to improve this situation but much of it has failed – as demonstrated by the fact that much of L&T remains less than innovative, less than good.

By attempting to identify the barriers to developing innovative pedagogy the paper is aiming to identify those areas where organisations should perhaps focus their attention, rather than simply doing more of the same. Exploring the barriers in a specific case should help identify some ideas for further research that can confirm the relative importance of the barriers in other contexts.

An initial list

What follows is an initial list. I need to add more to this – please feel free to suggest barriers that you’ve experienced and eventually try and organise the list into some sort of abstraction or taxonomy.

Some of the challenges include:

  • Learning about Moodle and Moodle development;
    While there are some useful resources, especially the developers’ forums, the information here is very disparate and inconsistent (due to differences in versions). In particular, I found it difficult to get a grasp of the “Moodle” way.
  • Moving from an institution specific to general application;
    BAM was implemented specifically for CQU. It built on CQU assumptions (e.g. many courses have hundreds of students and tens of academic staff involved spread through Australia and overseas) and systems.
  • Institutional confusion
    In the period 2008-2010 CQU has undergone organisational restructures, a re-branding and name change, a buying out of a commercial partner responsible for capital city campuses, restructures around who is responsible for e-learning – the on-going battle between IT and L&T, the introduction of several new positions and committees around e-learning, the dismantling and likely “remantling” of the L&T division, the selection of a new LMS (Moodle) and the selection of a new Vice-Chancellor.
  • Institutional complexity;
    Significant percentage of courses have hundreds of students, multiple staff spread across Australia and overseas.
  • Insitutional inertia;
    Assumptions about how a course is resourced and run that are built into embedded policies such as workload calculation. e.g. part-time tutors get paid for certain activities.
  • The hierarchical de-composition of responsibilities and the subsequent lack of knowledge on which to draw upon to solve problems.
    Really effective blended learning requires a combination of knowledge including technical, pedagogical, institutional, people etc. The traditional approaches to project management and organisational structures divide these bits of knowledge into separate groups and in some cases jealously guard their area of responsibility. This prevents the development of solutions that arise from a collaborative, serendipitous mixture of the disparate bits of knowledge.
  • An environment that does not encourage innovation and experimentation in teaching and learning.
    Universities in general value research more than teaching. A complex institutional context makes it even more difficult
  • The non-existent net generation.
    There is an assumption amongst some that new students are savy social media and technology in general. The experience with BAM/BIM is the complete opposite.
  • Training mechanisms and systems that make it difficult for staff (and students) to grok how systems work.
    To use a system effectively it helps to really understand how it works. The nature of most of the training and the systems used for blended learning are such that they encourage academic staff to development a rote-learned, process focused approach to performing tasks, rather than understanding how the system works.
  • Systems/tools that are too general and don’t offer sufficient scaffolding or contextual support.
    Most of the tools within an LMS are generic – upload a document, run a discussion forum, run a quiz. To turn that into an innovative bit of pedagogy requires a lot of additional work on the part of the academic. The tool doesn’t provide much scaffolding to support particular pedagogical approaches.

    There’s good reason for this. To much support for specific approaches will make other approaches difficult, if not impossible. And the aim of an LMS is to support the broadest possible array of uses and people. But the cost is that it is more difficult to implement innovative pedagogies.

    Offering support for the local context is also part of this. Most institutions have their own names or terms that arise out of how things are done in that context. Most LMS use a generic term, usually based on the terms used by the folk who designed it. This mismatch can make it more difficult.

  • Processes that place the focus on the top-down, analytical, inductive and deductive, which are inappropriate for the nature of the problem.
    Alternatives include ateleological processes, bricolage (especially in terms of Papert – education – and Ciborra – information systems) and abductive logic.

The literature

Garrison and Kanuka, 2004

This paper (perhaps one of the “seminal works”) includes

Finally, administrative and leadership issues are addressed and the outline of an action plan to implement blended learning approaches is presented

. The trouble is that much of what it suggests creates the problems I’m talking about above. A focus on top-down, efficiencies that drive out development which is especially important in a complex and novel idea that seeks to mix two complex ideas.

Should perhaps consider the book by Garrison and Vaughan.

Klein, Noe and Wang, 2006

Looks at motivation to learn and its effect (along with other things) on student learning in a blended learning course. Perhaps some stuff here on students, especially in connection with local students.

Davis and Fill, 2007

The abstract (emphasis added)

Blended learning, the combination of traditional face-to-face teaching methods with authentic online learning activities, has the potential to transform student-learning experiences and outcomes. In spite of this advantage, university teachers often find it difficult to adopt new online techniques, in part because institutional practices are still geared to support more traditional approaches. This paper describes how a project, funded to support international collaboration to enhance learning and teaching in Geography, has allowed a university to explore models for change. It briefly examines the associated issues of sharing and repurposing resources; it reflects on the impact of the project on local strategy, and the importance of sustaining the collaborations and approaches to learning and teaching after the funding is completed.

Draffan and Rainger, 2006

From the abstract,

A model for an inclusive approach to the identification of challenges to blended learning as a means to identify educational accessibility issues is presented. By focusing on both the learner and teacher perspectives, the model encompasses a broad range of factors, including learner characteristics, learning and teaching environments, interactions and activities. The proposed model provides a starting point for the identification of challenges to learning from a socio-cultural perspective rather than a medical or rehabilitation perspective. This holistic perspective is key to moving ‘thinking’ towards a more inclusive learning approach that embraces the needs of all learners, regardless of a defined disability.

Stacey and Gerbic, 2007

Offers some useful insights into blended learning and its relationship to on-campus or distance education institutions, plus some other points to build on.



Chen, W. and C. Bonk (2008). “The use of weblogs in learning and assessment in Chinese higher education: Possilities and potential problems.” International Journal on E-Learning 7(1): 41-65. — some case study reports with similar problems.

Ducate, L. and L. Lomicka (2008). “Adventures in the blogosphere: from blog readers to blog writers.” Computer Assisted Language Learning 21(1): 9-28.

Farmer, B., A. Yue, et al. (2008). “Using blogging for higher order learning in large cohort university teaching: A case study.” Australasian Journal of Educational Technology 24(2): 123-136. – describe an adaptation of WordPress to support “class blogging”

Boldman, R., A. Cohen, et al. (2008). “Using seminar blogs to enhance student participation and learning in public health school classes.” American Journal of Public Health 98(9): 1658-1663. — seminar blogs on Blogger, better functionality than discussion forum other insights.

Hall, H. and B. Davison (2007). “Social software as support in hybrid learning environments: The value of the blog as a tool for reflective learning and peer support.” Library and Information Science Research 29(2): 163-187.

Kim, H. N. (2008). “The phenomenon of blogs and theoretical model of blog use in educational contexts.” Computers and Education 51(3): 1342-1352. – describes a model which might fit somewhat with BIM

Ladyshewsky, R. and P. Gardner (2008). “Peer assisted learning and blogging: A strategy to promote reflective practice during clinical fieldwork.” Australasian Journal of Educational Technology 24(3): 241-257.

Oravec, J. A. (2003). “Blending by blogging: weblogs in blended learning initiatives.” Learning, Media and Technology 28(2): 225-233.

Tekinarslan, E. (2008). “Blogs: A qualitative investigation into an instructor and undergraduate students’ experiences.” Australasian Journal of Educational Technology 24(4): 402-412. — mentions plagiarism, contextual issues, student perception of ease of use

WIlliams, J. and J. Jacobs (2004). “Exploring the use of blogs as learning spaces in the higher education sector.” Australasian Journal of Educational Technology 20(2): 232-247. – early intro to the application of blogging. With early case study from QUT

Blended learning

Arbaugh, J. B. (2008). “Introduction: Blended learning: Research and practice.” The Academy of Management Learning and Education 7(1): 130-131.

Davis H, Fill K (2007) Embedding blended learning in a university’s teaching culture: Experiences and reflections, British Journal of Educational Technology, 38(5): 817-828

Draffan E, Rainger P (2006) A model for the identification of challenges to blended learning, ALT-J: Research in Learning Technology, 14(1), 55-67

Garrison D, Kanuka H (2004), Blended learning: Uncovering its transformative potential in higher education, The Internet and Higher Education, 7(2): 95-105

Garrison, R. and N. Vaughn (2008). Blended learning in Higher Education: Framework, principles and guidelines. San Francisco, John Wiley & Sons.

Ginns, P. and R. Ellis (2007). “Quality in blended learning: Exploring the relationships between on-line and face-to-face teaching and learning.” The Internet and Higher Education 10(1): 53-64.

Hardy, I. (2010). “Academic architectures: academic perceptions of teaching conditions in an Australian university.” Studies in Higher Education First published on 26 February 2010 (iFirst).

Klein H, Noe R, Wang c (2006), Motivation to learn and course outcomes: The impact of delivery mode, learning goal orientation and perceived barriers and enablers, Personnel Psychology, 59(3): 665-702

Laumakis, M., C. Graham, et al. (2009). “The Sloan-C pillars and boundary objects as a framework for evaluating blended learningThe Sloan-C pillars and boundary objects as a framework for evaluating blended learning.” Journal of Asynchronous Learning Networks 13(1): 75-87.

Mortera-Gutierrez, F. (2006). “Faculty best practices using blended learning in e-learning and face-to-face instruction.” International Journal on E-Learning 5(3): 313-337.

Oliver, M. and K. Trigwell (2005). “Can ‘blended learning’ be redeemed?” E-learning and Digital Media 2(1): 17-26.

Osguthorpe, R. and C. Graham (2003). “Blended learning environments: Definitions and directions.” Quarterly Review of Distance Education 4(3): 227-233.

Stacey E, Gergic P, (2007) Teaching for blended learning – Research perspectives from on-campus and distance education students, Education and Information Technologies, 12(3): 165-174

Vaughn, N. (2007). “Perspectives on blended learning in Higher Education.” International Journal on E-Learning 6(1): 81-94.

BIM – Tidy up #4 – Getting ready for user testing

Continuing the tidying of BIM. This time the focus is on any and all steps necessary to get BIM ready to go up on a test server and have some real folk actually look and play with it. The structure of this will be based around users and actions. I’m going to do some of my own testing and then also add in anything that comes up from working with others.

This is a work in progress.

The following bullet list will list the different roles and the actions they can perform. It will contain a description of what I found/reflected upon. I’ll add any todos in line with the action/user. The users and their actions for BIM currently include:

  • Coordinator
    • Remove a bim activity
      Not what would typically be first, but I have some old test cases laying around and it was the first one I needed to. The standard editing interface will remove the bim from display. It will remove the data from mdl_bim. Can’t confirm if it will remove entries from the other bim tables.

      TO DO: Check whether removing a BIM will delete all database entries. No, it doesn’t.

      TO DO: Modify lib.php:bim_delete_instance so that it removes all evidence from the database tables. Also check if it should actually ask about backups?

    • Create new bim/Configure;
      First, let’s login as a coordinator of a course and create a new BIM activity.

      TO DO: having the newly designed icon for bim in place results in a massive icon in the configure page for a new activity. Need to reduce it. (icon is quite large – need to reduce it)

      TO DO: Need to put in place the help pages.

      TO DO: Need to put in HTML editor for “about BIM activity”. This is a problem with Safari.

      TO DO: Can the “group mode” option in common module settings be removed? Also “ID number” and “Grade category” Added features parameter to “standard_coursemodule_elements”

      TO DO: Is the “mirroring” check box in configure actually preventing mirroring? YES

    • Configure
      Once the BIM is actually created, it’s necessary to do some additional configuration that isn’t on the standard configuration screen. In particular, add questions and allocate markers.

      TO DO: Add some description/help to the page to give some indication of what the page is for and how to use it.

      TO DO: By default allocate the coordinator to all students. Is there a “all students” group? Don’t do this. Up to coordinator to have groups allocated.

      TO DO: Add a message on this screen that summarises the current configuration and is especially strong on the fact that students can’t register, or mirroring is turned off etc.

    • Manage questions

      TO DO: Add some description/help to the Manage question page to give some indication of what the page is for and how to use it. The message only shows up when there is an existing question. Not when there are no questions.

      TO DO: Able to enter question without min/max mark

      Can’t make it required on client side because sometimes there is no new question to add.

    • Allocate markers

      TO DO: Fails if there are no markers

      nvalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/moodle/mod/bim/coordinator/marker_allocation_form.php on line 34

      . Yes, works if there are actually groups. So some error checking needs to be added.

      Having a question does reduce the number of errors, but not entirely.

      TO DO: Error on moodle-training

      SELECT * FROM m_bim_group_allocation WHERE bim=1 and userid in ( 21, 55348, 3, 104903, 10749, 2 )

      * line 686 of lib/dmllib.php: call to debugging()
      * line 609 of lib/dmllib.php: call to get_recordset_sql()
      * line 930 of lib/dmllib.php: call to get_recordset_select()
      * line 157 of mod/bim/lib/groups.php: call to get_records_select()
      * line 30 of mod/bim/coordinator/allocate_markers.php: call to bim_get_all_markers_groups()
      * line 39 of mod/bim/coordinator/view.php: call to bim_allocate_markers()
      * line 97 of mod/bim/view.php: call to show_coordinator()

      Being caused by incorrect set up of bim_group_allocation table. Have fixed the XMLDBB in moodle-train, but is not taking effect. May need to reinstall after doing more fixing.

    • Manage marking

      TO DO: Show message if no marker allocation, as this means this display won’t work.

      TO DO: Fails if there are no markers


      TO DO: May also be a problem with no questions be created.

      TO DO: When a new question is added and there are no responses to it. Missing: is set to 0. When it should be all students. It’s also not a link.

      TO DO: The list of unregistered students seems to include teaching staff. Need to double check how “all students” are being got. – seems to be working as required. Students role seems to have a few strange allocations

    • Find student

      TO DO: Add the hint that a “%” will show all students, which might be useful for smaller classes

      TO DO: The “show details” link in a list of students is taking us to HRMT20019.

      TO DO: When showing table of multiple matches, sometimes the “Show Details” link goes to a page saying that the student hasn’t registered. Need to show “not registered” in the table.

    • Your students
      • View student details

        TO DO: Add in the number of students in the registered and unregistered tables.

        TO DO: May be a problem with the calculation of the time/date for Last post. 40 years since the last post on my blog?

        TO DO: Colour code the “Last post” cell.

      • View post details
      • Allocate post

        TO DO: After allocating a question the status in the form doesn’t seem to reflect the changes…..MOSTLY DONE….drop box still says unallocated but that doesn’t change operation

        TO DO: Add title of post into display.

        TO DO: Add a link for the coordinator to “process and allocate” existing posts in the database. Maybe just leave it for cron to do…but add a message on allocate to explain.

      • Mark post

        TO DO: When simply changing the allocation the post is being set to marked. Should only change the allocation. Also the drop box is keeping the value

        TO DO: Num Marked of Num Released is wrong way around. Should be released/marked.

        TO DO: Not checking that mark is within the min/max range. Can this be done on the client? It does require a number, but does not check that it is within the max/mark range – TO DO: Add a warning message if it goes above maximum.

        TO DO: Does the progress result total make use of the max mark for each questions?

        TO DO: Entering a large number is getting auto translated into 99.

        TO DO: When re-allocating a post, that is already marked, to a different question – need to check the mark.

  • Student

    TO DO: Add the configuration message to the top of this page in someway.

    • Register blog

      TO DO: Errors when registering a successful URL and just before display the details – may have been caused by there not being any questions

      TO DO: fix up the “string” for the heading.

      TO DO: add in the “about” for the bim.

      TO DO: Add in checks to prevent common “bad” URLs that are blogs.

    • View details

      TO DO: Marked questions not showing up as marked.

      TO DO: Add the message about this activity to the bottom of the page.

      TO DO: Convert the details into a table, including progress. Use the same function as for the marker bim_show_student_details, move to locallib

  • Marker
    • View student details

      TO DO: If there are no allocations for a marker, i.e. no groups. Then display a message suggesting they contact the teacher in charge.

    • View post details

      TO DO: IF there are no allocations, has a failure.

      ine 334 of mod/bim/marker/view.php: call to bim_get_marking_details()

      No longer a problem as the link to post details is no longer shown if there are 0 students.

    • Allocate post
    • Mark post

Non activities related

  • Get latest copy of SimplePie.
  • Registration of blog posts may be screwing up the lastpost time. My blog posts are being set to 0.

    TO DO: Check that lastpost in bim_student_feeds is being set correctly on registration

    TO DO: Ensure that lastpost in bim_student_feeds is being updated when processing feeds.

    TO DO: Check num_entries in bim-student_feeds is being changed at registration and mirroring.

  • use addRule numeric on appropriate values
  • Generating OPML feeds for staff? Leave till later
  • TO DO: Is timemarked being updated by the marking process.
  • TO DO: Add a timereleased to bim_marking.
  • TO DO: Get timereleased set when released.???? code is in, can’t see why it isn’t working. Might be due to database change. Will need to keep an eye on this.
  • Check cron is working.
  • Gradebook stuff. – moving to another post
  • Deleting BIMs.
  • Backing BIMs up/restoring – Leave till later
  • Check whether a student blog url, has already been registered for this bim.

New problem – instance in course_module

At the moment, it appears that the setting of the instance field in the course_module table is being corrupted in some way. Caused by the add_instance method not returning the id as it should.

BIM – Tidy up #4 – Security checks

The last tidy up of BIM resulted in some fairly major code changes as early design assumptions were over-turned in favour of more PHP/Moodle like approaches, not to mention general better design/structure. This tidy up turns to some of the more “housekeeping” types of tasks. This one seeks to ensure that BIM follows all of the security guidelines as suggested on the Moodle site

Auth and capabilities

  • require_login course is used check
  • has_capability called early. check


  • Use moodleforms wherever possible check
    There are 7 forms in BIM
    • allocation_form.php
    • coordinator/find_student_form.php
    • coordinator/marker_allocation_form.php
    • coordinator/question_form.php
    • marking_form.php
    • mod_form.php
    • ./student/register_form.php
  • setType method for each field
    • allocation_form.php check
    • coordinator/find_student_form.php check
    • coordinator/marker_allocation_form.php check
    • coordinator/question_form.php check
    • marking_form.php check
    • mod_form.php check
    • ./student/register_form.php check
  • use optional_param/required_param check
  • Clean data from external sources – RSS Feeds
    I’m using SimplePie to retrieve all the feeds. I’m assuming this does the job of cleaning. I would hope so. This will need confirmation


more information

  • Use s or p to output plain text
  • use format_string for minimal HTML
  • use format_text for all other content
  • use stripslashes on data from option_param or required_param if being outputed

There’s also the question here of some of the internationalisation stuff that I need to include.

Currently, I’m simply using “print”. Source files using print include:

  • coordinator/allocate_markers.php check
  • coordinator/find_student.php check
  • coordinator/manage_marking.php check
  • coordinator/view.php check
  • coordinator/question_form.php check
  • lib/bim_rss.php check
  • lib/locallib.php check
  • marker/view.php
  • marker/allocation_form.php check
  • marking_form.php
  • student/view.php

Adding in language support is interesting. Not a lot of examples. Having to use some arcane greps and finds to discover examples and try to deduce from there.

Log every request

Use add_to_log

The major requests for BIM are:

  • Coordinator Check
    • Configure BIM
    • Manage and change questions
    • Allocate markers
    • Manage marking
      • View students in various states
      • Release results
    • Find student
    • Your students
      • student details
      • post details
      • reallocate post
      • Mark post
  • Marker CHECK
    • student details
    • student post details
    • reallocate post
    • Mark post
  • student CHECK
    • view details
    • try to register feed

Loosing weight, nudging and changing the L&T environment – early foundations of my work

What follows is an attempt to develop some of the foundations of what is driving the work I do in my current position.

The main aim

My main aim is to help improve the quality of learning and teaching within the university I work for.

The fundamental flaw

It’s my suggestion that almost all of the current institutional attempts to improve learning and teaching suffer the same fundamental flaw. They attempt to herd cats, they focus on what management does, rather than focus on what the teachers and learners do every day and in particular the tremendous problems created by the systems within which they operate.

To be a little more concrete,

  • Senior management embark on vision statements etc. exclaiming the importance of teaching.
  • Senior management seek to identify broad-scale, one-size-fits-all solutions, e.g. we’ll have a common course template, a single system etc..
  • Institutions develop high-level policies about how courses/programs should be designed, but pay little attention to actually how these tasks are carried out leading to problems and compliance.
  • If everyone has a certificate in higher education, then they will be good teachers.

At the same time, there is ignorance of (though it’s probably a case of “don’t mention the war”) the complete and utter mismatch between the system/environment in which academic staff work and improving L&T. A few references/quotes from this post

Academic staff are trained, selected and evaluated on the discipline expertise and their ability to perform quality research. The experience and training of academic staff not only focuses on discipline and research expertise it can, and often does, socialise aspiring academics towards a vision of academic work that emphasises these tasks (Austin 2002). While universities promote the importance of teaching the create ambiguous, even contradictory expectations by rewarding academic staff primarily for research (Zellweger 2005) and creating environments where spending more time teaching is a negative influence on academic pay (Fairweather 2005).

But it’s more than that, I would argue that even if we changed the rewards aspect. For example, if a university effectively introduced a practice where good teaching staff could get promoted solely on the quality of their teaching, there would remain little change. The very nature of the system and the subsequent day to day experiences of teaching staff are blocking improvements in learning and teaching.

My point overlaps in part part with the point being made by George Siemens in this post

More than any other element, this systemic inertia is responsible for limited innovation in education.

The processes within most universities are equivalent to a group of obese people with chocolate cravings living and working in a chocolate factory. Day to day they are being exposed to influences and practices that actively work against them loosing weight.

The solutions being proposed for learning and teaching within universities are a bit like addressing the chocolate problem above by:

  • Allocating the each group of these big folk with a nutritionist that will explain to them the requirements of good nutrition.
  • Employing special expert nutritionists to come and talk to the big folk about various strategies for good nutrition.
  • Providing a single menu and exercise regime that all big folk are expected to follow.

You have to change the nature of the system so that it encourages and enables people to change what they do.

Nudging and choice architecture

I’ve been reading Nudge: Improving decisions about health, wealth and happiness for some time. A review of the book with some connections to higher education was recently posted on Tomorrow’s Professor.

The review suggests that the book is based on two key foundations:

  1. There is no such thing as neutral design.
    Whatever system, process or tool you are talking about it embodies a design. The design may not be intentional, it may be a result of unconnected decisions. The big point is, however, that the nature of that system will influence the likelihood of particular outcomes.

    Obviously this connects with the point I’m trying to make above that the design of the current teaching system within universities are more likely to result in bad outcomes, rather than good.

  2. People do not act rationally.
    Most systems, processes and policies assume that people make perfectly rational decisions. They don’t. People have numerous, well-known flaws in their abilities to make rational decisions.

The book talks about how “choice architecture” can be used to nudge people towards doing good things. The book takes an approach called “libertarian paternalism” where people are not forced to do the right thing, they are free to do what they want. However, they assume that it is okay, and in fact a good thing, to design the choice architecture in order to influence people’s behaviour. Which brings up the definition of a nudge (Thaler and Sunstein, 2008; p6)

is any aspect of the choice architecture that alters people’s behaviour in a predictable way without forbidding any options or significantly changing their economic incentives.

The centrality of the pedagogue

When it comes to improving teaching and learning a, if not the, major role is played by the individual pedagogue/teacher and what they believe. At some stage, the teacher makes a decision to improve or change their practice, or not. My argument is that the “choice architecture” inherent in universities is set up to actively discourage people to make the decision to improve their teaching and learning.

If you don’t get them to make this decision, the outcome of whatever you do will be limited.

Principles of good choice architecture

Thaler and Sunstein (2008; pp102) give six principles for good choice architecture:

  1. iNcentives;
    They suggest four questions about incentives – who uses? who chooses? who pays? who profits – and outline some examples of how naive incentive setting fails.

    For example, the question of salience or do the people making choice actually notice the incentives they face. A case could be made here between the “incentive” of teaching awards to improve learning and teaching not being noticed because of the broader incentive to do research.

  2. Understand mappings;
    A decision involves a mapping between the choice and the ultimate consumption experience. How do people making choices make rational decisions about the ultimate experience of their choice?

    One example in L&T might be the decision to try something innovative. What if people map the attempt to try something new with the possibility of failure and then censure from the “standards focused” management? Are they likely to try something innovative?

  3. Defaults;
    People will usually take the path of least resistance, they will do the easiest thing, the default. The default in L&T within higher education is passive lectures, tutorials, a couple of assignments and exam. The entire system of L&T is setup to enshrine these defaults.
  4. Give feedback;
    Thaler and Sunstein (2008; p92)

    The best way to help Humans improve their performance is to provide feedback. Well-designed systems tell people when they are doing well and when they are making mistakes.

    In my experience feedback to academics about their L&T is minimal to non-existent.

  5. Expect error;
    People will make mistakes, the system should be designed to expect this and be as forgiving as possible. I would suggest this isn’t high on the agenda in current structured, corporate approaches to teaching.
  6. Structure complex choices.
    People adopt simplifying strategies when faced with complex choices (go with the default etc.). Those simplifying strategies are often flawed in some way and directly influence outcomes.

    What assistance does the L&T system within a university provide to help academics make choices about L&T?

Using these principles

While not wishing to be exclusive about these principles, there would seem to be strong support for using these to help guide the design of changes within a university system for L&T. I’m hoping to do just this in the choice and design of projects I work upon. For example:

  • Indicators project and;
    I’m particularly interested in how this project can be used to give feedback to teaching staff about what is happening within their online courses and how this feedback can be used expect error, structure complex choices, understand mappings and develop incentives through a collaborative process of reflection.
  • bottom up curriculum mapping
    I’ve been thinking about a bottom up approach to curriculum mapping. My main interest is how to modify slightly existing practice to develop curriculum maps within a program that can give feedback to participants about the problems in a course. In addition, there are possibilities that such an approach can be used to structure complex choices – be developing “wizards” that help guide the solution to identified problems – and perhaps help change some of the defaults.
  • The old REACT idea.
    This was intended to give feedback, help structure complex choices and understand mappings, while at the same time attempting to provide some incentive.


Thaler, R. and C. Sunstein (2008). Nudge: Improving decisions about health, wealth and happiness. New York, Penguin.

BIM – Tidy up #3

Next step in tidying up is to clean up the checking, calculation and setting of the blog and feed URLs as students register their blogs.

First, fix up some problem with markers without any students.

Unregistered students

Which highlights a problem with coordinator seeing unregistered students. Add this information to the Manage Marking page.

Process is: get all student details, call the appropriate functions.

Now there is a bim_get_all_students, but it currently relies on bim_markers_students. Need to replace that.

Let’s use it first and get that bit working. Done.

Now time to replace the kludge with something that will actually get all students in a course. I’m guessing that get_users_by_capbility is the one to use here. Done.

Checking of blog URLs

One of the biggest areas for work is students who make mistakes when registering their blog. BAM does a range of tests including:

  • Can the URL actually be retrieved.
  • Does the URL include a link to RSS feed – done via auto-discovery.
  • Can the feed (any one of them) be retrieved.
  • Can the feed be parsed as XML

At the very least these checks need to be made.

Additional checks that need to be made, based one experience:

  • The feed is not the feed
    Students can choose to register something a bit too early in the blog creation process that returns the main feed from
  • They register the edit screen of WordPress e.g.

The checking is one stage, the other is how to communicate these problems back to the students.

So, checks to implement:

  • Is it even a valid URL.
  • Can the URL be retrieved
  • Can we get some auto discovery feeds
  • If not, is the URL itself a feed?
  • If there are feeds, loop through each one, and work with the first one that
    • We can retrieve
    • Is a feed
    • And doesn’t break any of the exclusions we know of

Interestingly, SimplePie makes this process much simpler in that it does much of the checking itself.

Should also look at client side checking i.e. make the form stop if the student hasn’t put in a URL. Do that later.

Testing SimplePie

So, it seems I can trust SimplePie to do this and simply check permlink/link and the subscribe link. Need to check that both URLs are gettable and that the subscribe url is actually RSS.

Simply getting a page that doesn’t have a feed, will generate an error.

So the logic appears to be:

  • Create SimplePie object with URL provided by user.
  • Any errors, crash out.
  • Compare the permalink and subscribe URLs
  • If the value passed in is not the subscribe URL, get it??? No, it looks like SimplePie automatically gets the RSS, so if it can’t it would generate an error. Will need to test that. Yes, that’s what happens

Client side validation of URL

The form for registration uses Moodles formslib which in turn is based on the Pear library which has some documentation around validation.

Client side validation is generally done (I think) with the addRule method. Pear doesn’t seem to support a URL type, but Moodle does.

That seems to have too much difficulty for now.

Processing and allocating the feed elements

The last major task is to process and allocate items in the feed. This needs to be called on an individual blog when it is first registered, but also via cron at the fixed time.

Given a single student feed, the process is:

  • Get the elements in the feed.
  • For each element in the feed
    • Check to see if there is an existing feed in the database for this item, this is based on the permalink for the item stored in bim_marking
    • If there isn’t an entry, prepare to put one in.
    • Loop through each unallocated question for this student
      • If the post seems to match the question, modify the entry for the post.
    • Insert the new entry

Implementation and a need to re-use this code for the cron job that mirrors/processes registered blogs has resulted in a bit a re-factor. bim_process_feed( $bim, $student_feed, $questions ) is up and going.

In terms of text similarity there appear to be a few in-built PHP functions that might be helpful later on. This Pear class could also be a great help.

Get and test the cron updating

Okay, the cron code has been updated with the new methods. Rather than run from cron I want to see what’s going on. So going to modify the default “config” page for a coordinator to run the cron function.

It seems to be working, but to be truly sure I need to start looking at some individual student entries and how they change. For that, I need to add the student search facility that is currently missing.

Delete a small number of entries from bim_marking for students.

Run the cron thing to see if it works. Done.

Student search facility

Coordinators need to be able to search through all students and view their details. A marker doesn’t need to do this as they have a list of all their students shown and they can simply use the browser find facility. A coordinator, theoretically, has their own students as well as a responsibility to look after all students. Hence they need to be able to enter a student number and see their details.

Implementation plan:

  • Add a “Find student” tab.
  • Implement a simple form that takes details about students (try to do something like MyCQU in terms of making it simple).
  • Display specific student details or a list of potentials to search from.
  • Use the standard “student details” function to show the details.

Done, which is now bringing us back to the question of the item titles which is problematic because of the changes in what’s being stored in the database…

Limiting use of xml files – all in database

A difference between BIM and BAM is that BIM will be storing all posts made to the student feed in the database. BAM only stored posts allocated to questions. This caused two issues:

  • The ability for markers to “unallocate” posts meant that there were some unallocated posts in the database. This starts to create a duplication/difference. Some unallocated posts are in the database, some are.
  • Feeds don’t always provide a history of all the posts. So some might be lost. Not really a problem with current use as most students didn’t make enough posts.

By making the decision to put all posts in the database, there’s a need to update some early design decisions that were made on the basis of the BAM design.

Add post title to bim_marking

Because all the posts are going into the database. Need to add the title into the database table bim_marking.