Computer Science (CMPS)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 .
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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).
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).
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.