1995 - 1997 Catalog CSUB for 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 and the Computer Science Accreditation Board, 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 and a Cyber and are 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:

A. 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
42  units    CS 213     Computer Science II
             CS 220     Assembly Language
             CS 290     Programming in C
             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 339    Statistics
              OR MATH 340  Probability
             PHYSICS 221  Newtonian Physics
             PHYSICS 222  Maxwellian Physics
TOTAL       (107 units)

B. Application Software Track

(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
40  units    CS 213     Computer Science II
             CS 220     Assembly Language
             CS 290     Programming in C
             CS 300     Discrete Structures
             CS 311     Data and File Structures
             CS 350     Programming Languages
             CS 360     Intro. Operating Systems


REQ'D
(15 units)   CS 370	System Analysis/Design
             CS 440     Database Systems
             CS 490     Senior Project/Seminar

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.


MINOR        Also a minor in the desired application
	     area will be required

OTHER        MATH 120    Quantitative Methods
(10 units)   MATH 140    Intro. to Statistics

Total (78 units and a minor in application area)

C. Minor Program

CATEGORY   COURSE NO.   ABBREVIATED TITLE
CORE         CS 212     Computer Science I
20  units    CS 213     Computer Science II
             CS 220     Assembly Language
             CS 290     Programming in C

ELECT
(10)         Any CS course except 120, 121, 170,
	     430, 431, 496, and 497.  The 10 units must
	     include at least 2 upper level courses.
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 130 (3). BASIC ProgrammingAn introduction to structured problem solving on microcomputers using the BASIC programming language. Prerequisite: None.

Computer Science 140 (5). FORTRAN ProgrammingAn introduction to structured problem solving and scientific programming using the FORTRAN language. Prerequisite: None.

Computer Science 160 (5). COBOL ProgrammingAn 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. (3) 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)Introduction to programming in the C language in the UNIX environment. UNIX tools associated with C programming will be covered. Prerequiste: programming in a high level language such as Pascal or consent of instructor. Computer Science students are encouraged to take this course immediately after CS 213.

Computer Science 291 (2). Introduction to UNIX The systems interface and C. Use of the run-time library. Shell programming. Prerequisite: CS 290.

Computer Science 292 (3). Object Oriented Programming with C++ Introduction to the object--oriented programming (OOP) methodology. This course will address the basic concepts of object--oriented programming such as data encapsulation, inheritance and function overloading. The C++ programming language for supporting object--oriented programming will be covered in detail. Prerequisite: CS 290.

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 290 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 (5). 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 (4). 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 (4). 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.