next up previous
Next: Graduate Program Development Up: Accomplishments Previous: Accomplishments

Undergraduate Curriculum Development

In addition to being a strong research institution, Rensselaer is known world wide as being an innovative instructional and educational institution for undergraduate and graduate programs. In keeping with that strong tradition, I have focused my teaching efforts in revamping the undergraduate Computer Organization course. Since arriving at Rensselaer, I have re-focused this course around the definitive textbook, by Patterson and Hennessy on computer organization [81]. Moreover, I have created a hierarchy of projects that are designed to build off concepts learned in the classroom lecture, and improve a student's programming abilities, as well introduce students to simulation and modeling. The projects begin with writing several MIPS assembly language programs using the SPIM simulator, which is a MIPS instruction set simulator included with the course textbook. Then after covering instruction set design, we drop down and cover boolean logic and build basic computer components. At the boolean logic level, I have the student build in software using C or C++ a large Carry Lookahead Adder (i.e., 4096 bits). After boolean logic and arithmetic topic are completed, I introduce how datapath and control are organized in a microprocessor. These concepts are tested by having student modify the SPIM simulator to perform a low-level simulation of the data and control of the microprocessor covered in the textbook. The final major topic covered by this course is memory hierarchy. The project for this topic requires the student to again modify SPIM to be a cache and or virtual memory simulator and calculate cache / page miss counts for a given test MIPS assembly language program.

In addition to the projects, I also augment the material covered in the textbook with relevant Computer Systems journal papers, such as [101] for TLB design.

Overall, the reaction among students is positive. Students enjoy the challenging projects and gain confidence in their own programming abilities. This course forces them not only understand programs at the machine level, but also modify a production piece of software which helps to prepare students for real world software development projects.


next up previous
Next: Graduate Program Development Up: Accomplishments Previous: Accomplishments
Christopher D. Carothers 2002-03-07