BIM – the show student posts screen

This post describes the initial implementation of show student posts screen. IT builds on the format/process used in the show student details screen.

Required data

There should be some similarity with the show student details screen. The first three match.

  • Which students the marker is responsible for.
  • User details for those students.
  • Student details from student feeds
  • Split students into registered and unregistered.
  • Student details from bim_marking.
  • List of questions for the bim.

Implementation questions

  • Main question appears to be how to call this screen.
    Probably need an additional parameter to specify which of the operations that the teacher can call: ShowPostsDetails AllocatePosts MarkPost.

    Yep, that seems to work. Using screen as the parameter. If empty, defaults to show student details.

  • There's also the question of including both bimId and courseId in the view.php for bim.
    Currently it is only including the course id. This means that a course can only have one BIM. A limitation.
    Actually, this is an example of my limited, but hopefully growing, knowledge of Moodle. The id passed in is for the course_module table which holds information about the combination of course and activity/module. So this is not a worry.

Get the data

The first four points from above are duplicated from the show student details screen. Easy.

List of questions - uses existing bim_get_question_hash.

Student details from bim_marking. Given a list of student ids (from $registered) get the appropriate details. Very similar to bim_get_feed_details. So create bim_get_marking_details

Show the data

This should be very similar to show student details. Simply showing some additional fields in the table. Tasks are

  • Show the unregistered students first. Done
    This is intended to be annoying so as to encourage the markers to get the students registered. Of course, this may back fire for students who have stopped the course early.
  • Show the registered students.Done
    Bit of work, but is going. Have to look at the sorting of columns in flexible_table. Actually, that's down to the test data. Will leave it for now.

What's left to do

Tasks left to do on this screen and subsequent screens include:

  • General improvement in look and feel.
  • The sorting isn't working as expected. flexible_table not quite set up properly yet. This will effect the details screen as well.
  • The tab interface for details/posts screens needs to be set up.
    Some initial attempts have proven to be somewhat less than successful.
  • There are now links to the AllocatePosts screen - but it's not working.
    Function in place, but just displays message.
  • There are now links to the MarkPost screen - but it's not working.
    Function in place, but just displays message.
  • Question of sorting on the question columns (by mark, submit and not submit)
  • The # of functions per screen is getting quite large, getting to the stage of needing to break it out into support libraries.

BIM – Staff show details screen

This post documents the creation/completion of the BIM show details screen. This is used by staff to get a summary of their student details, whether they have registered their feed, made posts etc.

The BIM design will be based on the equivalent BAM screen with some slight modifications. For example, I don’t believe Moodle will have the equivalent of the Webfuse “Photo Gallery” or “email merge” facilities.

The post is starting to evolve into a semi-standard structure that I think I’ll use with the other screens. Will see how that goes. The structure at the moment is:

  • Identify all the data required for the screen.
  • Specify any questions about the implementation I have.
  • Document what I did to get the data.
  • Document what I did to get it showing in the browser.

Data that is required

To implement this screen, the code will need to retrieve the following data

  • The list of students who the staff member is responsible for marking.
  • User details about the staff member (name etc).
  • User details about the students.
  • Information for the students from bim_student_feeds
  • Identify which of the marker’s students haven’t registered their feeds.


  • Staff (not course coordinator) have two main screens for BIM: show details and show posts. Should I implement these as tabs? Probably yes
    The coordinator will have an additional screen to configure the BIM activity, this could be represented using an additional tab.
  • Does the coordinator/teacher/student switch in view.php work with the test data?
    It seemed to work before. If I’m going to write this screen, I need to login to Moodle as a teacher, but not coordinator. It works as expected. Little wins are good wins – well they are better than loses.

Get the data

Basically this should document the points identified in the data section above.

Staff members students

Need to know which students the staff member is responsible for marking.

For the purposes of testing this is being held in the table bim_markers_students because I’m uncertain how the local Moodle instance will populate this information. Eventually, I’m assuming it will be part of the groups features. I can update the code then.

Rather than separate out getting the list of student usernames and then their details. Let’s combine all this into the one function bim_get_markers_students( $bim, $userid)

Ahh, but of course, I’ve created the table markers_students using the course, not the BIM. As this was how BAM worked (sort of). This means $bim will need to, in the short term, be replaced with the course id.

DONE: currently returns an array of user details for all the markers’ students with the key being Moodle user id.

User details for markers

This is a quite straight forward use of Moodle database API.

Student information from bim_student_feeds

Need to take the student ids from the array above and get the information for the students from bim_student_feeds.

$student_ids = array_keys( $student_details );
$feed_details = bim_get_feed_details( $bim, $student_ids );

Identify which students haven’t registered

This is essentially find all those students in $student_details that don’t have an entry in $feed_details. The question is, does PHP have some in-built functions that might help with this? A simple for loop and an ‘exist’ function could do this. Do I worry about going further?

This page suggests that the function array_diff_key() might be what I’m looking for.

However, the trouble is that bim_get_feed_details is returning an array with keys being the feed id, not the student id. Need to update that.

That’s working.

Get it producing in the browser

Time to get it working in the browser.

Will leave the question of the tabbed interface until the next bit of work. Will focus on getting this screen working. There are going to be two main sections to this screen:

  1. Registered feeds.
  2. Unregistered.

The course description section that is in the BAM version of this screen can be forgotten, I believe, as BIM is working within the course Moodle site.

This is essentially showing a bunch of data in a table. Can do this in for loops, but surely there’s a quicker way in Moodle. Seems I need to dig into weblib.php again. Of course, print_table. Will need to manipulate the data to use it.

That’s working, at a basic level. More work to be done includes:

  • Look at alternating row colours to improve layout/appearance.
  • Figure out how to display the date/time properly, in this case number of days ago.
  • Add in the red/green/yellow for the cases where the last post was a while ago.
  • Modify URL for live blog to some HTML.
  • Left align the headers.
  • Left align the other numeric columns.
  • Add the ability to sort by columns.

I now learn about tablelib.php that specifies a flexible_table class.

Current status

Have got flexible_table working somewhat. The sorting isn’t working appropriately, the display of columns etc needs some work, but the data is being displayed.

Doing a similar thing with the show posts screen should be fairly simple and somewhat similar. Probably pay for the next step to be to finish these screen and get the tabs working, before duplication for show posts.

Time to go home on Xmas eve.

BIM – minor fixes to show student details

This post follows on from the last post in doing some minor improvements to the show student details screen in BIM. This includes:

  • Link between the question ID and the question name
  • Double check the display of the “All posts”.
  • Add in the link to posts for Marked Answers.
  • Re-do the interface to be Moodle like.

Question ID and question name

In a couple of places on the screen there is a need to take the question id and return the question title. Basic solution is:

  • Create a hash with question id as key and title as value (possibly with other things).
    bim_get_question_hash( $bim ) seems like the go.
  • Use the hash in the appropriate places.

Done and working nicely. The link for posts is also done. The all posts is working as currently designed. This means, apart from look and feel, this screen is essentially working.

Make it Moodle

Moodle has a particular style/approach to HTML/look and feel. At this point in time, I haven’t used it for this screen. Time to start doing it.

Where I’m up to

Did a bunch of work on the view student details screen, tidied up a bunch of stuff. Still not happy with the look, but will leave that till later. Time to move onto some of the staff screens.

A screen dump of the screen is available on Flickr. It’s based on real data so identifying information has been blurred out. But you get the idea, boring, ugly. Needs to be better.

Herding cats and losing weight: the vimeo video

This is in part a test of’s new support for Vimeo video. The video below is of a presentation I gave at CQU this year. The abstract is below. The slides are on slideshare.


The environment within which Universities operate has changed significantly over recent years. Two of the biggest changes have been a reduction in state funding for universities and, at the same time, an increased need for universities to demonstrate the quality and appropriateness of their services, especially learning and teaching.

Consequently, most universities have developed a range of strategies, policies, structures and systems with the intent of improving and demonstrating the quality of their learning and teaching. This presentation will draw on the metaphors of herding cats and losing weight to examine the underlying assumptions of these attempts, the resulting outcomes, question whether or not they are the best we can hope for, and present some alternatives.

The video

Shaking up e-learning “design” – little help?

This is a plea for pointers, suggestions and direct assistance.

It arises from the confluence of at least three separate threads over the last couple of days:

  1. Some talk on Cloudworks about motivating teachers to use technologies;
  2. A blog post and associated presentation about bringing aspects of game design to boring tasks; and
  3. My current task on developing BIM, particularly the interface.

The premise

It’s moderately difficult to motivate students and staff to engage with e-learning technology. Most e-learning technology has boring, if not actively complex and disheartening, interfaces. Insights from game design and other areas offer an opportunity to make some improvements which may in turn help make it more likely for people to use and enjoy e-learning technology.

The difficulty

Most e-learning technology is designed by techno-nerds (e.g. myself). Most nerds suck at interface/experience design.

My current designs for BIM illustrate this quite effectively. But then so do most of the interface/experience designs that I see with Moodle activities/modules. Let’s not get started on some of the commercial LMS/VLEs.

One of the reasons BIM is designed to allow students to use external blogs (like WordPress) is that the interface/experience design is just so much better.

The desire

There’s a definite experience gap between the students/staff using an external blog service like WordPress and then having to come back to occasionally use BAM/BIM. It would be great to try and make the design of BIM engaging, different, fun, interesting….More like and vimeo, perhaps even better.

The first iteration won’t achieve this goal. Timelines too short. But playing with re-designs that draw on these principles would be an interesting, and hopefully fun, little project.

Little help?

Given that I currently suck at this type of interface/experience design, I need a little help in the shape of books, blogs, websites, interested folk and general advice on what principles might guide such a project.

Please make suggestions below. Feel free to volunteer.

Resources I’m already aware of:

BIM – cron and view student details screen

In the last bit of BIM work I’d successfully created some test data and laid out some rough plans for what is next.

The aim of this post is to document the bit of work done on the show details screen up and going. The initial work on the screen was documented here. This post draws on the test data, adds some support functions to manipulate it and improves the screen.

Should be fairly simple.

What’s to be done – testing the test data

First, things first. There’s an error when I view a BIM as the old student I was using for testing. Perhaps it is time to test out one of the new students.

Choose one of the students enrolled in one of the courses, use the dummy password and we’re away. Get into the course, click on the bim activity and get an “error getting feed for” error.

This error comes about because the feeds aren’t getting automatically updated/mirrored yet. So the attempt to look at the local RSS file fails.

At this stage, I could probably kludge this up and/or write the section of BIM that should do the updating – i.e. run from cron. That’s what we’ll do.

Moodle, activity modules and cron

So now begins the trawl through the Moodle resources to find out how to run/define cron activity from an activity.

The version.php file in each activity defines a cron value, which appears to identify how regularly to do something. The question is what?

This appears to be answered here with the details being that this value specifies how regularly (in seconds) to run the modulename_cron method defined in the lib.php file.

What to do?

The bim_cron function basically has to check all the current bim activities that are being mirrored, for all registered student feeds, it has to attempt to do a mirror on the feed URL and the copy of the feed on disk. Some pseudo-code

$mirrored = get_mirrored_bims()
foreach ( $mirrored as $bim )
  $students = get_registered_feeds( $bim );
  foreach ( $students as $student )
    mirror the feed;

One of the problems in writing this is the testing of the code for the above. Running from cron complicates the testing, so I’m going to run it from the show student details screen while under development.

Most of that is all working. Just working on the question of doing the mirroring process.


Looking into this has led me down the path of using the SimplePie caching mechanism for maintaining the local versions of the RSS files, rather than the original method. This has resulted in a few other changes in how the rss is retrieved, but it’s all working.

As a result some of the necessary changes to the show details screen happen automatically.

What’s next

Some minor tasks related to the show details screen to do:

  • Do something about the link between the question ID and the question name in both Marked answers and All posts sections.
  • Double check the display of the “All posts”.
  • Add in the link to posts for Marked Answers.
  • Re-do the interface to be Moodle like.

BIM – Creating the test data, completing dbase design

The last bit of BIM work resulted in getting the show student details screen up and going, mostly. Any more of these screens will draw on, at least in part, other data from other tables. Time to get those populated. This will be done using data from BAM currently being used.

Creating the table

Dummy data

Will need some good data for testing. So the plan is to convert some existing data from BAM into the BIM format. Here are the steps.

Get the BAM data

Need to update local versions of the BAM data as a first step. Getting some recent data likely to be most useful.

Complete the creation of all BIM database tables

Need to have these set up before I can convert all the data. Due to the linkages between tables, the conversion process will have to know something about these tables. Last one to be converted is bim_questions. Back to the XMLDB editor. bim_questions will have the following fields (initially)

  • id bigint(10)
  • bim bigint(10)
  • title varchar(255)
  • body text
  • min_mark int(5)
  • max_mark int(5)


However, Marker allocations: is still a problem. BAM relies on a Webfuse database to track which markers are responsible for marking which students. My current institution is still figuring out/potentially changing how they do this. I could figure out how Moodle does this currently, however, not sure if that will change + it will take more work.

At this stage, the plan is:

  • Convert the existing Webfuse MARKERS_STUDS database into a Moodle/BIM table.
  • Write a support function or two that allows BIM to use (but not manipulate) the data in that table in a way that is independent of representation/format.
  • Use those functions in BIM to get the data.
  • At a later date, modify the support function(s) to work with whatever is decided.

So, bim_markers_students will have the fields:

  • id bigint(10)
    ID for the table.
  • course bigint(10)
    The course ID for uniquely identifying the Moodle course for which the marker allocations hold.
  • marker bigint(10)
    The user id for the marker.
  • student bigint(10)
    The user id for the student.

To populate bim_markers_students with the data from MARKERS_STUDS will require the need to read MARKERS_STUDS, expand out the place markers (ALL, campus names etc), get user ids from Moodle, combine the two into SQL. DONE

This will require the entry of student and staff information into Moodle for the staff/students associated with the courses being tested. This has been done with a bulk upload of a CSV file generated from Webfuse code.

Convert BAM into BIM data

Due to the various connections between the different data, this is probably not going to be straight forward. Here’s a first attempt at the process I think I’ll need to follow:

  • Select the course offerings to bring over. I’m thinking at least 2 courses, currently only have permissions for 1 (but two different offerings of it).
  • Create Moodle courses for those offerings.
    I’m only talking about 2 to start with, so manual creation will do. Done.
  • Create accounts for both the students and the markers.
    This will involve a couple of hundred students. So will have to do the bulk upload thing. So, need to create a CSV file from local data. Here’s an example from the help screen

    username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1, type1
    jonest, verysecret, Tom, Jones,, en, 3663737, 1, Intro101, Section 1, 1
    reznort, somesecret, Trent, Reznor,, en_us, 6736733, 0, Advanced202, Section 3, 3

    Need to extract all student accounts from local data and have username=student number, contact data and populate the course information (DONE). Staff will be much the same but different username.(DONE).

  • Enrol the accounts in the courses.
    DONE as part of the bulk upload.
  • Convert the BAM_CONFIGURE (bim) data for the offerings I’m going to include. — Actually, this will be creating bim activities in the courses.
  • Convert the BAM_QUESTIONS (bim_questions) table.
  • Convert the BAM_BLOG_STATISTICS (bim_student_feeds) table.
  • Convert the BAM_BLOG_MARKING (bim_marking) table.
    Need to know the question ID for a given question in Moodle. i.e. translation from what question ID is currently in Webfuse and what has been created in Moodle. Hard code a hash will probably be the quickest way. Webfuse doesn’t use ID, it uses the title of the question. So, somewhat of change there. DONE

Where to now

So, I think that means I now have a good collection of test data on which to build the rest of the screens. The task now is to start working my way through those screens and getting them implemented/tested with the current data. Thinking the order should probably be:

  • Get the show student details screen working as much as possible.
  • Get the show posts and show details screens working for staff.
  • Get the marking screen done.
  • Get the re-allocation screen done.
  • Get the configuration screen for coordinator done.

That should get BIM very close to completion.

Supporting curriculum mapping?

The following was initially written as a report for my current institution. I’ve removed the name of the institution here. It is my perception that most universities suffer from the problems described below.

I am particularly interested in answers to the following questions:

  • Is there any university that has done curriculum mapping well, broadly (i.e. at least one program, perhaps multiple) and consistently over time? Who are they?
  • What methods/tools have been used for curriculum mapping?
  • Is curriculum mapping really worth it? What’s the evidence?
  • What other theories, tools and practices might help increase the success of curriculum mapping?
  • What other barriers and hurdles get in the way?


The absence of any standards or support for the act of curriculum mapping is a flaw in the practice of learning and teaching at this university. It creates risk in a number of practices, including but not limited to: the accreditation of programs; implementation of generic attributes; understanding the student experience; and, the collegial discussion of an improvement to the curriculum of programs.

In 2006 the Australian Universities Quality Agency (AUQA – released a report of its quality audit of the university, which included a number of recommendations. The implementation of curriculum mapping with support from appropriate processes, resources and systems is a key component of any institutional response to recommendations #6, #8, #12 and makes important contributions to recommendation #5 of the institution’s 2006 AUQA report.

It is suggested that:

  1. The institution should prioritise the implementation curriculum mapping through the provision of appropriate resources, processes and systems.
  2. The aim should be to embed the production and use of curriculum maps into the everyday practice of learning and teaching, rather than simply adding yet another process or system to be used by academics.

The rest of this document covers the following topics:

  • What is the problem?
  • What is curriculum mapping?
  • How might it be done?

What is the problem?

Few, if any, of the programs (a collection of courses/units that make up a degree, e.g. Bachelor of Science) at the university have an up to date overview of their program that shows how students are prepared for and assessed in terms of the program’s learning outcomes, the course learning outcomes and associated graduate/generic attributes or skills.

Those programs that do have an up to date overview almost certainly have an impending visit from an accreditation agency. That looming visit has almost certainly required a frantic, and likely fruitless, search for the documentation produced for the last accreditation visit followed by a process of asking current academics for up to date information on the courses they teach and the resources, activities and assessments they use in those courses. Those individual reports are then collated by a central person or group and presented to the accreditation body. This process is to be repeated at the next visit.

The problems associated with current practice includes, but is not limited to:

  • loss of knowledge;
  • duplication of work;
  • little or no knowledge of how one course relates to another;
  • almost certain development of duplication and holes in the curriculum;
  • no ability for people teaching within a program and those charged to help to understand the overall picture;
  • no ability to provide the overall view to students; and
  • many more.

What is curriculum mapping?

Curriculum can be defined as

a sophisticated blend of educational strategies, course content, learning outcomes, educational experiences, assessment, the educational environment and the individual students’ learning style, personal timetable and programme of work (Harden 2001).

The curriculum represents the expression of educational ideas in practice (Prideaux 2003).

Curriculum mapping is a representation of the different components of the curriculum in order that the whole picture and the relationships between the components of the curriculum can be easily understood (Harden 2001). Curriculum mapping displays the essential features of the curriculum in a clear and succinct manner (Prideaux 2003) and provides a context for planning and discussing the curriculum (Holycross 2006).

Curriculum maps ensure that decisions about the curriculum are not made in a vacuum. Curriculum maps are a key requirement for curriculum development, which includes identifying professional development needs of academic staff, as curriculum maps provide the necessary information to identify the requirements of a particular course and program. Curriculum mapping provides an object that can help academic and other staff communicate about the curriculum of a course (Holycross 2006). Mapping is a remarkable tool for communication among teachers (Jacobs 2003).

Recommendation #8 in AUQA’s audit report of the university (AUQA 2006) is

AUQA recommends that the university encourage a more collegial approach to curriculum development, which will both stimulate and incorporate scholarship and research and philosophical discussions about quality education

Curriculum mapping is most prevalent within the primary and secondary education sector. However, curriculum mapping within tertiary education has been advocated and driven by the generic skills movement (Sumsion and Goodfellow 2004). Curriculum mapping is also quite common within medical education (Romkey and Bradbury 2007). The entries (The University of New England 2004; University of Queensland 2004; Murdoch University 2007) in AUQA’s good practice database that mention mapping are generally associated with mapping of graduate attributes – a small component of curriculum mapping.

Recommendation #6 in AUQA’s audit report of the university (AUQA 2006) is

AUQA recommends that the university develop strategies to systematically embed its generic skills and attributes into the curriculum, teaching and assessment practices of the University such that the CQU experience is of a consistent quality and is comparable with universities nationally

How might it be done?

Although the generic skills literature provides examples of final products of curriculum mapping, there is surprisingly little guidance concerning the practicalities of the processes involved (Sumsion and Goodfellow 2004).

This section describes how to do curriculum mapping by looking at:

  • process;
    The basic steps involved in curriculum mapping.
  • difficulties; and
    Some of the factors that complicate and reduce the effectiveness of curriculum mapping.
  • systems.
    The tools and approaches used to implement curriculum mapping.


While there is not a standard process, a curriculum mapping exercise will normally include some or all of the following steps:

  • data entry;
    Typically the course designer or coordinator will provide information about the course including: its resources, activities and assessment and how those link with outcomes and attributes. Some work has been done where students complete the curriculum maps (Romkey and Bradbury 2007).
  • confirmation or triangulation;
    In some, but not all, mapping exercises this information is then confirmed either through an independent check by a third party or through triangulation with other data sources such as students.
  • synthesis, comparison and analysis;
    The resulting course maps are then brought together to enable comparison and analysis of the overall curriculum.
  • sharing; and
    Curriculum maps and the results of analysis are shared with a wide array of interested parties including accreditation bodies, staff teaching within the program, support staff, students and management. Within the school sector such maps are also available on the web to parents.
  • response.
    Some form of action is undertaken as a result of the analysis.

These steps should be embedded directly into the standard teaching practice within the organisation and this is, at least theoretically, what happens in schools. It appears that in higher education this is typically a one-off process. A long term commitment to mapping can only come by infusing the process into the culture of the program (Holycross 2006).


This is perhaps because developing and implementing a curriculum map is not an easy task (Holycross 2006). It is not the straightforward, unproblematic task so often portrayed in the generic skills literature (Sumsion and Goodfellow 2004). Driven by government requirements, university initiatives around graduate attributes remain patchy with the best outcomes being the production of “curriculum maps” which have the potential to foster superficial and ineffective approaches to the development of graduate attributes (Green, Hammer et al. 2009).

Some of the difficulties arise due to:

  • tensions between accountability and autonomy;
    Curriculum mapping promotes accountability (Daniels 2005) and can be seen as a top-down attempt at control that can give rise to staff resentment (De La Harpe and Radloff 2000). A commitment to a collegial approach within a climate of facilitation, trust, autonomy and transparency is necessary for effective curriculum mapping (Sumsion and Goodfellow 2004).
  • workload issues.
    If curriculum mapping is to be undertaken effectively, recognition of the time demands on all involved is necessary (Sumsion and Goodfellow 2004). Failure to recognise extra workload is the main problematic institutional influence reported by staff (Gonzalez 2009).

The potential impact of audit instruments and processes, like curriculum mapping, can achieve the opposite of their intended effect (Power 1994). It will be especially difficult in an institutional context where, despite rhetorical changes, promotional and payment systems have yet to convincingly reward teaching equally to research performance (Green, Hammer et al. 2009).


The majority of curriculum mapping at CQUniversity has been performed with traditional tools such as pen and paper and basic software applications such as Word and Excel. In terms of mapping graduate attributes – a subset of curriculum mapping – Sumsion and Goodfellow (2004) report on the use of Excel spreadsheets at Macquarie University, Murdoch University developed a web-based tool called GAMP (Murdoch University 2007), and the University of Queensland appeared to use word processor documents (University of Queensland 2004).

The much higher level of use of curriculum mapping within schools has resulted in a number of commercial curriculum mapping systems including:,, and

Choice of an information system for curriculum mapping must consider the time it takes to develop and maintain the database, it must not impose an unnecessary burden on academics (Holycross 2006).


AUQA (2006). Report of an Audit of the University. Melbourne, Vic, Australian Universities Quality Agency: 72.

Daniels, L. (2005). Integrating technology into teacher education through curriculum mapping: Year three and sustainability. Society for Information Technology and Teacher Education International Conference 2005, Phoenix, AZ, USA, AACE.

De La Harpe, B. and A. Radloff (2000). Helping academic staff to integrate professional skills. Integrating key skills in higher education: Employability, transferable skills and learning for life. S. Fallows and C. Steven. London, Kogan Page. 165-174.

Gonzalez, C. (2009). "Conceptions of, and approaches to, teaching online: a study of lecturers teaching postgraduate distance courses." Higher Education 57(3): 299-314.

Green, W., S. Hammer, et al. (2009). "Facing up to the challenge: why is it so hard to develop graduate attributes." Higher Education Research & Development 28(1): 17-29.

Harden, R. M. (2001). "AMEE Guide No. 21: Curriculum mapping: a tool for transparent and authentic teaching and learning." Medical Teacher 23(2): 123-137.

Holycross, J. (2006). "Curriculum Mapping – An essential tool for curriculum development." The Journal of Physician Assistant Education 17(4): 61-64.

Jacobs, H. H. (2003). "Connecting curriculum mapping and technology." Curriculum Technology 12(3).

Murdoch University. (2007). "Embedding graduate attributes in a course curricula."   Retrieved 3 September, 2009, from

Power, M. (1994). The audit explosion. London, White Dove Press.

Prideaux, D. (2003). "Curriculum Design." British Medical Journal 326: 268-270.

Romkey, L. and L. Bradbury (2007). Student curriculum mapping: A more authentic way of examining and evaluating curriculum. 2007 American Society for Engineering Education Southeastern Section. Louisville, Kentucky.

Sumsion, J. and J. Goodfellow (2004). "Identifying generic skills through curriculum mapping: a critical evaluation." Higher Education Research & Development 23(3): 329-346.

The University of New England. (2004). "Integrating graduate attributes into UNE courses."   Retrieved 3 September, 2009, from

University of Queensland. (2004). "Graduate attribute mapping in programs."   Retrieved 3 September, 2009, from

BIM – Saving/manipulating RSS files

In the last post I’d gotten started having the show student details screen actually getting data from the database. One data source this screen needs is not in the database, it’s in the RSS file from the student’s blog that is mirrored on the Moodle site. This post talks about the process about how BIM will be saving, reading and using that RSS file in its operation.

There will be at least two parts:

  1. Identifying the location for the RSS file (and putting some dummy ones there).
  2. Manipulating the RSS files.


As discovered in the last post Moodle works with a directory referred to as moodledata as the file system store. Each course has its own area in a sub-directory based on the course id.

So, the obvious plan would be to put a bim directory in the course sub-directory. Since there may be the case that more than one BIM activity could be added to a course, I’ll put another layer of sub-directories in place based on the bim id. At that stage, we can use the userid, actually, I’m going to go with username (I’m still of the opinion that a support person may still look at the file structure and that the username – which @ my institution is the student number – will be more meaningful than the uid) as the filename and put a .xml extension on the end.

So, the path for my test user (username=david) on my test course (cid=4) and my test BIM activity (bim id=1) would be


Which means I can put some test data into the file.

Manipulating RSS

Sadly, at this stage, the RAW book I’ve been using only has information about using a Moodle API for constructing RSS files from scratch. For BIM, we need to be able to use existing RSS files (also ATOM and other type of feeds) from existing blogs. So I don’t think this is appropriate. Need to find what alternatives exist within the Moodle community.

I had originally found the magpie rss library. However, it now appears that Magpie is deprecated and SimplePie is preferred. So, looks like I’ll use that.

This won’t be the only place I’ll have to manipulate a student’s feed. So I should abstract this out. Straight procedural and into a library? Or, go object oriented? All my recent experience has been OO, but new to PHP. Might stick with procedural for now.

Next problem is getting SimplePie to parse the feed for this blog as a test. It appears that SimplePie doesn’t like control characters in a feed. The problem here. Remove those and it works fine. To do: Figure out how to handle these cleanly. Need to make this robust.

The SimplePie API is documented online. It has a get_feed_tags function that should fulfill one of the needs for the registration process.

Current status

The show student details screen is now almost fully working – sans any of the normal sanity checking and a few bits to tidy up. Some progress being made.

BIM – Getting “show student details” working

This post summarises the work necessary to take the next step in BIM development. As summarised in the last post the plan is to implement the remaining screens roughly complete so that potential users can interact and give feedback. This included the need to start designing and populating remaining database tables.

This post focuses on the implementation of the Show student details screen. This screen is used by students to show what BIM knows about their blog. This includes # of posts, blog url, allocation of posts to questions and any marks/formal comments from academic staff. Two steps:

  1. Create and populate database tables.
  2. Code up the display function.

The question of saving data into the local file system also comes up at the end.

Create and populate database tables

Let’s start with the tables BAM uses:

  • BAM_CONFIGUREHas been replaced with the table bim in BIM
    The table is used to hold details about which course is using BAM.
  • BAM_BLOG_STATISTICSHas been replaced by bim_student_feeds
    Holds details about individual student blogs. The URLs for blog and feed, number of entries etc.
  • BAM_BLOG_MARKING Suggest replacement with bim_marking
    Holds information about individual student posts that have been allocated to a particular question and eventually marked and formally commented on by a marker.
  • BAM_QUESTIONS Suggest replacement with bim_questions
    The idea is that the student will have to respond to some specific questions through blog posts. This table holds the detail about those questions. The title, a textual description and some details about how they can be marked (not currently used).
  • BAM_UNALLOCATED Will probably replace with bim_unallocated_posts
    This summarises the list of posts from the student that have not been allocated to a question. Used in the management process (can’t remember exactly how/why)

COURSE,PERIOD,YEAR (and A_TITLE) in all of the above is replaced by the bim field/identifier that links back to the bim table. i.e. this is how each course/bim activity relationship is tracked.

STUD is replaced with userid


Looking at the following fields:

  • id bigint(10)
  • bim bigint(10)
  • userid bigint(10) – ID into user table for student/author
  • marker bigint(10) – ID into user table
  • question bigint(10) – ID into bim_questions
  • mark double
  • status (Submitted, Marked, Released) – what about Unallocated?
  • timepublished bigint(10)
  • timemarked bigint(10) – seems to be a Moodle trend to use time as bigint(10)
  • link varchar(255)
  • post text
  • comments text

At this stage, for the show student details screen. This is the only table needed. So let’s create it and do some coding.

Oh, the joys of the XMLDB editor. enum values are defined using quoted (single quotes), comma separate values.

There’s still the question of how to get it to create the tables in the database after adding them in XMLDB. Will need to follow up on that. Kludged it with the SQL generated by XMLDB.

Time to put in some dummy data so that the show student details screen will work. Will use my own blog as the dummy for this case.

Code up the display function

The current hard-coded show student details screen looks like this. This is what I need to code up.

All fairly basic stuff:

  • Identify and retrieve the necessary data from the database.
  • Perform any calculations to generate new data.
  • Display the output.

Only problems getting used to the PHP way.

Saving data in the file system

BIM keeps a local RSS file that mirrors the students’ blog RSS. BAM worked by saving a copy of the RSS file into the file system. I plan for BIM to work the same. So, need to find out how to save data properly into the Moodle file system. Details:

  • Called “moodledata” or the Moodle data directory, outside DOCROOT.
  • Each course will have a sub-directory within that area.
  • Each course sub-directory has 2 sub-directories: backupdata and moddata.
  • moddata is for files associated with activities.
  • moddata contains a sub-directory named for the activity module that is saving the data.

There’s much more being saved there. But this is what I’m interested in.

Seems there is a Moodle library file /lib/rsslib.php that includes functions that allow for the creation of an RSS file from scratch, including giving the file name. Not sure this is exactly what I want here. But close. (More discussion page 189 of the Extension development book)

There are a few other examples to use. Back to that later.