Taught at NCSU S04.
Intel recently began shipping the first commercially-available, general-purpose microprocessors with simultaneous multithreading (SMT). Additionally, IBM has announced that the Power5 serverchip with SMT will be available in 2004. Other SMT enabled microprocessors have been announced, including include Alpha's 21464 and Sun's MAJC 5200 processor. While simultaneous multithreading is currently available in a few microprocessors, it will become commonplace in a short time because of its architectural benefits. In particular, SMT has a small cost but a large potential gain. For example, Intel claims 5% increase in die space and up to 30% increase in performance. This is very different from other architecture features, such as super-scalar execution and branch prediction, in which the additional resources required tends to exceed the performance gains.
This is a seminar-style course. A typical class period covers a relevant research paper, consisting of a presentation followed by a discussion. Students are expected to participate, which may include presenting a paper to class or leading the classroom discussion.
The course is focused on semester-long projects. Students will devise a project that creates software that supports SMT is some way. In addition, students will write a report on their project. Some projects may be done in student teams. All projects will be closely supervised by the instructor. The instructor is an implicit member of each team.
Operating System Design
Taught at ND from F96 to F02.
This is an in-depth investigation of the major areas in the design and analysis of current and future operating systems for multitasking, multiuser and distributed environments. These areas include process synchronization, concurrency mechanisms, virtual memory, distributed systems, computer security, and computer systems performance analysis. Students will complete five (or four) programming projects that account for one-half of the grade.
Taught at ND from S97 to S02.
A compiler reads a program written in one language and translates it into an equivalent program in another language. This course introduces the theory and practice of compiler construction. Students will apply the theory presented when building their own compiler.
The principles and techniques of compiler writing are ubiquitous. Compiler writing spans programming languages, architecture, theory, automata algorithms, and software engineering. Therefore, the knowledge acquired in this course will be used numerous times in the career of a computer scientist.
Foundations of Computing
Taught at ND in F03.