Course no. | Title | Credit
Hours |
Reqd - Core (R)/ Reqd - Option (O)/ Elective (E) |
Capsone? |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
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.
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.
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.
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.
Students will:
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.
Students will:
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.
Students will:
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.
Graduates will:
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.
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
XXX | XX | XX | X | X | X | |||||||
|
XXX | XXX | XX | X | X | XX | XX | XX | |||||
|
XXX | X | XX | X | X | XXX | XXX | X | |||||
|
XXX | XXX | XX | XX | X | XXX | XX | XX | |||||
|
XXX | XXX | XXX | XX | X | X | XXX | XXX | XXX | ||||
|
XXX | XXX | XXX | XX | X | XXX | XXX | XXX | |||||
|
XXX | XXX | XXX | XX | XX* | XX* | XXX | XXX | XXX | ||||
261, 567 |
XXX | XXX | XXX | X | X | X | XX | XX | |||||
309, 320 |
XX | XX | XX | XX | X** | X |
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.
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 |
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261, 567 |
|
|
|
|
|
|
|
|
|
|
|
309, 320 |
|
|
|
|
|
|
|
|
|
|
|
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.
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.
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