Cell: (661) 302-3029
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 three 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. The Hardware track is intended for students who will be working in a hardware or system software environment. Students in the three tracks will take different advanced courses of their choice. A Computer Science minor is also offered.
The Bachelor of Science Degrees with a major in Computer Science require a minimum of 180 units which includes courses for the major (and minor, if selected) and courses for the other university-wide graduation requirements: General Education, American Institutions, First-Year Experience, Gender-Race-Ethnicity, Upper Division Writing, and Foreign Language (see pages 56-63).
MATH 140 or MATH 192 or higher level mathematics course MATH 190/191
OR any other 300-400 level computing course taken with the 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.
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. Computer Science majors are encouraged to take CMPS 215 in place of this course, if possible.
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). Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisite: None.
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. Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisite: CMPS 215.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: Passing score on ELM OR satisfaction of the ELM exemptions AND a passing score on the Pre-Calculus Readiness Test.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 221.
Builds upon the foundation provided by CMPS 221 to introduce the fundamental concepts of data structures, algorithms, and algorithm analysis. The course focuses on the concepts and implementation of fundamental data structures (linked lists, stacks, queues, trees, hash tables, and graphs). Other topics
include: pointers, recursion, searching and sorting algorithms, and the basics of algorithm analysis. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 221.
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. Each week lecture meets for 100 minutes and lab meets for 150 minutes.
Discrete structures and applications in computer science. Proof techniques, induction, predicate logic, functions, relations and sets, asymptotics, counting techniques, recurrence relations, graph theory and trees. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 221.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 295 or CMPS 300 and CMPS 223.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: One course in programming or permission of the instructor.
A general introduction to Software Engineering. Deals with the specification, development, management, and evolution of complex software systems. Shows how to cost-effectively apply the methods and theory from Computer Science to solve difficult problems. The course presents a broad perspective on software and system engineering and surveys a wide spectrum of tools and techniques. Students are required to complete a project as part of a small software engineering team. Students may choose system projects involving software and hardware integration. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 223.
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. Meets for 200 minutes of lecture and 150 minutes of lab. Prerequisite: CMPS 295.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 223.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 223.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 223.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 223.
This course will be used to supplement other courses with additional work at the intermediate level. Prerequisite: Permission of instructor.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 335.
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. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 342.
Design and construction of sizeable software products. Technical management of software development teams. Software development process models, software design, documentation, quality assurance during development, software unit and integration testing, CASE tools, development environments, test tools, configuration management. Each week lecture meets for 200 minutes and lab meets for 150 minutes. Prerequisite: CMPS 335.
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.