Next: Graduate Program Development
Up: Accomplishments
Previous: Accomplishments
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: Graduate Program Development
Up: Accomplishments
Previous: Accomplishments
Christopher D. Carothers
2002-03-07