teaching database concepts

a portfolio
part of a disciplinary commons

Main menu: home | who | philosophy | context | instructional design | delivery | assessment | evaluation | place | credits |

this is what i had to do ...

SELECT topics
FROM syllabus
WHERE subject LIKE '%database%'
ORDER BY importance DESC;
designing a module

The syllabus for this module (actually it may help to recall that I am talking about the Database part of the module) is promisingly vague:

The objectives throw a little more light on the matter:

On completion of this module, students should be able to:

This needs to be mapped to something rather more detailed. I have done this as follows:

Background Discussion of what a database is, and how it might fit into an organisational context. This is probably the motivational part of the module; I try to explain why knowing some of the stuff we are about to meet is a good thing.
Relational Model This is quite theoretical. I still think that some of the mathematics behind the model is worth looking at; maybe the students can appreciate some of the elegance, and even the relevance of the mathematics they did in the first year. They should also know something about this history of the model and just a little about some of the alternatives.
Getting Databases Right My position here is that any fool can design and use a database, but it requires a bit of knowledge to do it properly. This is obviously the home for normalisation (and de-normalisation), but there is also stuff on query optimisation and pragmatic design. The culmination of this is a look at the process of taking a "real world" description of a domain and producing a database.
Database Programming Some would probably argue that JDBC is The One True Way to program with databases; the students need this for another module, so it is included. But mostly the focus is on the principles of using SQL with a host language (we have to learn SQL too). The tools of choice are SQLite and Python, a choice determined not a little by cost, availability and ease of installation.
DBMS Internals Finally, we look at how a DBMS works. Aside from operating systems, a DBMS is one of the most complex pieces of software we ever get to work with, so it is instructive to think about what goes on "under the bonnet". We talk here about managing data on disk (clustering, pages, minimising disk access, file organisations, memory), locking (the usual 2PL with the standard set of illustrative problems), and general issues in physical database design.

There we have it. The problem that now arises, of course, is how to map this plan into some collection of learning activities ...

artefact

The module specification [PDF] shows just what we are working with here.

Valid XHTML 1.0 Strict Valid CSS!