There's lots that can be taught about transactions in databases (and I'm really talking about relational databases here, since that's what I'm currently teaching), but I believe it's easy to teach the wrong things. Given that students are very likely going to forget most of what you say before they leave the lecture room, where should the focus go?
Some key topics that often feature in textbooks and lecture slides are (going by Ramakrishnan and Gehrke as a main guide) - but don't feel restricted by them:
- ACID properties
- schedules and their serializability
- conflict serializability and precedence graphs
- SQL transaction statements (COMMIT, ROLLBACK, SAVEPOINT)
- locking protocols (Strict 2PL and such)
- isolation levels (READ COMMITTED, REPEATABLE READ, etc.)
- logging and recovery (WAL, ARIES)
- transaction support in APIs (JDBC, PHP)
I'm after an informed view of what topics are most worthwhile, and what's not. I'm also interested in where you're coming in from in answering. Have you found some nugget of insight invaluable in a job, or are you frustrated that newly graduated employees don't know some basic detail?
Background: I'm teaching the topic in an introductory DBMS course to students of a 1-year IT Masters course. The students are computer-literate (mostly CS) graduates.