COMPUTER SCIENCE (2003-2005 Catalog)
Science Building I, 417(661) 664-3082
Chair: Huaqing Wang
Faculty: W. Chung, M. Coulehan, W. Li, T. Meyer, D. Meyers, J. Moloney, L. Taylor, M. Thomas, H. Wang, A. Wani
Computer Science is a constantly 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 Computer Science track follows the guidelines recommended by the Association for Computing Machinery (ACM) and the Accreditation Board for Engineering and Technology (ABET). The Computer Information Systems track is intended for training application programmers or for those who wish to apply computer science in another discipline. Students in the two tracks will take different advanced courses of their choice. A Computer Science minor is also offered.
The Computer Science Department administers its own local area network, which includes two servers: an AlphaServer 4100 (Tru64 Unix operating system) and a Sun V880 (Solaris operating system). The campus provides a gigabit connection to the Internet, so students have excellent access to these servers from home as long as they have an Internet provider. The department has several laboratories including a Unix workstation lab (AlphaStation 600au, Sun Ultra 60 workstations) and two PC labs (Windows 2000). Students also have the opportunity to work on digital circuits, prototyping, robotics, and interface design. An important goal of the department is to enable students to work much more closely with faculty than they would be able to at larger universities.
Requirements for Degrees in Computer Science
A. Computer Science Track
This track follows the guidelines of the Association for Computing Machinery (ACM) and the Accreditation Board for Engineering and Technology (ABET). Students in this track will take advanced courses of their choice.
CMPS 490 Senior Project
Three courses, two from any one sub-area and a third from any other sub-area:Algorithms and Complexity:
B. Computer Information Systems Track
This track is intended for training application programmers or for those who wish to apply computer science in another discipline.
Or any other 300-400 level computing course taken with the written consent of the program advisor. Courses from other departments relevant to CIS (not exceeding 10 units) may be taken with the written consent of the program advisor. A minor in another department can be used to offset some electives upon approval of a Computer Science Department advisor.
Requirements for a Minor in Computer Science
A grade of C- is the minimal grade acceptable for progression into subsequent computer science courses. Students who fail to achieve at least a C- or above may repeat the course. If a course is satisfactorily completed, the prior unsatisfactory grade will no longer bar a student from continuing in computer science program.
The Department of Computer Science offers courses on topics of current interest to the community from time to time. Call the Computer Science office, (661) 664-3082, to express interest or inquire concerning offerings.
CMPS 120 Computer Skills and Concepts I (5)
Instruction and tutoring in basic computer skills. An overview of computer applications including word processors, spreadsheets, presentation, and Internet software. Prerequisite: None. [F, W, S]
CMPS 150 Introduction to Unix (1)
Basic Unix commands and programming utilities will be introduced. Students will learn how to use email, a text editor, and manage files and directories. This course is designed for students who have no experience with Unix. [F, W, S]
CMPS 211 Internet Programming and Web Design (5)
CMPS 215 (formerly CMPS 291) Unix Programming Environment(3)
This course covers common Unix commands, shell scripting, regular expressions, tools and the applications used in a Unix programming environment. The tools to be introduced include make utility, a debugger, advanced text editing and text processing (vi, sed, tr). Prerequisite: CMPS 150 or permission of instructor.
CMPS 216 Unix System Administration (3)
This course covers the knowledge and skills critical to administering a multi-user, networked Unix system. The course assumes a basic knowledge of Unix commands and an editor (vi or Emacs). Topics include: kernel and network configuration, managing daemons, devices, and critical processes, controlling startup and shutdown events, account management, installing software, security issues, shell scripting. Many concepts will be demonstrated during hands-on labs. Prerequisite: CMPS 215.
CMPS 221 Programming Fundamentals (5) (formerly CMPS 212)
Introduces the fundamentals of procedural programming. Topics include: data types, control structures, functions, arrays, and standard and file I/O. The mechanics of compiling, linking, running, debugging and testing within a particular programming environment are covered. Ethical issues and a historical perspective of programming within the context of computer science as a discipline is given. [F, W, S]
CMPS 222 Object-Oriented Programming (5) (formerly CMPS 290)
Builds on foundation provided by CMPS 221 to introduce the concepts of object-oriented programming. The course focuses on the definition and use of classes and the fundamentals of object-oriented design. Other topics include: an overview of programming language principles, basic searching and sorting techniques, and an introduction to software engineering issues. Prerequisite: CMPS 221. [F, W, S]
CMPS 223 Data Structures and Algorithms (5) (formerly CMPS 213)
Builds on the foundation provided by the CMPS 221-222 sequence to introduce the fundamental concepts of data structures and the algorithms that proceed from them within the framework of object-oriented programming methodology. Topics include: recursion, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), and the basics of algorithmic analysis. Prerequisite: CMPS 222. [F, W, S]
CMPS 277 Topics in Programming Languages (1-5)
A study of programming languages not offered otherwise. Prerequisite: Knowledge of a high-level programming language or permission of the instructor.
CMPS 280 X-Windows (3)
This course is an introduction to the use of an X-Windowing environment. The course 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.
CMPS 294 Advanced Java Programming (5)
This course will deal with object-oriented programming (OOP) and the various advanced Java topics in the form of applications and/or applets. The advanced Java topics to be addressed include: file I/O, networking, graphics user interface, multithreading and synchronization, remote method and invocation, Java servelet and database connectivity. Prerequisite: CMPS 223.
CMPS 300 Discrete Structures (5)
Elementary logic and set theory, functions and relations, induction and recursion, elementary algorithm analysis, counting techniques, and introduction to computability. Prerequisite: CMPS 223.
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 221 and Math 203 or permission of instructor. Cross-listed with Math 305: Numerical Analysis.
CMPS 312 Algorithm Analysis and Design (5)
Algorithm analysis, asymptotic notation, hashing, hash tables, scatter tables, and AVL and B-trees, brute-force and greedy algorithms, divide-and-conquer algorithms, dynamic programming, randomized algorithms, graphs and graph algorithms, and distributed algorithms. Prerequisite: CMPS 223.
CMPS 320 Digital Circuits (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 processor components and memory. The course will apply the circuit theory to the design of an elementary processor with a small instruction set with absolute addressing and a hard-wired control unit. An assembly language for this processor will also be developed. This course includes a laboratory which will cover a mix of actual circuit work together with circuit synthesis and testing using software. Prerequisite: One course in programming or permission of the instructor.
CMPS 321 Computer Architecture (5)
This course follows the Digital Logic Design course and focuses on the design of the CPU and computer system at the architectural (or functional) level: CPU instruction sets and functional units, data types, control unit design, interrupt handling and DMA, I/O support, memory hierarchy, virtual memory, and buses and bus timing. In contrast, the Digital logic Design course is primarily concerned with implementation; that is, the combinatorial and sequential circuits which are the building blocks of the functional units. Prerequisite: CMPS 223 and 320.
CMPS 335 Software Engineering (5) (formerly CMPS 441)
Introduction to the software lifecycle. Methods and tools for the analysis, design, and specification of large, complex software systems. Project.htmumentation, organization and control, communication, and time and cost estimates. Group laboratory project. Graphical User Interface Design. Technical presentation methods and practice. Software design case studies and practices. Prerequisite: CMPS 223.
CMPS 342 Database Systems (5) (formerly CMPS 440)
Basic issues in data modeling, database application software design and implementation. File organizations, relational model, relational database management systems, and query languages are addressed in detail. Two-tier architecture, three-tier architecture and development tools are covered. Prerequisite: CMPS 223.
CMPS 350 Programming Languages (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. Prerequisite: CMPS 223.
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. Meets new general education upper division Theme I requirement.
CMPS 356 Artificial Intelligence (5) (formerly CMPS 455)
This course is intended to teach the fundamentals of artificial intelligence which include topics such as expert systems, artificial neural networks, fuzzy logic, inductive learning and evolutionary algorithms. Prerequisite:
CMPS 312 CMPS 223.
CMPS 360 Operating Systems (5)
A study of the introductory concepts in operating systems: historical development of batch, multiprogrammed, and interactive systems; file, memory, device, process, and thread management; interrupt and trap handlers, abstraction layer, message passing; kernel tasks and kernel design issues; signals and interprocess communication; synchronization, concurrency, and deadlock problems. Prerequisite: CMPS 223.
CMPS 371 Computer Graphics (5) (formerly CMPS 470)
Introduction to computer graphics hardware, animation, two-dimensional transformations, basic concepts of computer graphics, theory and implementation. Use of graphics API’s such as DirectX or OpenGL. Developing 2D graphics applications software. Prerequisite: CMPS 223.
CMPS 376 Computer Networks (5) (formerly CMPS 475)
A study of computer networks focusing on the TCP/IP Internet protocols and covering in detail the four layers: physical, data link, network, and transport. This course includes a laboratory in which students will cover important network utilities, debugging tools, process and thread control as it relates to network programming, and the coding of programs which do interprocess communication over sockets. The typical Internet client program which accesses a TCP network server daemon will be covered in detail. Prerequisite: CMPS 223.
CMPS 377 Special Topics in Computer Science (3-5)
This course will be used to supplement other courses with additional work at the intermediate level. Prerequisite: Permission of instructor.
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. Prerequisites: CMPS 350.
CMPS 411 Theory of Automata (5)
A study of algorithms as they relate 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 223.
CMPS 420 Advanced Logic Design (5)
A continuation of CMPS 320 which includes a discussion of 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. Prerequisites: CMPS 223 and CMPS 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.
CMPS 435 Advanced Software Engineering (5)
Continuation of study of the software lifecycle. Methods and tools for the implementation, integration, testing and maintenance of large, complex software systems. Program development and test environments. Group laboratory project. Technical presentation methods and practice. Ethical and societal issues in software engineering. Prerequisite: CMPS 335.
CMPS 442 Advanced Database Systems (5)
A wide range of topics such as query processing and optimization, object-oriented database systems, distributed database systems, database warehousing and data mining will be discussed. The course will also be used to introduce emerging issues related to database systems. Prerequisite: CMPS 342.
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 350.
CMPS 456 Advanced Artificial Intelligence (5)
Continuation of CMPS 356. This course is intended to teach about advances in artificial intelligence. It includes advanced topics on artificial neural networks such as distributed and synergistic neural network models, hybrid artificial intelligence techniques such as neuro-fuzzy models, advanced machine learning techniques and meta-heuristic evolutionary algorithms. Prerequisites: CMPS 356 and MATH 340.
CMPS 457 Robotics (5)
The course will provide an opportunity for students to understand intelligent robot system architecture and to design algorithms and programs for control and planning of intelligent robot systems based on analytical modeling and behavior modeling. Students will use simulation software (Webots) and hardware test-bed (Kheraper II) to verify their algorithm and program performance during their project work. Prerequisites: CMPS 223.
CMPS 460 Advanced Operating Systems (5)
Continuation of CMPS 360. Various topics in popular operating systems. Real-time and distributed operating systems will be addressed. Prerequisite: CMPS 360.
CMPS 465 Advanced System Analysis and Design (5)
Design and construction of sizeable software products. Technical management of software development teams. Software development process models, software design,.htmumentation, quality assurance during development, software unit and integration testing, CASE tools, development environments, test tools, configuration management. Prerequisite: CMPS 335.
CMPS 471 Advanced Computer Graphics (5)
Continuation of CMPS 371. 3D graphics transformations, multi-resolution model building and rendering. Advanced computer graphics concepts - theory and implementation. Advanced animation techniques in a 3D environment. This course includes a laboratory. Prerequisites: CMPS 371 and MATH 330.
CMPS 472 AI Agents in Virtual Environments (5)
Continuation of CMPS 471 This course is about creating and interacting with intelligent three-dimensional virtual environments. Topics covered will include hierarchical architecture of three-dimensional virtual environments, and a framework of incorporating intelligent agents within the virtual environment. Prerequisites: CMPS 356 and CMPS 471.
CMPS 476 Advanced Computer Networks and Computer Security (5)
Continuation of CMPS 376. Various advanced topics in computer networks and computer security will be addressed. Prerequisites: CMPS 376 and MATH 202 (or the equivalent of differential and integral calculus).
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: permission 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 223 and have the approval of the department.
CMPS 490 Senior Project (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.
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.