Behrooz Parhami's website banner

Menu:

Behrooz Parhami's Teaching and Textbooks

Globe, apple, and textbooks

Teaching and Related Activities:
Teaching Overview of Philosophy
List of Undergraduate Courses Taught
List of Graduate Courses Taught
An Innovative Puzzle-Based Freshman Seminar
Math + Fun! Series of math lessons for elementary grades 3-6

Course Websites:
ECE 1, Ten Puzzling Problems in Computer Engineering
ECE 154, Introduction to Computer Architecture
ECE 252B, Computer Arithmetic
ECE 254B, Adv. Computer Architecture: Parallel Processing
ECE 257A, Fault-Tolerant Computing

Textbooks and Other Educational Resources:
Textbook on Computer Architecture, Oxford, 2005
Textbook on Computer Arithmetic, Oxford, 2nd ed., 2010
Textbook on Parallel Processing, Plenum, 1999
Textbook on Dependable Computing, forthcoming in 2010
Published Books in Persian

Teaching Overview and Philosophy

Professor Parhami enjoys teaching at all levels, but the bulk of his formal teaching load has been at the graduate level. In Iran, this was due to a dearth of expertise at his level and here at UCSB, it has been primarily due to scheduling considerations and the need to cover all major course offerings in computer engineering. He regularly teaches undergraduate courses on computer design and architecture as well as graduate-level courses on computer arithmetic and parallel processing. His many years of teaching in these areas have led to the publication of comprehensive textbooks on parallel processing (1999), computer arithmetic (2000), and computer architecture (2005); see the links below for more information. He has also taught a number of graduate courses on advanced digital design and fault-tolerant computing.

Until 1986, Professor Parhami was also heavily involved in programs to teach computing fundamentals to nonspecialists and high-school students. The Computer Appreciation textbook that he wrote based on these experiences was a best-selling Persian-language book on computing for over a decade after its initial publication in 1984. Professor Parhami's teaching-related professional activities in the past have included participating in curriculum development for Iranian high schools, leading curriculum development efforts for computer engineering education at the college level, contributing to a series of TV science programs on computing, organizing a "Teaching of First CS Course" conference, and giving numerous public lectures under the auspices of the Informatics Society of Iran.

Professor Parhami believes in detailed advance planning for every course that he teaches. A typical course outline that he hands out at the start of an academic term contains lecture schedule (including page numbers in the text or reader), posting and due dates for all homework assignments, and a full description of course reference material and grading scheme. He also strives for careful preparation before each lecture, providing alternate explanations (e.g., through analogies), emphasizing the big picture, and encouraging discussions/comments in class. Professor Parhami is a demanding but enthusiastic teacher who has consistently received high marks from students at all levels. These include graduate and undergraduate students that he normally teaches, as well as a multitude of other learners, from high-school students to professionals in short courses and seminars.

Even though Professor Parhami's focus in undergraduate teaching has been computer design and architecture, he has also taught courses in computer software, applications, and theory. At the undergraduate level and below, Professor Parhami de-emphasizes pedestrian details (e.g., the instruction set of a given microprocessor or the design details of a particular high-performance computer) in favor of content that will be remembered and will remain useful many years later. To this end, he makes extensive use of analogies, back-of-the-envelope estimation, and class assignments that are both relevant and interesting. He tries to avoid reusing exam or homework problems, not just to make cheating more difficult but because he considers the process of making up interesting problems germane to remaining excited about the topic and in touch with the students.

At the graduate level, Professor Parhami emphasizes unifying concepts and the presentation of a broad and balanced overview of the subject matter. This philosophy is particularly important in the area of parallel processing (ECE 254B, that he teaches regularly) where a multitude of competing architectures must be presented and usefully compared through a fog of misleading or unfair claims by their designers and proponents. He incorporates the latest papers from journals and conference proceedings into the course material. Nothing excites students more than the opportunity to discuss and comment on a paper that was published only a few months ago. He updates the course material (including its reader or text, and presentation slides) with every offering. Professor Parhami encourages original thinking to the extent that several term papers written for his graduate courses have been published as journal or conference papers.

List of Undergraduate Courses Taught

Undergraduate courses taught by Professor Parhami are listed below in reverse chronological order, categorized by the institutions where they were offered. Only regularly scheduled and seminar courses are included here. Individualized instruction and project courses can be found under Student Supervision. Special training and intensive short courses are listed in Appendix L to B. Parhami's CV (along with lectures and other presentations).

At University of California, Santa Barbara
ECE 1, Ten Puzzling Problems in Computer Engineering, 1 unit freshman seminar, s2007-11
ECE 154, Introduction to Computer Architecture, 4 units, f1993, f99, ss2000-05, w2006-10
CMPSC 154, Introduction to Computer Architecture, 4 units, w1995

At Carleton University, Canada
95.102, Introduction to Computers, 0.5 unit, w1988
95.203, Computer Organization, 0.5 unit, f1987
95.301, Concurrent Programming, 0.5 unit, w1988
95.490/590, Fault-Tolerant Computer Systems (under/grad), 0.5 unit, f1987

At University of Waterloo, Canada
CS 335, Computing Systems, 0.5 unit, w1987
CS 350/550, Machine Structures (under/grad), 0.5 unit, f1986
CS 369/569, Digital Networks (under/grad), 0.5 unit, s1987

At Guilan University, Rasht, Iran
Fundamentals of Computers and Programming, 4 units, s1985 (two sections)
Advanced Programming, 4 units, s1985

At Tehran University
Computer System Organization, 5 units, s1982
22-871, Computer Organization I (offered jointly with SHUT), 4 units, s1984

At School of Planning and Computer Applications, Tehran
C 792, Automata Theory, 3 units, f1979

At Sharif (formerly Arya-Mehr) University of Technology, Tehran
22-014, Introduction to Programming, 3 units, f1974, s75
22-018, Computer Programming, 2 units, s1983 (two sections)
22-682, Data Structures, 3 units, f1976
22-684, Computer Organization I, 3 units, f1974, s75, s76, s80
22-685, Discrete Mathematical Structures, 3 units, f1975, s76
22-691, Switching Theory, 3 units, s1978, f78, s79, f79
22-780, Technical Writing in Computer Science (Seminar), 2 units, s1976
22-780, Computers and Society (Seminar), 2 units, s1977
22-807, Technical Presentations, 2 units, f1984
22-827, Theory of Languages and Machines, 3 units, s1984
22-842, Advanced Logic Circuits, 3 units, f1983
22-861, Operating Systems I, 3 units, s1983, f84
22-864, Software Engineering (under/grad), 3 units, s1984
22-871, Computer Organization I (offered jointly with Tehran Univ.), 4 units, s1984

At University of California, Los Angeles
E 100D, Information Processing Systems, 4 units, s1973

List of Graduate Courses Taught

Graduate courses taught by Professor Parhami are listed below in reverse chronological order, categorized by the institutions where they were offered. Only regularly scheduled and seminar courses are included here. Individualized instruction and project courses can be found under Student Supervision. Special training and intensive short courses are listed in Appendix L to B. Parhami's CV (along with lectures and other presentations).

At University of California, Santa Barbara
ECE 250, Advanced Computer Architecture, 4 units, f1988, f89 (predecessor of ECE 254A)
ECE 251, Parallel and Distributed Computation, 4 units, s1990, s91 (predecessor or ECE 254B/C)
ECE 252B, Computer Arithmetic, 4 units, w1989, w90, f90-91, w93-94, f94-97, w1999-2001, f01-03, w05, s07-11
ECE 252C, Advanced Topics in Digital System Design, 4 units, w1996, w98
ECE 254B, Advanced Computer Architecture: Parallel Processing, 4 units, s1992-2001, w02-04, s05-06, f08, f10
ECE 257A, Fault-Tolerant Computing, 4 units, f1998, f2006-07, f09
ECE 594L, Advanced Topics: Parallel and Distributed Computation, 4 units, s1989
ECE 594L, Advanced Topics: Massively Parallel Computation, 4 units, f1992

At Carleton University, Canada
95.490/590, Fault-Tolerant Computer Systems (under/grad), 0.5 unit, f1987

At University of Waterloo, Canada
CS 350/550, Machine Structures (under/grad), 0.5 unit, f1986
CS 369/569, Digital Networks (under/grad), 0.5 unit, s1987
CS 750, Dependable Computing, 0.5 unit, f1986

At Sharif (formerly Arya-Mehr) University of Technology, Tehran
22-686, Compilers and Assemblers, 3 units, f1977
22-687, Computer Organization II, 3 units, f1975, f76, s78, f78, s79, s80
22-790, Advanced Computer Science Seminar, 3 units, s1978
22-857, Artificial Intelligence, 3 units, f1984
22-864, Software Reliability (under/grad), 3 units, s1984
22-872, Computer Organization II (new), 3 units, f1983, s85
22-890, Graduate Computer Science Seminar, 2 units, f1984
22-895, Microprogramming, 3 units, s1984
22-951, Formal Languages and Automata, 3 units, s1975, s77, f77, f79

At University of California, Los Angeles
E 225C, Computer System Design: Fault Tolerance, 3 units, w1974