Those are course 0 or 1.5. ;)

But, yup. You're wandering into database normalization and more general database design.

Normalization tends to mean a bunch of tables each acting as canonical store for some bit of info. Answering questions requires gluing stuff back together with joins. Common reports can be rigged up as views to basically save the query definition and let you further query against it. Data input gets "fun", though.

//