A systematic logical-first treatment. We focus on software development perspective, with only the most necessary discussion of physical storage.