this is what i had to do ...
SELECT topics FROM syllabus WHERE subject LIKE '%database%' ORDER BY importance DESC;
![designing a module](img/design.jpg)
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:
- Databases: Relational database management systems; Normalisation; SQL.
The objectives throw a little more light on the matter:
On completion of this module, students should be able to:
- Understand relational database architecture and functions of a database management system;
- Use SQL to create, maintain and extract information from a relational database;
- Develop database applications to a specification.
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.
university of leeds | school of computing | disciplinary commons | tony jenkins