In a system using WAL, all modifications are written to a log before they are applied to the database. Usually both redo and undo information is stored in the log.
The motivation for WAL is to allow updates of the database to be done in-place. The other obvious way to implement atomic update is with shadow paging, which is not in-place. The main advantage of doing updates in-place is it reduces the need to modify indexes and block lists.
ARIES is a popular algorithm in the WAL family.