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:

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.

Tue Nov 19 02:28:59 PST 1996

Back to Computer Science Homepage