1997 - 1999 CSUB Catalog
Computer Science
Computer Science is a new and rapidly evolving discipline. To quote the Association for Computing Machinery, ``Computer Science is not simply concerned with the design of computing devices-nor is it just the art of numerical calculation... Computer Science is concerned with information in much the same sense that Physics is concerned with energy; it is devoted to the representation, storage, manipulation, and presentation of information in an environment permitting automatic information systems."
The Computer Science major at CSUB has two tracks. The Hardware and Systems Software track follows the guidelines recommended by the Association for Computing Machinery. This track covers both the theoretical and technical aspects of the discipline. It is also designed to prepare students for graduate study in Computer Science. The Application Software track is less theoretical and more application oriented and is primarily designed for those students who will either work as application programmers or who wish to apply Computer Science in another discipline. A Computer Science minor is also offered.
A wide range of computing facilities are available to students at CSUB. The campus mainframes include a VAX is accessible from a variety of areas on campus through the broadband campus network. The Computer Science Department has its own local area Ethernet on which reside a number of workstations. These workstations are accessible from the Departmental IBM PCs in our software lab and from microcomputers throughout the campus. We also have a hardware lab for breadboarding, prototyping, and system design.
Requirements for degrees in Computer Science are:
Hardware and Systems Software Track
( THIS TRACK FOLLOWS THE GUIDELINES OF THE ASSOCIATION FOR COMPUTING MACHINERY (ACM). STUDENTS WILL NORMALLY DIFFERENTIATE BETWEEN HARDWARE AND SYSTEMS SOFTWARE IN THEIR ELECTIVES.)
CATEGORY | COURSE NO. | ABBREVIATED TITLE |
CORE | CS 212 | Computer Science I |
(43 units) | CS 213 | Computer Science II |
CS 220 | Assembly Language | |
CS 290 | Object Oriented Programming | |
CS 291 | Introduction to UNIX | |
CS 300 | Discrete Structures | |
CS 311 | Data and File Structures | |
CS 350 | Programming Languages | |
CS 360 | Intro. Operating Systems | |
REQ'D | CS 320 | Logic Design |
(15 units) | CS 321 | Computer Architecture |
CS 490 | Senior Seminar/Project | |
ELECT.
(15 units) |
Allowable electives are any CS course listed 200 or above, except CS 310, CS 430, and CS 431. Math 305 is allowed as a CS elective. | |
OTHER | MATH 201 | Calculus I |
(35 units) | MATH 202 | Calculus II |
MATH 203 | Calculus III | |
MATH 330 | Linear Algebra | |
MATH 338 | Analysis of Variance | |
OR MATH 339 | Statistics | |
OR MATH 340 | Probability | |
PHYSICS 221 | Newtonian Physics | |
PHYSICS 222 | Maxwellian Physics | |
TOTAL | ||
(108 units) |
(THIS TRACK IS INTENDED FOR TRAINING APPLICATION PROGRAMMERS OR FOR THOSE WHO WISH TO APPLY COMPUTER SCIENCE IN ANOTHER DISCIPLINE)
CATEGORY | COURSE NO. | ABBREVIATED TITLE |
CORE | CS 212 | Computer Science I |
(43 units) | CS 213 | Computer Science II |
CS 220 | Assembly Language | |
CS 290 | Object Oriented Programming | |
CS 291 | Introduction to UNIX | |
CS 300 | Discrete Structures | |
CS 311 | Data and File Structures | |
CS 350 | Programming Languages | |
CS 360 | Intro. Operating Systems | |
REQ'D | CS 370 | System Analysis/Design |
(13 units) | CS 440 | Database Systems |
CS 490 | Senior Project/Seminar | |
ELECT.
(20 units) |
Allowable electives are any CS course listed 200 or above, except CS 310, CS430, and CS 431. MATH 305 is allowed as an CS elective. | |
MINOR | Also a minor in the desired application area will be required ( a minor typically involves at least 20 units of course work). | |
OTHER | MATH 120 | Quantitative Methods |
(10 units) | MATH 140 | Intro. to Statistics |
TOTAL | plus minor in application area | |
(86 units) |
CATEGORY | COURSE NO. | ABBREVIATED TITLE |
REQ'D | CS 212 | Computer Science I |
(15 units) | CS 213 | Computer Science II |
CS 290 | Object Oriented Programming | |
ELECT. (15 units) | elective units from : At least two upper division Computer Scinece courses and one Computer Science course listed 200 or above, except CS 310, CS 430, and CS 431. Math 305 is allowed as a CS elective. | |
TOTAL | ||
(30 units) |
Computer Science 120 (5). Computer Skills and Concepts I
Instruction and tutoring in basic computer skills, designed for
students with little or no background in Computer Science. An
overview of computer applications including word processors,
spreadsheets and databases. This course includes hands-on
experience with microcomputers. Students often follow up this
course with CS 121 or with a programming course. Prerequisite:
None.
Computer Science 121 (5). Computer Skills and Concepts II
An in-depth study of DOS commands and utilities for the IBM PC and
compatibles. Topics will include disk management, writing batch
files, and creating menus. Extensive use will be made of software packages
covered in Computer Science 120. Prerequisite: CS 120
or experience with microcomputers.
Computer Science 122 (3) The Internet
This course will describe how the
Internet works, its uses, and its future.
Topics will include communicating via email and listservs,
obtaining information using FTP, Gopher, Usenet news, and
the World Wide Web, and creating your own home pages.
Issues of security, hacking, and privacy will also be discussed.
Prerequisites: CS120, CS393, or experience with MicroSoft Windows.
Computer Science 130 (3). BASIC Programming An introduction to
structured problem solving on microcomputers using the BASIC
programming language. Prerequisite: None.
Computer Science 140 (5). FORTRAN Programming An introduction to
structured problem solving and scientific programming using the
FORTRAN language. Prerequisite: None.
Computer Science 160 (5). COBOL Programming An introduction to
structured COBOL programming and business problem solving.
Discussion of file processing and information retrieval as it is
related to a COBOL environment. Prerequisite: Familiarity with a
computing environment or consent of the instructor. This course is
equivalent to MIS 250.
Computer Science 170 (3). RPG Programming
Introduction to RPG II
and RPG III programming. Prerequisite: Familiarity with a
computing environment or consent of instructor.
Computer Science 212 (5). Computer Science I The primary goal of
this course is to introduce students to structured problem solving
and programming with a modern high-level block structured
programming language such as Pascal, Ada or Modula-2.
Prerequisite: Math 192 or Math 120.
Computer Science 213 (5).
Computer Science II Continuation of
Computer Science 212 with emphasis on data representations and
processing techniques including linked lists, trees, and the use of
recursion. Prerequisite: Computer Science 212.
Computer Science 220 (5). Assembly Language Programming
Introduction to machine architecture and an assembly language.
Prerequisite: Computer Science 212
Computer Science 277 (1-3). Topics in Programming Languages
A study of programming languages not offered regularly in other
programming course. Prerequisite: Knowledge of a high-level
programming language or consent of the instructor.
Computer Science 280. X-Windows . This course
is an introduction to the use of an X-Windowing environment.
It is designed more for the end user than for X11 programmers.
Its goal is to familiarize the applications user with the
standard X11 productivity tools as well as explain the underlying
principles, configuration questions, and security considerations
involved in working or administrering an X-Workstation with
Internet access.
Computer Science 290 (5).
Object-Oriented Programming
This course will explore the concepts of the object-oriented
programming (OOP) methodology and discuss the features
of C++ supporting OOP. The extensions of C++ to original
C, such as templates, operator overloading and class libraries
will be covered. Prerequiste: CS 213
Computer Science 291 ( 3). Introduction to UNIX
Computer Science 291 (2) Introduction to UNIX
A user view of the UNIX operating system. Topics include
shell programming and common utilities such as AWK, FIND,
and TAR.
Prerequisite: CS 212.
Computer Science 300 (5). Discrete Structures
Elementary logic
and set theory, functions and relations, induction and recursion,
elementary algorithm analysis, counting techniques, graphs.
Prerequisite: Computer Science 213.
Computer Science 305 (5). Numerical Analysis
Number representation and basic concepts of error; numerical solutions of
nonlinear equations and systems of equations; interpolation and
extrapolation; numerical differentiation and integration; numerical
solution of ordinary differential equations; approximation by
spline functions. Prerequisites: CS 140 or CS 212 and Math 203 or
permission of instructor. Cross listed as Math 305: Numerical
Analysis.
Computer Science 310 (5). Computers and Society
This course will provide a framework for examining the social context and
consequences of information technology. Society, social change and
effects on the individual related tko the use of computers will be
the major concentrations. Emphases will include values, ethics,
patterns, future directions, and relevant theories related to this
phenomenon. Prerequisite: Upper division status.
Computer Science 311 (5). Data and File Structures
Secondary storage devices and memory hierarchy, blocking, data structure
topics relevant to file organization, sequential, hashed, and tree
organized files, external sorting, compaction techniques.
Prerequisite: Computer Science 213.
Computer Science 315 (5). Systems Programming
Introduction to various system software including assemblers,
linkers and loaders,
text editors, and compilers, Prerequisite: CS 220. A knowledge of
C is recommended.
Computer Science 320 (5). Logic Design
An introduction to the logical design of digital computers
including the analysis and
synthesis of combinatorial and sequential circuits, and the use of
such circuits in building processors and memory. This course
includes a 2 1/2 hours per week laboratory devoted to the
implementation and testing of combinatorial and sequential
circuits. Prerequisites: Computer Science 220 or consent of
instructor.
Computer Science 321 (5). Computer Architecture
Discussion of the
principles of processor organization, machine instructions,
addressing modes, memory management, and input/output operations.
Prerequisite: Computer Science 320 and Computer Science 290.
Computer Science 350 (5). Programming Languages: Design and
Implementation
An examination of underlying concepts in high
level programming languages and techniques for the implementation
of a representative sample of such languages with regard to
considerations such as typing, block structure, scope, recursion,
procedure invocation, context, binding, and modularity,
Prerequisites: Computer Science 213 and 220.
Computer Science 360 (5). Operating Systems and Systems Software
A study of the introductory concepts in operating systems including
file management, memory management, device management, process
management, and concurrency problems. Prerequisite: Computer
Science 290.
Computer Science 370 (3). Structured System Design
Consideration of the analysis and design of computer information
systems to
include a systems development life cycle and the use of analysis
design tools. The major goal of the course is the physical design
of a computer information system. Prerequisite: Computer Science
290.
Computer Science 410 (5). Theory of Language Translation
A study of techniques relevant to the theory of language translation
including finite state machines, formal languages, grammars,
lexical and syntactic analysis. Prerequisite: Computer Science
290.
Computer Science 411 (5). Algorithm Analysis
A study of
algorithms as it relates to nonlinear data structures and external
files. Time and space analysis of several popular algorithms, and
a discussion of NP-hard and NP-complete problems. Prerequisite,
Computer Science 290.
Computer Science 420 (5). Advanced Logic Design
A continuation of
Computer Science 320 which discusses the design trade-offs involved
in building a complete computer system. Topics include processor
architectures, bus protocols, memory hierarchy, disk input/output,
communications sub-systems and protocols. This course includes a
2 1/2 hours per week laboratory devoted to implementation of bus
and I/O protocols. Prerequisite: Computer Science 290 and
Computer Science 321.
Computer Science 421 (5). Advanced Computer Architecture
Continuation of Computer Science 321 including speed-up arithmetic
algorithms, vector and parallel processing organization of memory
for high performance processors , and a comparative study of
supercomputer architectures. Prerequisite: Computer Science 321.
Computer Science 430 (5). Computer Science for Educators
Issues, methods and materials typically encountered in the instruction of
elementary and secondary school Computer Science. This course is
designed for students planning to become Computer Science educators
at the elementary and secondary levels. Prerequisite: Knowledge of
a programming language and consent of the instructor.
Computer Science 431 (3). Topics in Computer Science for Educators
Issues and trends in Computer Science education including course -
authoring languages, hardware and software developments.
Prerequisite: Computer Science 430 or equivalent.
Computer Science 440 (5). Database Systems
Basic issues in
modeling and the development and implementation of database
systems. Investigation and application of various data models:
relational, hierarchial, and network. Query languages. Database
integrity and security problems. Case studies of important
database management systems. Prerequisite: Computer Science 290,
Computer Science 300 and Computer Science 311.
Computer Science 441 (5). Software Engineering
This course covers
the basic concepts, techniques, and tools in structured software
design and development including software security, generality,
mobility, reliability, modularity, and feasibility. Prerequisite:
Computer Science 290 or Computer Science 370.
Computer Science 450 (5). Compiler Construction An introduction to the construction of
compilers, including lexical and syntactic analysis, code
generation, and error detection. This course includes a 2 1/2
hours per week laboratory in which students will implement a
compiler for a given programming language. Prerequisite: Computer
Science 311 or Computer Science 350.
Computer Science 455 (5). Introduction to Artificial Intelligence
This course is intended to teach the fundamentals of artificial
intelligence, including special AI problem solving techniques,
searching, heuristic methods and knowledge representation.
Prerequisite: Computer Science 290.
Computer Science 460 (5). Advanced Operating Systems
A continuation of Computer Science 360. Implementation techniques of
the UNIX system on a machine; implementation of interprocess
communication, device drivers, file systems, and memory management.
Some topics related to real-time and distributed operating systems.
Summary of popular systems such as MS-DOS, OS/2 etc. This course
includes a 2 1/2 hours per week laboratory in which students will
study and improve ports of a sample UNIX-like operating system.
Prerequisites: Computer Science 291 and 360.
Computer Science 470 (5). Interactive Computer Graphics
Consideration of graphic display devices, graphics input devices,
related mathematical theory of affine transformations, graphics
software libraries such as GKS, metafile storage of frames,
introduction to projective transformations and 3-dimensional
graphics. This course includes a 2 1/2 hours per week laboratory
in which students implement a small graphics library and write
certain applications programs using the library as the course
progresses. Prerequisite: Computer Science 220 or 290.
Computer Science 475 (5). Computer Networks
A study of computer
networks with regard to the OSI layered approach to network
organization (from the physical to the application level). This
course includes a 2 1/2 hours per week laboratory in which students
work with various workstations and network hardware residing on our
local Ethernet. Prerequisites: Computer Science 290 and 311.
Computer Science 477 (1-5). Special Topics in Computer Science
This course will often be used to supplement other courses with
additional work at a more advanced level. Prerequisite: Consent of
instructor.
Computer Science 489 Experiential Prior Learning (1-5).
Majors in
Computer Science with significant prior experience in computers may
have some of their experience count for academic credit toward
their degree. In order to be considered for experiential learning
credit the student must have completed CS 212, CS 213, and CS 220
and have the approval of the department.
Computer Science 490 (5). Senior Project and Seminar After
consultation with the instructor and investigation of relevant
literature, the student shall prepare a substantial project with
significance in Computer Science. During the latter part of the
quarter, the student will present a project report to the entire
class, explaining the nature of this work. the finished product,
and its relationship to the field, Prerequisites: Major in
Computer Science and completion of at least two 400-level courses
in Computer Science.
Computer Science 496 Internship in Computer Science Internships
may be arranged by the department with various agencies,
businesses, or industries. The assignments and coordination of
work projects with conferences and reading, as well as course
credits, evaluation and grading are the responsibility of the
faculty liaison ( or the course instructor), working with the field
supervisor. Offered on a credit, no-credit basis only. The
department will determine credits and application of credit.
Computer Science 497. Cooperative Education
The Cooperative Education program offers a sponsored learning
experience in a work
setting, integrated with a field analysis seminar. The field
experience is contracted by the Cooperative Education office on an
individual basis, subject to approval by the department. The field
experience, including the seminar and reading assignments, is
supervised by the cooperative education coordinator and the faculty
liaison (or the course instructor), working with the field
supervisor. Students are expected to enroll in the course for at
least two quarters. The determination of course credits,
evaluation, and grading are the responsibility of the departmental
faculty. Offered on a credit, no-credit basis only. The
department will determine application of credit.