1. Describe in what respect, if at all, the philosophy and direction of computer science education has changed at your institution during the last five years (or since the last evaluation, whichever is the shorter duration).
In 1997, the Department
received a CSU System Grant for $35,000 to undertake the ROOT
(Refashioning Object Oriented Technology Teaching) project. This project
involved the entire faculty of the Department in implementing a curricular change
to adopt OO in the BS Computer Science Program. It was recognized as well as,
in other CS departments, that teaching mere C++ to computer science students
does not mean they will acquire the OO analysis and design philosophy. Although
the Department decided to adopt C++ in 1994, we noticed that the students are
writing the programming projects in the upper division courses in the structured
approach and not in the OO approach as desired. Instead of overloading our CSCI
201 and 202 with topics concerning OOA/D using UML or adding another core course
that teaches this topic, the ROOT Project came out with an innovative way of
integrating OOA/D in the curriculum.
The topic of OOA/D using UML were integrated in five undergraduate Computer
Science courses:
The topic of OOA/D using UML were integrated in five undergraduate Computer Science courses :
| CSCI 201 | Computer Science I |
| CSCI 202 | Computer Science II |
| CSCI 320 | Programming Languages |
| CSCI 330 | Data Structures |
| CSCI 350 | File Systems |
CSCI 201 is the first course in the curriculum. The students are introduced to the UML Class Diagrams. This is done by briefly explaining the diagram, its meaning, and its usefulness, and by making the diagram a required element in their programming assignments.
In CSCI
202 the UML Class Diagrams notations for inheritance, aggregation, and composition
are introduced . The students are taught the principles of generalizations,
specializations, inheritance, aggregation and composition.
CSCI
320 covers a variety of programming paradigms. The goal is to help students
to understand programming language issues and introduce them to a variety of
syntax and semantics. We taught UML in this course, as a way to describe the
semantic structure of languages. The syntax can be presented in extended forms
of Backus-Naur Form and then we tackle semantic issues using the UML.
In CSCI
330, the students learn about abstract data types, sorting algorithms searching
algorithms, string processing, and tree and graph algorithms. The students learn
how to apply OOA/D using UML in the solution of small projects involving abstract
data types. They are taught to go through an OOA/D phase before implementing
their project in C++.
CSCI 350 is a preparatory
course to the database course. It involves a single programming project where
the students are grouped into teams. In this course, the students are expected
to use a complete OOA/D methodology , which consists of the following steps
:

The students at this point
have all the knowledge of applying OOA/D methodology using UML to their 400-level
and above programming projects.
The ROOT Project produced the website: http://www.csci.csusb.edu/rootproj
that contains all the exercises and suggested projects for the courses: CSCI
201, 202,
320, 330,
and 350. The result of the
ROOT Project was published in [1], see appendix
XXIX.![]()
2. Describe any major developments and/or progress made in connection with the program in the last five years (or since the last evaluation, whichever is the shorter duration) that is not included in your response to I.C.
The most significant changes
are in the capstone courses CSCI 401,455
and 460. These courses are
in the core and they represent the culmination of the student's studies in the
hardware, software, and operating systems.
In 401
there were two significant improvements. The first is changing the laboratory
from VLSI layout to design using Magic to designing and simulation using Verilog.
This change greatly improved the understanding of VLSI circuits through very
easy compliable hardware definition language. Magic is cumbersome because of
the need to draw colored geometric figures that the students have a hard time
to understand. Using the Verilog programming language improved their understanding
of VLSI circuits and gave them an opportunity to know an industry standard hardware
definition language.
The second change is changing
the textbook from J.P. Hayes to Patterson and Hennessy's "Computer Organization
and Design: The Hardware /Software Interface". This text was a great improvement
and it discuses significant contributions of pipelining, branch predictions,
and co-designing compilers and architectures to the improvement of processor
performance. For those students wishing to take advance computer architecture,
CSCI 510, the textbook by Hennessy and Paterson "Computer Architecture
Quantities Approach " is used. The students are able to analyze and understand
how performance is measured.
In 455,
the software development process that was used to produce the class project,
Algorithma, is structured approach . In 1998, the software development process
used is object-oriented approach. This change was brought about by the decision
of the Department to adopt OO paradigm in the entire computer science curriculum.
Algorithma is an algorithm animation project and has been an ongoing project
since 1991. The students taking the course inherits the previous years entire
software artifacts in order to maintain the project. This change was significant
because the students are able to have an opportunity to maintain very large
software and get an experience in working as a team. The success of CSCI 455
project-based course was reported for three consequcutive years at the SIGCSE
Symposium [1,2,3], see Appendix
XI.
In CSCI 460, the change
was for the text-book from Tanenbaum "Operating Systems: Design and Implementation"
to Silberschatz, Galvin and Gauge " Applied Operating
System Concepts" Using
Tanenbaum, the project centers around the study of Minix which is written in
C. Using Silbershatz et. al., the project was changed to a simulation of an
operating system for a hypothetical processor. The project consists of three
parts. The first part is building the virtual machines, then the second part
adds the process management, and the last part is the memory management . The
project is entirely written in C++ and OO approach. Instead of studying code
in C for Minix, the students are able to understand process and memory management
because they have to build one. This change also aligns with the decision of
the Department to adopt OO paradigm.
The database courses: CSCI
572 and CSCI 580
have Oracle certification for database administrators. This was made possible
through an Oracle partnership contract headed by a faculty in the Department,
see Appendix XXVII
.
The Department had a meeting
with the Department of Mathematics in Spring 2001 to discuss how mathematical
foundations of proving be incorporated in the course Math 272 (Discrete Mathematics).
We also suggested that Math 372 (Combinatorics) be a prerequisite to CSCI 431
( Algorithm Analysis ). These changes are recommended to improve the student's
maturity in the techniques of prooving in CSCI 431.