Computer Science (CMPS)

CMPS 1200  Basic Computer Skills  (3)  

This course covers computer skills essential to success at a university. Specific applications include the Microsoft Office suite of tools: Word, Excel, PowerPoint and Access. The course material is based on Windows and Microsoft Office. Each week lecture meets for 150 minutes.

Typically Offered: Fall, Spring  
CMPS 2000  Introduction to Programming Concepts  (4)  

Basic introduction to principles of programming and computational thinking. Topics include an overview of programming languages, data representation, abstraction, algorithms, software development, and the social and ethical impacts of computing. Each week lecture meets for 150 minutes and lab meets for 150 minutes.

CMPS 2010  Programming I: Programming Fundamentals  (4)  

Introduces the fundamentals of procedural programming and object-oriented programming. Topics include: data types, control structures, functions, arrays, I/O, pointers and dynamic memory allocation, and features of object-oriented programming. 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 are given. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: C- or better in MATH 1010 or MATH 1055; or prerequisite or corequisite: MATH 1030 or MATH 1040 or MATH 1050 or MATH 1060 or MATH 2310 or MATH 2510.

Requisite(s): Prerequisite: C- or better in MATH 1010 or 1055; or Prerequisite or Corequisite: MATH 1030 or 1040 or 1050 or 1060 or 2310 or 2510.  
Typically Offered: Fall, Spring  
CMPS 2020  Programming II: Data Structures and Algorithms  (4)  

Builds on the foundation provided by CMPS 2010 to introduce the fundamental concepts of data structures and algorithms that proceed from within the framework of object-oriented programming technology. Topics include: recursion, fundamental data structures (including lists, stacks, queues, hash tables, trees and graphs) and basics of algorithmic analysis. Necessary components of object-oriented programming method will be introduced. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2010 with a grade of C- or better and MATH 1030 or MATH 1040 or MATH 1050 or MATH 1055 or MATH 1060 or MATH 2310 or MATH 2510 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2010 with a grade of C- or better and MATH 1030 or 1040 or 1050 or 1055 or 1060 or 2310 or 2510 with a grade of C- or better.  
Typically Offered: Fall, Spring  
CMPS 2120  Discrete Structures  (4)  

Discrete structures and applications in computer science. Provides an introduction to proof techniques, propositional and predicate logic, functions, relations, sets, big-oh notation, counting techniques, summations, recursive definitions, recurrence relations, discrete probability and simple circuit logic. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2010 with a grade of C- or better and MATH 1030 or MATH 1040 or MATH 1050 or MATH 1055 or MATH 1060 or MATH 2310 or MATH 2510 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2010 with a grade of C- or better and MATH 1030 or 1040 or 1050 or 1055 or 1060 or 2310 or 2510 with a grade of C- or better.  
CMPS 2240  Computer Architecture I: Assembly Language Programming  (4)  

Introduction to computer architecture and assembly language programming. Covers number systems and data representation, CISC and RISC instruction set architectures, internal organization of a computer, and basics of logic design. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2010 with a grade of C- or better and MATH 1030 or MATH 1040 or MATH 1050 or MATH 1055 or MATH 1060 or MATH 2310 or MATH 2510 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2010 with a grade of C- or better and MATH 1030 or 1040 or 1050 or 1055 or 1060 or 2310 or 2510 with a grade of C- or better.  
Course Fee: Yes  
CMPS 2650  Linux Environment and Administration  (4)  

This course covers common Linux commands, shell scripting, regular expressions, tools and the applications used in a Linux programming environment. The tools to be introduced include make utility, a debugger, advanced text editing and text processing (vi, sed, tr). These basic skills are extended to cover the knowledge and skills critical to administering a multi-user, networked Linux system. Administrative 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 150 minutes and lab meets for 150 minutes.

CMPS 2680  Web Programming I: Client -side Web Programming  (3)  

An introduction to webpage layout and design with HTML and CSS and client-side web programming with Javascript. Students will design and create a webpage using technologies covered in the course. Each week lecture meets for 150 minutes.

Typically Offered: Fall, Spring, Summer  
CMPS 2770  Special Topics  (1-4)  

A study of programming languages not offered otherwise. Prerequisite: CMPS 2010 with a grade of C- or better or permission of the instructor. May be repeated for credit with different topics up to a maximum of 4 units.

Requisite(s): Prerequisite: CMPS 2010 with a grade of C- or better.  
Repeatable for Credit: Yes, up to 4 units  
CMPS 2771  Special Topics Laboratory  (1)  

Optional laboratory for the study of programming languages not offered otherwise. Each week lab meets for 150 minutes. Prerequisite: CMPS 2010 with a grade of C- or better or permission of the instructor. Corequisite: CMPS 2770.

Requisite(s): Prerequisite: CMPS 2010 with a grade of C- or better or permission of the instructor. Corequisite: CMPS 2770.  
CMPS 3120  Algorithm Analysis  (3)  

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 100 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better and CMPS 2120.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better and CMPS 2120.  
CMPS 3140  Theory of Computation  (3)  

An introduction to computability theory to include finite automata, push-down automata, formal grammars, Turing machines, decidability, intractability and NP-completeness. Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3120.

Requisite(s): Prerequisite: CMPS 3120 or 312  
Typically Offered: Spring  
CMPS 3240  Computer Architecture II: Organization  (4)  

This course focuses on the design of the CPU and computer system at a functional level. Topics include CPU instruction sets and functional units, control unit design, interrupt handling and DMA, I/O support, memory hierarchy, virtual memory, buses and bus timing, and an introduction to instruction level parallelism, multithreading, and multiprocessing. Hardware security issues will also be discussed. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2240 or ECE 3200.

Requisite(s): Prereqs: CMPS 2240 or 224 or ECE 3200 or 320  
Course Fee: Yes  
CMPS 3300  Numerical Analysis  (4)  

Topics include: computer representation of numbers and round-off errors, algorithms and stability, numerical solutions to nonlinear equations in one variable, direct and iterative methods for solving linear systems of equations, interpolation and polynomial approximation, numerical differentiation and integration, and initial value problems for ordinary differential equations. A computer algebra system (CAS) and/or numerical software may be used to program numerical algorithms and identify their limitations. Each week lecture meets for 200 minutes. Prerequisites: (1) C- or better in MATH 2020, MATH 2320, or MATH 2520, and (2) C- or better in MATH 2610 or CMPS 2010. MATH 3300 is cross-listed with CMPS 3300.

Requisite(s): Prerequisites: (1) C- or better in MATH 2020, MATH 2320, or MATH 2520, and (2) C- or better in MATH 2610 or CMPS 2010.  
Typically Offered: Spring  
Course Fee: Yes  
CMPS 3350  Software Engineering  (4)  

This course is a general introduction to Software Engineering. The course will cover the specification, development, management, and evolution of complex software systems. Students will learn 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 will form groups and choose a software project early in the course, then apply methodologies learned in the course to complete their project. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better.  
CMPS 3390  Application Development  (4)  

Planning and design of applications for desktop and mobile platforms. Concepts include frameworks, networks and client/server protocols, data management, and user interface and experience. Students will deploy and test projects to understand current methods for providing services to the client. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better.  
CMPS 3420  Database Systems  (4)  

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. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisites: CMPS 2020 with a grade of C- or better and either CMPS 2120 or MATH 3000 .

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better and either CMPS 2120 or MATH 3000.  
CMPS 3480  Computer Graphics  (4)  

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. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better.  
CMPS 3500  Programming Languages  (3)  

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. Features of OOP, thread, synchronization and concurrency, functional function will be discussed. Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better.  
CMPS 3560  Artificial Intelligence  (3)  

This course offers an introduction to design of intelligent agents. Emphasis is placed on algorithms for inference in formal logic systems, machine learning, and optimization with evolutionary computation. Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better and either CMPS 2120 or MATH 3000.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better and either CMPS 2120 or MATH 3000.  
CMPS 3600  Operating Systems  (4)  

A study of the introductory concepts in operating systems: historical development of batch, multi-programmed, and interactive systems; virtual memory, 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 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better.  
CMPS 3620  Computer Networks  (4)  

A study of the theory of computer networking focusing on the TCP/IP Internet protocols and covering the five layers: physical, data link, network, transport, and application. Communication on wired, wireless, and cellular networks will be covered. The course will introduce secure communication and its incorporation into different layers of the model. As part of the laboratory component, students will learn systems programming as it relates to interprocess communication over sockets, I/O handling, process and thread control, and the development of client/server programs. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2020 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better.  
CMPS 3640  Distributed and Parallel Computation  (3)  

Introduction to core topics in distributed and parallel computation. System models, parallel vs. distributed systems, communication, locality, concurrency, non-determinism, fault tolerance, distributed algorithms, and parallel programming. Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisites: CMPS 3600 and CMPS 3620.

Requisite(s): Prerequisites: CMPS 3600 and 3620  
CMPS 3650  Digital Forensics  (4)  

Investigative techniques, evidence handling procedures, forensics tools, digital crime reconstruction, incident response, ethics, and legal guidelines within the context of digital information and computer compromises. Hands-on case studies cover a range of hardware and software platforms and teach students how to gather evidence, analyze evidence, and reconstruct incidents. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite or corequisite: CMPS 2010 with a grade of C- or better or CMPS 2650.

Requisite(s): Corequisite or prerequisite: CMPS 2010 with a grade of C- or better or CMPS 2650.  
CMPS 3680  Web Programming II: Server-side Web Programming  (3)  

Current trends in server-side application development, configuration, and tools. Topics will include web servers, internet protocols, data interchange formats, information storage and retrieval, and security. Each week lecture meets for 100 minutes and lab meets for 150 minutes. Prerequisites: CMPS 2010 with a grade of C- or better and CMPS 2680 or instructor approval.

Requisite(s): Prerequisites: CMPS 2010 with a grade of C- or better and CMPS 2680 or instructor approval.  
CMPS 3770  Special Topics  (1-4)  

This course will be used to supplement other courses with additional work at the intermediate level. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: CMPS 2020 with a grade of C- or better or permission of instructor. May be repeated for credit with different topics up to a maximum of 4 units.

Requisite(s): Prereqs: C- or higher in CMPS 2020 or 223  
Repeatable for Credit: Yes, up to 4 units  
CMPS 3771  Special Topics Laboratory  (1)  

Optional laboratory for the study of topics at the intermediate level. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: CMPS 2020 with a grade of C- or better or permission of the instructor. Corequisite: CMPS 3770.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better or permission of the instructor. Corequisite: CMPS 3770.  
CMPS 4210  Advanced Computer Architecture  (4)  

Foundations of parallelism in computer architecture. This course concentrates on the quantitative principles of computer architecture, instruction set and addressing design, instruction-level parallelism (ILP), compiler considerations for parallelism, cache and memory design, multiprocessor (including multi-core processors) and thread-level parallelism (TLP). A constant theme is how the hardware can achieve greater efficiency by exploiting various types of parallelism. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3240.

Requisite(s): Prerequisite: CMPS 3240.  
CMPS 4300  Applied Cryptography  (4)  

An introduction to cryptography, history and its present-day use. Topics include: symmetric ciphers, hash functions, public-key encryption, data integrity, digital signatures, key establishment, key management, prime generation, integer factorization, discrete logarithms, pseudo-random number generation, and computational complexity. Each week lecture meets for 200 minutes. Prerequisites: (1) C- or better in MATH 2020, MATH 2320, or MATH 2520, and (2) C- or better in MATH 3000 or CMPS 2120. Cross-listed as CMPS 4300 or MATH 4300.

Requisite(s): Prerequisites: (1) C- or better in MATH 2020, 2320, or 2520, and (2) C- or better in MATH 3000 or CMPS 2120.  
CMPS 4350  Advanced Software Engineering  (4)  

Continuation of the introductory software engineering course. 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 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3350.

Requisite(s): Prerequisite: CMPS 3350.  
CMPS 4420  Advanced Database Systems  (4)  

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 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3420.

Requisite(s): Prerequisite: CMPS 3420.  
CMPS 4430  Introduction to Data Science  (4)  

This course covers the fundamentals of data science. Topics include data collection, preprocessing and transformation, visualization and exploratory analysis and the mathematical and statistical foundations for data modeling, as well as introductions to data mining algorithms, anomaly detection and feature selection. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3120 with a grade of C- or better, or approval of the instructor.

Requisite(s): Prerequisite: CMPS 3120 with a grade of C- or better, or approval of the instructor.  
CMPS 4450  Data Mining and Visualization  (4)  

Knowledge discovery in and visualization of large datasets, including data warehouses and text-based information systems. Topics covered include data mining concepts, information retrieval, analysis methods, storage systems, visualization, implementation and applications. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3560 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 3560 or 356 with a grade of C- or better.  
CMPS 4470  Computer Vision  (4)  

This course covers the following: Image formation, early vision, image morphology, image segmentation, object/feature representation and an introduction to supervised and unsupervised learning with an emphasis on image understanding. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: MATH 2320 or MATH 2520 with a grade of C- or better; CMPS 3120 with a grade of C- or better or ECE 3040 with a grade of C- or better. There is a $10 course material fee. Cross-listed as CMPS 4470 or ECE 4470.

Requisite(s): Prerequisite: MATH 2320 or MATH 2520 or 203 or 233 with C- or better and CMPS 3120 or 312 with C- or better or ECE 3040 or 304 with C- or better.  
Course Fee: Yes  
CMPS 4480  Computer Animation  (4)  

A study of the basic and advanced algorithms and concepts used to create digital 3D animation software. After an introduction to computer graphics, the course topics include: principles of animation; procedural, physics-based, and keyframed animation; modeling, rigging, and skinning meshes; forward and inverse kinematics; lighting, cameras, and rendering; and particle systems. Students will apply topics from the course in a final animation project. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: C- or better in CMPS 3120 or CMPS 3350 or CMPS 3480, or approval of the instructor.

Requisite(s): Prerequisite: C- or better in CMPS 3120 or 3350 or 3480, or approval of the instructor.  
CMPS 4490  Game Development  (4)  

The principles of designing and programming a game engine. Elements covered include physics, collision, graphics, and control systems. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3350 or CMPS 3480 or CMPS 3120.

Requisite(s): Prerequisites: CMPS 3350 or 3480 or 3120.  
CMPS 4510  Vulnerability Analysis  (4)  

Identification and quantification of security weaknesses, primarily in source code and executables. Topics include professional ethics, source code auditing, common source code errors, the runtime stack and memory systems, common attacks against executables, risk assessment, vulnerability classification, static binary analysis, and mitigation techniques. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2240 and either CMPS 3350 or CMPS 3500.

Requisite(s): Prerequisite: CMPS 2240 and either CMPS 3350 or 3500.  
CMPS 4550  Applied Machine Learning  (4)  

Students will learn the basics of machine learning including: supervised vs. unsupervised learning, regression, dimensionality reduction and reinforcement learning. Focus will be given to experimental setup including normalization, evaluation criteria and outlier detection. Experiments will be carried out with contemporary and classical methods on real world data sets in a wide range of applications. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: MATH 3200. Cross-listed as CMPS 4550 or ECE 4550.

Requisite(s): Prerequisite: MATH 3200.  
CMPS 4560  Advanced Artificial Intelligence  (4)  

This course covers advanced topics in AI as follows: heuristic search, local search, adversarial search and constraint satisfaction problems. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 3560 with a grade of C- or better.

Requisite(s): Prerequisite: CMPS 3560 or 356 with a grade of C- or better.  
CMPS 4620  Network and Computer Security  (4)  

Fundamentals of network and computer security and information assurance. Topics covered include basic cryptography, authentication, access control, formal security policies, assurance and verification, trusted OS design, and network attacks. Methods to provide better security at both the system and network level will be presented, particularly with respects to risk analysis, cost-benefit analysis, and psychological acceptability. Ethics and legal issues related to security research will also be discussed. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisites: CMPS 2020 with a grade of C- or better and either CMPS 3620 or CMPS 3650.

Requisite(s): oPrereqs: C- or higher in: CMPS 2020 or 223; CMPS 3620 or 376 or 3650 0r 340  
CMPS 4770  Special Topics  (1-4)  

This course will often be used to supplement other courses with additional work at a more advanced level. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: CMPS 2020 with a grade of C- or better or permission of instructor. May be repeated for credit with different topics up to a maximum of 4 units.

Requisite(s): Prereqs: C- or higher in CMPS 2020 or 223  
Repeatable for Credit: Yes, up to 4 units  
CMPS 4771  Special Topics Laboratory  (1)  

Optional laboratory for the study of topics at a more advanced level. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: CMPS 2020 with a grade of C- or better or permission of the instructor. Corequisite: CMPS 4770. May be repeated for credit up to a maximum of 2 units.

Requisite(s): Corequisite: CMPS 4770. Prerequisite: CMPS 2020 with a grade of C- or better or permission of the instructor.  
Repeatable for Credit: Yes, up to 2 units  
CMPS 4800  Undergraduate Research  (1-4)  

Independent study into a research topic under the supervision of a faculty member. Students will establish the research goals and objectives with their faculty supervisor. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: Permission of the instructor. May be repeated for credit up to a maximum of 9 units.

Repeatable for Credit: Yes, up to 9 units  
CMPS 4860  Internship in Computer Science  (1-4)  

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 the number of credit units offered. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: Permission of the instructor. May be repeated with different topics up to a maximum of 9 units.

Repeatable for Credit: Yes, up to 9 units  
CMPS 4870  Cooperative Education  (1-4)  

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 the number of credit units offered. Course is repeatable, but only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: Permission of the instructor. May be repeated with different topics up to a maximum of 4 units.

Repeatable for Credit: Yes, up to 4 units  
CMPS 4890  Experiential Prior Learning  (1-4)  

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 2020 and have the approval of the department. Only a combined total of 4 units of CMPS 377x, 477x, and 48xx may be used for elective credit towards the major requirements. Prerequisite: CMPS 2020 with a grade of C- or better and permission of the instructor. May be repeated with different topics up to a maximum of 4 units.

Requisite(s): Prerequisite: CMPS 2020 with a grade of C- or better or permission of the instructor.  
Repeatable for Credit: Yes, up to 4 units  
CMPS 4910  Senior Project I  (2)  

After consultation with the faculty supervisor and investigation of relevant literature, the student(s) shall prepare a substantial project with significance in the designated area. The timeline, teamwork responsibilities, milestones, and presentation(s) will be scheduled. Prerequisites: At least 12 units of 3000- or 4000-level CMPS coursework.

Requisite(s): Prerequisites: At least 12 units of 3000- or 4000-level CMPS coursework.  
CMPS 4928  Senior Project II  (2)  

This is the completion phase of the project. Students will present a project report to the entire class, explaining the nature of the work, the finished product, and its relationship to the field. Students will demonstrate proficiency in critical thinking, information literacy, written communication, and quantitative reasoning in their written project report. Additionally, students will demonstrate an understanding of their academic pursuits by reflecting on their studies of the arts, humanities, natural sciences, behavioral sciences, and social sciences. Prerequisite: At least 90 units and completion of JYDR; and CMPS 4910. Satisfies general education requirement Senior Capstone.

Requisite(s): Prerequisite: At least 90 units and completion of JYDR; and CMPS 4910.  
General Education Attribute(s): Capstone  
CMPS 4960  Leadership in Computer Science  (1-2)  

Leadership in computer science related activities that meet campus and/or community needs. Offered on a credit, no-credit basis only. Course is repeatable. Course credits cannot be used as elective credit towards the major requirements, but can be used as additional university units. Prerequisite: Permission of the instructor.

CMPS 4970  Service Learning in Computer Science  (1-2)  

Service learning in computer science related activities that meet campus and/or community needs. Students will design and/or implement a service learning project in consultation with their faculty supervisor and, if applicable, community partners. Offered on a credit, no-credit basis only. Course credits cannot be used as elective credit towards the major requirements but can be used as additional university units. Prerequisite: Permission of the instructor. May be repeated for credit up to a maximum of 2 units.

Repeatable for Credit: Yes, up to 2 units  
CMPS 4980  Teaching in Computer Science  (1-2)  

Experience supporting teaching activities in department courses, providing tutoring in the department tutoring center, leading problem-solving sessions, and/or supporting other instructional activities in the department. Offered on a credit, no-credit basis only. Course credits cannot be used as elective credit towards the major requirements but can be used as additional university units. Prerequisite: Permission of the instructor. May be repeated with different topics up to a maximum of 2 units.

Repeatable for Credit: Yes, up to 2 units  
CMPS 5000  Colloquium in Computer Science  (1)  

This colloquium is intended to be a speaker series on current research in computer science and related fields. The colloquium provides a forum to share research, practice methods, distribute tools/software, and discuss current topics. Speakers will include scholars from academia and practitioners from the public and private sectors. Early sessions allow incoming students to familiarize themselves with the program, to other students, staff, and faculty. Offered on a credit, no-credit basis only. Each week the colloquium will meet for 50 minutes. Prerequisite: Graduate standing. May be repeated; a combined total of 2 units can be used towards the Master's degree.

Requisite(s): Prerequisite: Graduate standing.  
Repeatable for Credit: Yes, up to 2 units  
CMPS 5010  Current Topics in Computer Science  (2)  

This course focuses on discussions of current peer-reviewed literature in computer science and related topics. The course is in the format of a journal club and emphasis will be on research articles published in the last two years. Each week students will present and lead a discussion of one or more approved peer-reviewed articles. Students will be encouraged to discuss, analyze, critique, and implement the topics in each article. Students must submit reports on their related articles. Each week lecture meets for 100 minutes. Prerequisite: Graduate standing.

Requisite(s): Prerequisite: Graduate standing.  
CMPS 5100  Research Methodologies and Professional Ethics  (2)  

This course is designed to develop research and communication skills for graduate students. The topics covered in this course will include research processes, research methods, literature searches, literature analysis, scientific manuscripts and software licensing. The course will also focus on professional ethics related to computer science and various forms of data. There will be an emphasis on requirements and regulations for human/animal-subject testing, Institutional Review Board (IRB) approval, consent, conflicts of interest, misconduct, and authorship. Each week the course will meet for 100 minutes. Prerequisite: Graduate standing.

Requisite(s): Prerequisite: Graduate standing.  
CMPS 5120  Graduate Algorithm Design and Analysis  (3)  

This is an advanced graduate course in the analysis of algorithms, in terms of time and space complexity for best/average/worst case execution using asymptotic notation; the application of standard algorithmic approaches, including divide-and-conquer, greedy algorithms, dynamic programming, and graph algorithms, to algorithm design. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5150  Parallel Algorithms  (3)  

This is an advanced graduate course in the design and analysis of algorithms for parallel systems. Theoretical topics include modeling the cost of parallel algorithms, and parallel algorithms for sorting, trees, graphs, and computational geometry. Practical topics will include data-parallelism, threads, futures, scheduling, synchronization, transactional memory and message passing. Students will design and present a project on parallel algorithms. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5160  Distributed Learning and Optimization  (3)  

Distributed computing architectures have led to adaptation of sequential algorithms to a distributed computation domain. Computer science subfields such as machine learning and optimization benefit greatly from these distributed architectures, thus have been adapted. Topics for this class include distributed learning and optimization, graph analysis, scaling, complexity analysis and evaluation of current platforms. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5240  Graduate Computer Architecture  (3)  

This is a graduate survey course in computer architecture for graduate students who have some experience in computer organization and design. It covers early systems, microprocessor design, instruction set architecture, control, buses, ALU, memory and multiprocessor systems. The class focuses on memory hierarchies, caching, virtual memory, ISA design considerations (RISC, CISC, VLSI RISCs), branch speculation, advanced datapaths, multithreading, coherence and consistency, and processor heterogeneity. Students will present current work in architecture. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5270  Hardware Security  (3)  

This course will study the principles of computer systems security from the hardware perspective, especially as it crosses layers of abstraction. Students will learn about the vulnerabilities in current digital system design flow and the challenges of building secure hardware for each layer of abstraction. Cutting edge research on these challenges will be discussed and hands-on experiences with performing attacks, developing countermeasures, and implementing secure hardware building blocks will be required. By the end of the course, students will be able to reason about security in terms of adversarial models, hardware vulnerabilities, and attacks. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5350  Graduate Software Engineering  (3)  

A study of concepts and research in the area of software engineering, with attention on modeling, design patterns, software architecture, deployment, quality assurance, and communication. Discussions will include presentations on historical and current research papers in the field with a special interest in ethical dilemmas in modern software development. A term project lets students apply and develop practical skills from the course material. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5420  Natural Language Processing  (3)  

This is a foundational course in natural language processing (NLP) for graduate students who have some experience in artificial intelligence or machine learning. The focus of the class is end-to-end systems for classification, understanding and organization of language, and generative models for communication. Topics include machine learning for text classification, bag-of-words representation, context-free parsing, semantics and machine translation. Students will present current work in NLP. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5450  Graduate Data Mining  (3)  

This course introduces concepts, principles, algorithms, techniques, performance, and applications of data mining and knowledge discovery. Topics may include data preprocessing, data visualization, data dissemination, the statistical foundations for data modeling, classification and prediction, clustering analysis, association and pattern analysis, and outlier detection. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5500  Graduate Programming Languages and Compilers  (3)  

This is an advanced graduate course where students will study programming languages with an emphasis on their implementation. Topics include lexical analysis, language syntax, control structures, the binding of names, procedures, and their implementation in compilers. Students will design and present a project on related topics. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5510  Reverse Engineering  (3)  

Investigation into reverse engineering techniques for both normal executables and malware. Topics include behavioral analysis of executables, static binary analysis, dynamic binary analysis, anti-analysis and evasion techniques, obfuscation, shellcode, and code injection. Hands-on activities will reinforce the theoretical concepts being discussed. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5560  Machine Learning  (3)  

This course introduces concepts of machine learning with a focus of supervised learning methods. Foundational modeling of classification and regression problems will be covered. Topics include linear discriminate analysis (LDA), logistic regression, support vector machines (SVM), maximum likelihood estimation (MLE), nearest neighbor, neural networks (NN), decision trees, decision forest, AdaBoost, convolutional NN, recurrent NN. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5600  Graduate Operating Systems  (3)  

This course exposes students to recent developments in operating systems research and design. Course lectures and reading assignments will be on classic and recent papers that shaped the field on a range of topics, including OS design, virtual memory management, file systems, virtualization, concurrency and synchronization, cloud systems, heterogeneity, and security. The course also exposes students to basic system-building and evaluation methodologies through programming assignments and a final project. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5640  Graduate Distributed Computation  (3)  

With the growth of large-scale systems, there is an increasing need for distributed systems that can cover the load. This class will cover MapReduce, cloud computing networks, timing, fault tolerance, consistency, transaction, dataflow and peer to peer systems. This course emphasizes the evaluation of real-world systems from multiple contexts. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5650  Operations Security  (3)  

This course covers the theoretical and applied aspects of operations security (OPSEC) in cyber systems to protect sensitive and/or confidential data. Topics include threat and adversarial modeling, vulnerability analysis, penetration testing, risk assessment, countermeasures, systems hardening, and other defensive operations. Each week lecture meets for 150 minutes. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
CMPS 5770  Special Topics in Computer Science  (1-3)  

Contemporary topics at a graduate level in computer science, as announced in Schedule of Classes. Prerequisite: Classified graduate student status or permission of the instructor. May be repeated for credit with different topics up to a maximum of 9 units.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
Repeatable for Credit: Yes, up to 9 units  
CMPS 5800  Graduate Research  (1-3)  

Independent investigation and study of an advanced topic in computer science under direct supervision of an instructor. The graduate research course may involve either a laboratory or a theoretical problem. Prerequisite: Classified graduate student status or permission of the instructor. May be repeated for credit up to a maximum of 6 units.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
Repeatable for Credit: Yes, up to 6 units  
CMPS 5860  Graduate Internship in Computing  (1-3)  

Internships in computing and computer science, at an appropriate level for graduate credit, may be arranged with various agencies, businesses, or industries. Students will work with a faculty liaison (the course instructor) to coordinate assignments, work projects, readings, and other associated internship work used for academic evaluation and grading. The department will determine the number of credit units offered based off the expected number of hours of internship work. Course is repeatable up to a maximum of 9 units. However, only 3 units may be used for elective credit in the MS CS program. Prerequisite: Classified graduate student status or permission of the instructor.

Requisite(s): Prerequisite: Classified graduate student status or permission of the instructor.  
Repeatable for Credit: Yes, up to 9 units  
CMPS 6910  Thesis Research  (1-3)  

The systematic study of a research problem of significant scope and novelty as determined by the Thesis Committee. Student will identify a problem, articulate the significance of the work, determine sources and methods for gathering data (laboratory, simulation and/or field work), experiment and analyze the data, and offer a conclusion or recommendation to the research question. Students receive training and preparation for the Thesis Defense. This is required for Master's students who select the Thesis option for their capstone. Prerequisite: CMPS 5100, Classified graduate student status, and approval of the instructor (Thesis Advisor). May be repeated for credit; a combined total of 5 units can be used towards the Master's degree.

Repeatable for Credit: Yes, up to 5 units  
CMPS 6920  Thesis Defense  (1)  

Final preparation for the Thesis Defense. This should only be taken after the Thesis demonstrates originality, critical and independent thinking, appropriate organization and format, and thorough documentation, and readiness for oral defense. Activities vary depending on topic, though all Thesis Defense classes include review and revision of the presentation by the Thesis Advisor, an oral defense and an acceptance/pass or rejection/failure decision by the Thesis Committee. This is required for Master's students who select the Thesis option for their capstone. Offered on a credit, no-credit basis only. Students who receive the no-credit grade may repeat the course, although a subsequent rejection of Thesis Defense may result in dismissal from the program. Prerequisite: CMPS 6910, Advancement to candidacy, and approval of the instructor (Thesis Advisor).

Requisite(s): Prerequisite: CMPS 6910, Advancement to candidacy, and Approval of the instructor (Thesis Advisor).  
CMPS 6950  Graduate Project I  (2)  

Students will undertake a significant project within the scope of Computer Science under the supervision of a faculty member serving as Project Advisor. The project must be original, demonstrate independent thought, possess appropriate form and organization, and include a market analysis. Students must demonstrate progress with written reports and oral presentations, to be reviewed by the Project Advisor. Prerequisite: Classified graduate student status and approval of the instructor (Project Advisor).

Requisite(s): Prerequisite: Classified graduate student status and approval of the instructor (Project Advisor).  
CMPS 6960  Graduate Project II  (1)  

This is a culminating experience for the Project tract students. Students will complete their project and present it to the satisfaction of the Project Committee. A written technical document (Master Project Report) that describes the project's significance, objectives, methodology and conclusion in abstract, will be reviewed by the Project Advisor and approved by the Project Committee. At the end of the course the student may publicly present the results of their project. Offered on a credit, no-credit basis only. Prerequisite: CMPS 6950, Advancement to candidacy, and approval of the instructor (Project Advisor).

Requisite(s): Prerequisite: CMPS 6950, Advancement to candidacy, and approval of the instructor (Project Advisor).  
CMPS 7000  Continuous Enrollment  (0)  

Graduate students who have completed all of the coursework for the program except their chosen capstone option (Thesis or Project) may enroll in this special course for the purpose of maintaining continuous enrollment at CSUB while completing their capstone experience. Course is repeatable. Prerequisite: Advancement to candidacy and approval of the Graduate Program Director.

Requisite(s): Prerequisite: Advancement to candidacy and approval of the Graduate Program Director.  
Repeatable for Credit: Yes, up to 0 units