Hardware core syllabus ClarkDouglas 2004 Computer Science Department