FREDURES: A search engine for open educational resources (OER)

by John R. Yamamoto-Wilson

The idea behind FREDURES (free educational resources) is very simple. It is a search engine – or, more accurately, a series of search engines – dedicated to locating free educational resources on the World Wide Web. Technically, too, it is simple, using Google custom search engines.

Beyond that simple structure, though, things are considerably more complicated. The first problem is definitional. The Organization for Economic Co-operation and Development defines OER as:

digitized materials offered freely and openly for educators, students, and self-learners to use and reuse for teaching, learning, and research. OER includes learning content, software tools to develop, use, and distribute content, and implementation resources such as open licences. (Giving Knowledge for Free: The Emergence of Open Educational Resources)

The William and Flora Hewlett Foundation definition of OER is:

teaching, learning, and research resources that reside in the public domain or have been released under an intellectual property license that permits their free use and re-purposing by others. Open educational resources include full courses, course materials, modules, textbooks, streaming videos, tests, software, and any other tools, materials, or techniques used to support access to knowledge. (Open Educational Resources)

And there are various other definitions out there (e.g., Wiki Educator, Defining OER, Creative Commons, What is OER?).

With so many definitions out there, one might imagine that all one needs to do to build an OER search engine is adopt one of these definitions and stick to it. But the devil is in the details, and in practice one quickly gets bogged down trying to define what is and is not an educational resource. Is Wikipedia an educational resource? Are resources for teachers educational resources, or should the aim be to provide a resource for students? Are databases of primary material, like Project Gutenberg or HathiTrust educational resources? What about specialized discussion groups, like Stack Overflow for computer programmers?

Here, after a bit of trial and error, is what I came up with. Firstly, I decided that educational resources occupied the middle ground in the spectrum between sources of information and research sources. That clarified the question of whether or not to include sites like Wikipedia, which give information but do not structure it into courses or classes. At the other end of the spectrum, it also clarified the issue of whether to include material on research databases, although a lot of that kind of material is largely excluded anyway, since most of it is only available by subscription. Of course, there are sites like, that give access to research material. Setting aside, for the moment, the furore over the business end of, I felt there was a need for a FREDURES page giving links to such sources, but they lie outside the scope of the search engine I wished to create.

Next, I decided that I wanted FREDURES to be a resource for people who wanted to learn. Accordingly, I excluded sites that are designed to be resources for teachers.

As for databases of primary sources, discussion groups and other potentially useful resources, I decided they would have to be listed separately. Apart from anything else, some of them are so huge that they would swamp the system, so inclusion of them is simply not practicable.

So, for the purposes of FREDURES, open educational resources means open-access material that is structured as coursework for learner use.

Taking that as a working definition, I was able to identify the kind of website I wanted to include. Obvious examples would be MOOCs, of the kind listed by Dhawal Shah on Class Central, and educational websites like the Khan Academy and FutureLearn.

But that still leaves some tricky logistical problems.
By far the most efficient way of identifying sites at the top of the hierarchy is by dynamically extracting links from web pages that list sites of OERs, such as Marc Chernoff's 12 Dozen Places to Educate Yourself Online for Free. However, once one gets lower down the hierarchy extracting links dynamically can be a problem, because pages related to a particular specialism will often contain links referring users to other pages on the same website that are unrelated to that specialism. For this and other reasons, a top-down approach poses logistical difficulties.

A bottom-up approach (linking to sites offering courses in particular subjects at the bottom of the hiererchy and adding them to the appropriate "parent" categories) poses problems of a different kind; the number of such courses is so huge that listing them all in that way would take a lifetime!

The practical answer is to combine the two approaches, as well as listing general websites (such as the Massachusetts Institute of Technology's Open Courseware site, at at the top of the hierarchy and portions of such websites (such as

There are other hurdles to be overcome; some websites do not categorize their courses in a logical manner and, short of adding a link for each particular course, there's no practical way to include them.

The result of all these factors is that there is some variation in the content at different levels of the hierarchy. While there is (or should be) a considerable level of overlap, a course that shows up in the "quickstart" search, at the top of the hierarchy, may not appear in a category search lower down the hierarchy, and vice versa. Users would be well advised to search at different levels of the hierarchy.

This is a new project, so it will take some time before it is really running smoothly. Feedback and support are certainly welcome, so please, if you have any thoughts about all of this, do get back to me!

If you have a website and would like to add the FREDURES Quickstart search to it (preferably with a link to the complete set of search boxes at, you are very welcome. The code is:

(function() {
var cx = '008168056879373141361:xuxdoj7xhti';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = '' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);

Just paste it into your html wherever you want it to appear on the page.

Quickstart search