Computer Architecture Course Group Status Report

June 2004



Architecture Courses

Course no. Title Credit 
Hours
Reqd - Core (R)/
Reqd - Option (O)/
Elective (E)
Capsone?
CIS 360
Introduction to Computer Systems
4
R
no
CIS 675.01
Introduction to Computer Architecture
3
R
no
CIS 676
Computer Systems and Interfaces
3
O
no
CIS 621
Introduction to High-Performance Computing
3
O
no
CIS 721
Introduction to Parallel Computing
3
E
no
CIS 775
Computer Architecture
3
E
no
CIS 778
Computer-Aided Design and Analysis of VLSI
4
E
yes
CIS 875
Advanced Computer Architecture
3
E
no
EE 206
Switching Circuits Laboratory
1
R
no
EE 261
Introduction to Logic Design
3
R
no
EE 300
Electrical Circuits
3
R
no
EE 309
Electrical Circuits Laboratory
1
R
no
EE 320
Electronic Devices and Controls
3
R
no
EE 567
Microprocessor Laboratory
2
R
no


1. Summary

The core of the Computer Architecture Course Group consists of CIS 360 and CIS 675.01. CIS 360 introduces the student to the internal representation of programs in a computer and the fundamental von Neumann machine model. CIS 675.02 provides detail on the architecture of a computer. EE 261 and EE 206 provide a background in logic design and serve as pre-requisites to CIS 675.01. EE 300, 309, and 320 provide an introduction analog circuits and devices. EE 567 provides hands-on experience with microprocessor-based systems. CIS 676 is required for the Hardware/Software option, providing greater depth on microprocessors and hardware interfaces.

The electives in this group include CIS 775, the graduate level architecture course that builds on the fundamentals from CIS 675; CIS 778, which is a Capstone course, that allows a student to develop a deeper understanding of how digital chips are designed and implemented in VLSI; CIS 621 and 721, that focus on aspects of high-performance and parallel computing.

Most of the courses in this group have been revised and updated within the last few years - in response to the rapid rate of change in technology.

2. Detailed Analysis

Section 2.1 describes the individual courses in the group. Section 2.2 explains how the group is related to the rest of the CSE program. Section 2.3 explains how the group helps meet a range of CSE and ABET objectives. Section 2.4 provides information on the feedback we have received from students, recruiters, etc. about the courses in the group. Section 2.5 summarizes the changes we are considering in the various courses.

2.1 Summary of the courses

CIS 360: This is a four-credit course that serves as the introduction to computer architecture as well as a low-level programming class. The class meets for 4 lecture hours/week.

This course is the students' first exposure to how a computer actually works. It approaches the material at the level just above the actual electronic components of the machine. The course starts with binary encoding of integers (2's complement), characters (ASCII), strings, and hexadecimal notation. It continues with a brief introduction to logic gates and provides an intuition of how gates can be used to form simple combinatorial and sequential circuits (CIS 675 expands on this material). The course introduces binary encoding of data and instructions, covering machine instruction representation and how assembly instructions relate to each other. The students become familiar with components (e.g., registers) which make up a CPU and CPU control at the register-transfer level. They also become familiar with assembly programming including the use of pointers and subroutine linkage using stacks. At the end of the course, they are exposed to interrupts, interrupt handlers, operating system service routines, and DMA control.

CIS 675: The second course in the sequence is CIS 675, Introduction to Computer Architecture. This course exposes the students to the following concepts: computer system components, instruction set design, integer arithmetic algorithms/circuits, floating point arithmetic algorithms/circuits, datapath design, hardwired control units, programmable control untis, and introduction memory and I/O interfaces. The students get exposed to RISC processors in this courses. The course has two versions, 675.01 (3 credits) and 675.02 (4 credits); the former is taken by CSE majors who have background in logic design (having taken EE 261 and 206), the latter is for CIS majors who do not have the logic design background.

CIS 676: This course, Computer Systems and Interfaces, is an elective course for students specializing in hardware/software systems. The following topics are covered: operational principles of computer systems and interfaces, software and hardware interface issues, protected mode operations, interrupt handling, input/output, bus structures and standards, interfacing issues with memory, DMA, disk, display, and network. In this course students get exposed to the PC architecture and interfacing issues. The class also some labs (using Verilog) where they get some in-depth understanding of basic interfacing issues.

CIS 775: This is the third course in the architecture sequence. It is primarily a graduate-level course and is taken by some undergraduate students as an elective. The topics in this course are: fundamentals of computer design, performance measures, instruction set design, reduced instruction set architecture (RISC), pipelining, memory hierarchy and cache design, storage systems, vector and parallel architectures. The students also perform simulation-based design to get an in-depth understanding of pipelined design and memory hierarchy.

CIS 875: This is the final course in the architecture sequence. This is a graduate-level course and discusses the following concepts: convergence of parallel architectures and fundamental design issues, design of shared-memory multiprocessors, Snoop-based multiprocessors, designing scalable multiprocessors and scalable DSM systems with directory-based cache coherence, interconnection network design principles, routine algorithms, collective communication support, network architectures and messaging layers, and future directions in architecture.

CIS 778: This is a capstone course recommended for BS CSE majors following the hardware/software option. It covers the design and analysis of digital VLSI circuits. Both low-level custom and VLSI layout at the transistor level, as well as high-level design using the hardware description language (HDL) Verilog are explored in detail. Students carry out design projects at both levels.

CIS 621: This is a course that explores performance issues in computing. The objectives of the course are to present the principles of development of efficient software for computers (from modern engineering workstations to highly parallel supercomputers), and to provide education in the effective use of these machines for scientific and enginnering computations. Topics include high-performance architectures; shared-memory and message-passing models for parallel programming; design, analysis, implementation and performance evaluation of parallel algorithms. Laboratory exercises involve implementation and performance evaluation on a number of architectural platforms.

CIS 721: This course presents the principles and practice of parallel computing. The design, implementation and evaluation of parallel programs for shared-memory and distributed-memory architectures are discussed. Efficient parallel algorithms for a number of numeric and non-numeric applications are studied. Laboratory exercises are conducted on parallel and distributed computing systems.

EE 206, 261, 567: These three courses, required of all CSE majors, provide hands-on circuit-level and chip-level understanding and intuition concerning the various components discussed in the other architecture courses. They also allow CSE majors to work with ECE majors.

EE 300, 309, 320: These courses, also required of all CSE majors, are more concerned with analog circuits and hence do not directly involve architecture issues. Nevertheless, they do add to the general circuit-level intuitions and knowledge of the students; and they also allow CSE majors to work with students in other majors.

2.2 Relation of the courses to the rest of the CSE program

CIS 360 is required of all students (both CSE majors and CIS majors). The course is usually taken immediately after students have completed the software spine (CIS 221, 222, 321); some students take it concurrently with CIS 222. Students pursuing a minor in CIS and following the Programming and Algorithms track are also required to take the course. CIS 360 is a prerequisite for the keystone system software design course (CIS 560) as well as CIS 675.

CIS 675 is required of all CSE majors and all BS CIS majors (for BA CIS majors, it is an elective). Math 366 and CIS 360 (or EE 265) are prerequisites for the course. CIS 675.01 also has EE 261 as a prerequisite. This course is a prerequisite for CIS 660 and CIS 775.

CIS 676 is required of BS CSE majors in the Hardware/Software option and is an elective for other majors.

EE 206, 261, 567, as noted above, primarily serve to provide circuit-level and chip-level understanding of architecture issues discussed in CIS 360, 675, etc.

With respect to the other courses, CIS 675 is a prerequisite for CIS 775 which in turn is a prerequisite for CIS 875. CIS 541 (Numerical Methods) and Math 568/571/601 (Linear Algebra) are prerequisites for CIS 621 which in turn is a prerequisite for CIS 721.

In summary, the courses in this group provide students with a solid grounding in principles and concepts of computer architecture. There are some important connections between the courses in this group, in particular CIS 360 and 675, and other courses such as CIS 560, 655, 660, etc.; these connections enable students to see how architecure concepts influence and are in turn influenced by developments and ideas in other parts of Computer Science.

2.3 Relation to CSE and ABET objectives

This group of courses strongly contributes toward meeting certain of the CSE objectives and certain of the ABET Criterion 3 objectives.

2.3.1 CSE Objectives

  1. Graduates will have a thorough grounding in the key principles and practices of computing, and will have applied their software development skills and knowledge of foundational principles to the design and implementation of practical systems consisting of software and/or hardware components to meet customer requirements.
    Students will:
    1. Demonstrate proficiency in the areas of software design and development, algorithms, operating systems, programming languages, information systems, and computer architecture.
    2. Demonstrate proficiency in relevant aspects of mathematics, including discrete mathematics and probability, as well as electrical circuits and devices.
    3. Successfully apply these principles and practices to a variety of problems.

    Given the foundational role that architecture plays in computing, the courses in this group make a strong contribution toward this objective and toward achieving each of the listed outcomes. Specifically, CIS 360 and 675, both of which are required of all CSE [and BSCIS] majors, by discussing computer architecture principles in detail and by testing students on this knowledge in assignments and exams, ensure that students demonstrate proficiency in computer architecture. Both these courses also require students to apply principles of discrete mathematics (675 requires Math 366 as a prerequisite course). In EE 567 students build simple microprocessor systems by relying on knowledge and skills from both CIS 360 (which gives them a programmer-level view of the machine) and EE 206 and 261 (which gives them a knowledge of digital circuits and devices). CSE majors who choose CIS 778 as their capstone course apply the knowledge and skills of all of these courses in designing moderately complex systems involving realistic constraints and following industry-standard practices.

  2. Graduates will have an understanding of additional engineering principles, and the mathematical and scientific concepts that underlie them, and will have applied this understanding, as appropriate, in analyzing real-world problems and designing suitable solutions.
    Students will:
    1. Demonstrate an understanding of differential and integral calculus, and of statistics.
    2. Demonstrate an understanding of the basic principles of physics and at least one other laboratory-based science.
    3. Demonstrate an understanding of the basic principles of at least one other engineering discipline in addition to computing and electrical engineering.

    The various electrical engineering courses, EE 206, 261, and 567, as well as EE 300, 309, 320 make an important contribution toward achieving this objective. The latter group of courses apply both principles of physics, as well as of differential and integral calculus, to solve important problems in electrical circuits. The former group, since the courses in that group are concerned with digital rather than analog circuits, do not depend as much on differential and integral calculus, but they too require a good understanding of the principles of physics.

  3. Graduates will have an understanding of human and social issues, and will be in the process of becoming informed and involved members of their communities, and responsible engineering and computing professionals.
    Students will:
    1. Demonstrate familiarity with basic concepts and contemporary issues in the social sciences and the humanities.
    2. Demonstrate an understanding of social, professional and ethical considerations related to engineering in general and to computing in particular.

    The courses in the architecture group do not make any direct contribution toward this objective. The one exception is CIS 778; the semi-realistic design projects in this course allow students to consider professional engineering issues to a limited extent. But in an indirect fashion, the architecture group does contribute to this objective. Interested students will also be able, given the knowledge and skills acquired in these courses, to explore on their own the evolution of computer architecture that has had an enormous social impact and that has in turn been driven by the demands of the many possible applications of computers in society.

  4. Graduates will have appropriate interaction and organizational skills, and will be routinely using and further developing these skills in their professional careers.
    Students will:
    1. Demonstrate an ability to work effectively in teams.
    2. Demonstrate an ability to communicate effectively.

    The EE courses, especially EE 206 and 567, provide CSE students the opportunity to work in teams of 2 to 4 students each. These courses, as well as the other EE courses, also allow the students to improve their ability to work with students from other majors, thereby contributing toward their "multidisciplinary" skills. CIS 778, like other capstone courses, requires students to work in teams on medium-sized design projects, and also requires students to produce extensive documentation, as well as to make oral presentations and to attend presentations of other students.

  5. Graduates will be successfully employed in the computing profession, and will be actively engaged in learning, understanding, and applying new ideas and technologies as the field evolves; or will have successfully completed, or be actively pursuing, graduate studies in computing.
    Graduates will:
    1. Find suitable positions in industry and government that offer the prospect of challenging and rewarding careers in computing.
    2. Demonstrate an ability to acquire new knowledge in the computing discipline and to engage in life-long learning.
    3. [Graduates with an aptitude for, and interest in, graduate studies will] Apply to and be accepted for entry by strong graduate programs in computing.

    CIS 360 and 675 provide essential understanding of computer architecture that will help all CSE and CIS majors throughout their careers. First, they enable the students to have a good understanding of current architectures that will help them choose the one best suited for specific projects they may be part of in their professional careers. Second, the basic grounding in architecture that these courses provide will enable them to understand and make effective use of newer architectures throughout their careers. The more advanced courses, such as 621, 721, and 775, will enable students to address the most challenging architecture- and high-performance-related questions they might encounter in their carrers. These courses also prepare students for advanced studies by exposing them to current research developments. CSE majors who choose CIS 778 as their capstone course get trained in chip-level design using standard industry practices. Thus the group as a whole contributes extensively to meeting this objective and these outcomes.


Note: Since CIS 875 is a graduate course and taken only by graduate students, we do not discuss it in this report. Similarly, we focus on 675.01 (which is intended for CSE majors) rather than 675.02 (intended for CIS majors).


Summary of Relation to CSE Objectives

Course no. CSE
I.i
CSE
I.ii
CSE
I.iii
CSE
II.i
CSE
II.ii
CSE
II.iii
CSE
III.i
CSE
III.ii
CSE
IV.i
CSE
IV.ii
CSE
V.i
CSE
V.ii
CSE
V.iii
CIS 360
XXX XX XX         X     X X  
CIS 675.01
XXX XXX XX X       X     XX XX XX
CIS 676
XXX X XX X       X     XXX XXX X
CIS 621
XXX XXX XX XX X           XXX XX XX
CIS 721
XXX XXX XXX XX X X         XXX XXX XXX
CIS 775
XXX XXX XXX XX       X     XXX XXX XXX
CIS 778
XXX XXX XXX         XX XX* XX* XXX XXX XXX
EE 206,
261, 567
XXX XXX XXX         X X X XX XX  
EE 300,
309, 320
  XX XX XX XX       X**     X  
*Changes are currently planned in CIS 778 (see below) to improve both the teamworking aspects as well as effective communications component of this course.
**Although there are no team projects in these courses, the fact that CSE majors take these courses along with majors from many other engineering disciplines helps contribute to the multidisciplinary aspects of these courses which in turn should help improve our students' teamworking skills.

2.3.2 EC 2000 Criterion 3:

EC 2000 Criterion 3 requires that Engineering programs must demonstate that graduates have:
  1. an ability to apply knowledge of mathematics, science, and engineering
  2. an ability to design and conduct experiments, as well as analyze and interpret data
  3. an ability to design a system, component, or process to meet desired needs
  4. ability to function on multi-disciplinary teams
  5. an ability to identify, formulate, and solve engineering problems
  6. an understanding of professional and ethical responsibility
  7. an ability to communicate effectively
  8. the broad education necessary to understand the impact of engineering solutions in a global and societal context
  9. a recognition of the need for, and an ability to engage in life-long learning
  10. a knowledge of contemporary issues
  11. an ability to use techniques, skills, and modern engineering tools necessary for engineering practice.

The courses in the architecture group contribute strongly to 3.a, 3.b, 3.c, 3.e, and 3.k. They contribute moderately to 3.d, 3.g, and 3.i. They contribute to a small extent to 3.f, 3.h, and 3.j. In each of CIS 360, 675, 676, 621, 721, 775, 778, and EE 206, 261, 567, students are required to apply knowledge of mathematics, computing, and general engineering ideas to solve a range of problems. Knowledge of science, specifically physics principles, play an important role in EE 300, 309, and 320. It should be noted that 3.b in the context of computing needs special interpretation. Since computing is not a natural science, there are no "experiments" to conduct in the natural science of the word. What comes closest to the notion of experiments is building software or hardware systems and studying their behavior and performance. This is a key part of nearly every one of the courses in the group. All of these courses require students to formulate specific engineering problems and design systems to solve them. And students use state-of-the art tools and techniques in these courses. One point to note though is that, in order to allow attention to be focused on specific questions, the problem and/or the techniques and tools may be artificially simplified, leaving out some details that may be present in actual practice. As may be expected, the more advanced courses such as CIS 721, 775, and the capstone course CIS 778, tend to deal more frequently with realistic problems and situations.

The ability to function on multidisciplinary teams (3.d) is perhaps addressed most effectively by EE 567 since these courses include both CSE majors and ECE majors and students work in teams to build and experiment with microprocessors. The other EE courses also contribute toward the multidisciplinary aspect since CSE majors take these other courses also alongside majors from other disciplines. CIS 621 and 721 also contribute to an extent toward the multidisciplinary aspect since these courses are focused on parallel computing and the applications tend to be from physics and other natural sciences; thus these courses tend to attract a broad audience. CIS 778 also helps in this regard since a number ECE majors, including many graduate students, typically take this course.

CIS 778 contributes strongly to 3.g. This is only to be expected since it is a capstone course. However, currently, 778 has no requirement of oral presentations by students. The next offering of the course, in Au '04 will include such a requirement. Team working as well as written documentation requirements will also be beefed up in the course. With these changes, CIS 778, should contribute strongly to 3.g and 3.d.

The contribution to 3.i, life-long learning is a natural result of the fact that the architectures of many different machines are studied in these courses. Students also get a good feel for how the technology has evolved over the decades from discrete components to VLSI chips, as well as the evolution in the system-level architecture of machines. Such comparative study encourages students to be interested in how the field changes and should contribute to their interest in life-long learning. Since the courses, to a small extent, discuss the widespread and varied uses of computers in society, also contribute to the student's understanding of such matters as engineering's impact on society.


Summary of Relation to EC 2000 Criterion 3 items

Course no. EC 2000
3.a
EC 2000
3.b
EC 2000
3.c
EC 2000
3.d
EC 2000
3.e
EC 2000
3.f
EC 2000
3.g
EC 2000
3.h
EC 2000
3.i
EC 2000
3.j
EC 2000
3.k
CIS 360
XX
XXX
XXX
 
XX
X
 
X
X
 
XX
CIS675.01
XX
XXX
XX
 
XX
X
 
X
X
 
XX
CIS 676
XX
XX
XX
 
XX
XX
 
X
XX
X
XX
CIS 621
XXX
XX
XX
X
XX
X
 
X
XX
 
XX
CIS 721
XXX
XXX
XXX
X
XXX
X
 
X
XX
X
XXX
CIS 775
XXX
XXX
XXX
 
XXX
X
 
X
XX
 
XXX
CIS 778
XXX
XXX
XXX
XXX
XXX
XX
XXX
XX
XXX
X
XXX
EE 206,
261, 567
XXX
XXX
XX
XX
XX
X
X
X
X
 
XX
EE 300,
309, 320
XXX
XX
XX
XX
XX
 
 
X
X
X
XX

2.4 Feedback

The principal vehicle for feedback about the course has been the standard SETs in individual courses. These have generally been positive.

There have been some concerns with respect to CIS 360. CSE majors have complained that since this course focuses on a different machine than the one discussed in EE 265, they find themselves at a disadvantage compared with ECE majors when they take EE 567 since that course is based on the same machine as the one discussed in EE 265. Possible solutions to this problem are being looked into (see next section).

Relatively few CSE students (including those pursuing the hardware/software option), take CIS 778 as their capstone course. The few that do, seem to enjoy the course. We may want to consider developing another course that has a hardware component but is at a somewhat higher level than VLSI chip design (which is the focus of 778) as another capstone option for students interested in hardware and interfacing issues. One possibility might be to develop a revised version of CIS 776 which is not currently being taught. Faculty resource is, of course, an issue in any such plan.

2.5 Possible changes

Two main changes are being considered. The first has to do with the problem of CIS 360 not quite preparing students for EE 567. There are two possible approaches to this. First, we could consider teaching two versions of CIS 360, one for CSE majors the other for CIS majors. The latter would be essentially identical to what CIS 360 currently is. The former would be taught somewhat differently, possibly based on the same machine that is used in EE 265 (which is the alternate prerequisite for EE 567 which the ECE majors take). This would be similar to the approach used in CIS 675. The main problem with this approach is that course scheduling becomes less flexible and it would increase the workload on faculty since two versions will have to be taught.

The second approach would be to teach only one version of CIS 360 but make some changes in its content. The changes would essentially be to replace some material that is currently in the course with a discussion of the machine that is used EE 265, and a comparison of that machine with the one currently used in CIS 360. Such a change would not only better prepare the students for EE 567, but will also, given the comparison between the two machines, help the students better understand both machines. One topic that is currently included in CIS 360 that might be eliminated to make room for such an addition is detailed discussion of subroutines are handled, including discussion of various parameter modes and recursion. (Note that this topic is also discussed in some later courses such as CIS 655 so this should not cause any major problems.) We will explore these options shortly.

The second main change being considered is revising CIS 778 to enable it to better serve as a capstone design course. Currently, VLSI design projects is the main focus of the course, and that will continue. The change will mainly be to strengthen the communications component, including requiring every student to make oral presentations; and to stregthen the team working component. Having the students work on the design projects in teams of three or four rather than individually should enable them not only to learn from and build on each other's technical skills leading to better designs, but also help each other's communication abilities. These are, of course, key goals of the capstone design course, and the planned changes (to be implemented the next time the course is offered, in Au '04) should make CIS 778 a better capstone design course.

3. Conclusions

The Computer Architecture Group is a key part of the CSE program and helps us meet a number of objectives of the CSE program as well as a number of EC 2000 Criterion 3 requirements. The required courses in the group provide students with essential knowledge and intuition concerning how computers work at the hardware level and how standard system-level software works. The elective courses equip interested students with more advanced and more detailed knowledge of current machines as well as an appreciation of how architecture has evolved over the years, and allow them to engage in design projects using standard industry practices and tools. All of this prepares them for both advanced study as well as for professional careers.

The courses, as they stand, are doing reasonably well. Changes are planned in CIS 360 and CIS 778 to further improve the courses.
 

Course no. Coordinator Recent Instructors
CIS 360 Heym Bair, Heym, Parent, ???
CIS 675 Babic ???
CIS 676 Liu ???
CIS 621 Sadayappan ???
CIS 721 Panda ???
CIS 775 Parthasarathy ???
CIS 778 Sadayappan Sadayappan
CIS 875 Panda ???

People involved in preparing report:

Date of report: June 20, 2004