You don't really need both odd and even identified by a class. Each data table should itself be identified e.g. id="course-student-table" which means the 'normal' row can be targetted without a class.
#user-table tr { }
#user-table tr.row-odd { }
This can reduce repetition in your CSS if you have both striped and non-striped tables and it lets you set styles that apply to both odd and even rows (font-size etc.) only once, only having to override the values that change (usually just background color).
Actually, I've changed my mind on this, having both has no real downside (except an extra 7 characters per table row) and allows different people to approach the same problem from different directions so why not?
