Science Building I, 412
(661) 665-6960 (fax)
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.
The Computer Science Department administers
its own local area network which includes one large Alpha Server 4100 (Digital
Unix 4.0 operating system), one VAX 6520 (Ultrix 4.4 operating system),
several Unix workstations (Alphastations, SGI-Indys, and SUN Sparcs) with
21" monitors, a similar number of Linux-based PC’s and 50 Windows NT PC’s.
The machines on this network can be accessed either through departmental
dialup lines, through the campus dialup lines, or through any Internet
provider. The Computer Science Department also has a hardware laboratory
for work with digital circuits, prototyping, and interface design. An important
goal of the Department is to enable students to work more closely with
faculty (particularly at the system level with a variety of operating systems)
than they would be able to at larger universities.
REQUIREMENTS FOR DEGREES IN COMPUTER SCIENCE
Core Courses (43 units)
Required Courses (15 units)
Elective Courses (15 units)
Other Courses (35 units)
TOTAL (108 units)
Core Courses (43 units)
Required Courses (15 units)
Electives Courses (20 units)
A minor in the desired application area will be required (a minor typically involves at least 20 units of course work).
Other Courses (10 units)
MATH 120 Quantitative Methods
MATH 140 Introduction to Statistics
TOTAL (88 units and a minor in application area)
REQUIREMENTS FOR A MINOR IN COMPUTER SCIENCE
Required Courses (15 units)
CMPS 212 Computer Science I
CMPS 213 Computer Science II
CMPS 290 Advanced Object Oriented Programming
Electives Courses (15 units)
At least two upper division Computer Science courses and one Computer Science course listed 200 or above, except CMPS 430 and CMPS 431. MATH 305 is allowed as a Computer Science elective.COURSE DESCRIPTIONS
TOTAL (30 units)
The Department of Computer Science offers courses on topics of current interest to the community from time to time. Call the Computer Science office (664-3082) to express interest or inquire concerning offerings.
CMPS 120 Computer Skills and Concepts I (5)
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. Prerequisite: None. [F, W, S]
CMPS 121 Computer Skills and Concepts II (5)
A continuation of CMPS 120 going into more depth concerning the operating system and utilities for the IBM PC and compatibles. Extensive use of software packages covered in CMPS 120 will be made. Prerequisite: CMPS 120 or experience with microcomputers.
CMPS 122 The Internet (3)
This course will describe how the Internet works, its uses, and its future. Topics will include communicating via e-mail and listservers, 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: CMPS 120, GST 393, or experience with Microsoft Windows. [F, W, S]
CMPS 130 BASIC Programming (3)
An introduction to structured problem solving on microcomputers using the BASIC programming language. Prerequisite: None. (CAN CMPS 6)
CMPS 140 FORTRAN Programming (5)
An introduction to structured problem solving and scientific programming using the FORTRAN language. Prerequisite: None. (CAN CSCI 4)
CMPS 212 Computer Science I (5)
The primary goal of this course is to introduce students to structured problem solving and programming. Prerequisite: MATH 120 or 191. [F, W]
CMPS 213 Computer Science II (5)
Continuation of CMPS 212 with emphasis on data representations and processing techniques including linked lists, trees, and the use of recursion. Prerequisite: CMPS 212. [W, S]
CMPS 215 Introduction to UNIX (3) (Formerly CMPS 291)
The systems interface and C. Use of the run-time library. Shell programming. Prerequisite: CMPS 212. [W]
CMPS 220 Assembly Language Programming (5)
Introduction to machine architecture and an assembly language. Prerequisite: CMPS 212. [F, S]
CMPS 277 Topics in Programming Languages (1-3)
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.
CMPS 280 X-Windows (3)
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 administering an X-Workstation with Internet access. [F]
CMPS 290 Advanced Object Oriented Programming (5)
This course will explore the concepts of the object-oriented programming (OOP) methodology using an appropriate language such as C++ or Java. Prerequisite: CMPS 213. [S]
CMPS 294 Advanced Java Programming (5)
This course will deal with object-oriented
programming (OOP) and the various class libraries in Java in the form of
both applications and applets. The Graphic User Interface (GUI) applications
will be discussed using the AWT component library and event handling methods
in Java. The following advanced Java topics will be addressed: File I/O,
networking, multimedia, and database connectivity. Prerequisite: CMPS 290.
CMPS 300 Discrete Structures (5)
Elementary logic and set theory, functions and relations, induction and recursion, elementary algorithm analysis, counting techniques, graphs and introduction to computability. Prerequisite: CMPS 213. [F]
CMPS 305 Numerical Analysis (5)
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: CMPS 140 or CMPS 212 and MATH 213 or permission of instructor. Cross-listed as MATH 305: Numerical Analysis.
CMPS 311 Data and File Structures (5)
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: CMPS 213. [F]
CMPS 315 Systems Programming (5)
Introduction to various system software including assemblers, linkers and loaders, text editors, and compilers. Prerequisite: CMPS 220. A knowledge of C is recommended.
CMPS 320 Logic Design (5)
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: CMPS 220 or consent of instructor. [W]
CMPS 321 Computer Architecture (5)
Discussion of the principles of processor organization, machine instructions, addressing modes, memory management, and input/output operations. Prerequisite: CMPS 290 and 320. [S]
CMPS 350 Programming Languages: Design and Implementation (5)
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, procedures invocation, context, binding, and modularity. Prerequisites: CMPS 220 and 290. [S]
SCI 350B Computers and Society (5)
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 to 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. Satisfies Theme 1 of the upper division General Education requirement.
CMPS 360 Operating Systems and Systems Software (5)
A study of the introductory concepts in operating systems including file management, memory management, device management, process management, and concurrency problems. Prerequisite: CMPS 290. [W]
CMPS 370 Structured System Design (3)
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: CMPS 290. [W]
CMPS 410 Theory of Language Translation (5)
A study of techniques relevant to the theory of language translation including finite state machines, formal languages, grammars, lexical and syntactic analysis. Prerequisite: CMPS 290.
CMPS 411 Algorithm Analysis (5)
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: CMPS 290. [F]
CMPS 420 Advanced Logic Design (5)
A continuation of CMPS 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: CMPS 290 and 320.
CMPS 421 Advanced Computer Architecture (5)
Continuation of CMPS 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: CMPS 321. [S]
CMPS 430 Computer Science for Educators (5)
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.
CMPS 431 Issues and Trends in Computer Science Education (3)
Issues and trends in Computer Science education including course-authoring languages, hardware and software developments. Prerequisite: CMPS 430 or equivalent. [F, W, S]
CMPS 440 Database Systems (5)
Basic issues in modeling and the development and implementation of database systems. Investigation and application of various data models: relational, hierarchical, and network. Query languages. Database integrity and security problems. Case studies of important database management systems. Prerequisite: CMPS 290, 300, and 311. [W]
CMPS 441 Software Engineering (5)
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: CMPS 290 or CMPS 370.
CMPS 450 Compiler Construction (5)
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: CMPS 290 or CMPS 350.
CMPS 455 Introduction to Artificial Intelligence (5)
This course is intended to teach the fundamentals of artificial intelligence, including special AI problem solving techniques, searching, heuristic methods and knowledge representation. Prerequisite: CMPS 290.
CMPS 460 Advanced Operating Systems (5)
A continuation of CMPS 360. Implementation techniques of the UNIX system on a machine; implementation of inter-process 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. Prerequisites: CMPS 215 (formerly CMPS 291) and 360.
CMPS 470 Interactive Computer Graphics (5)
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: CMPS 220 or 290. [S]
CMPS 475 Computer Networks (5)
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: CMPS 290 and 311. [F Alternate years]
CMPS 477 Special Topics in Computer Science (1-5)
This course will often be used to supplement other courses with additional work at a more advanced level. Prerequisite: Consent of Instructor.
CMPS 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 CMPS 212, CMPS 213, and CMPS 220 and have the approval of the department.
CMPS 490 Senior Project and Seminar (5)
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 the 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. [S]
CMPS 496 Internship in Computer Science (1-5)
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 course instructor), working with the field supervisor. Offered on a credit, no-credit basis only. The department will determine credits and application of credit.
CMPS 497 Cooperative Education (5)
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 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.