Computer Science (CPSC)

CPSC 501  Fundamentals of Data Structures  (3 Units)  
Prerequisite: programming experience in C. Basic data structures and algorithms: stacks, queues, linked lists, trees, hash tables, and graphs; sorting and search algorithms. Introduction to data abstraction and algorithm analysis. (May not be used to meet computer science requirements.) (Formerly 3460:501)
CPSC 506  Introduction to C & UNIX  (3 Units)  
Prerequisite: Programming experience. C language programming. UNIX shell programming, file structure, system calls, and interprocess communication. (May not be used to meet computer science requirements.) (Formerly 3460:506)
CPSC 508  Windows Programming  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Windows operating systems, integrated development environment, event-driven programming, graphical user interface design, using object libraries, component object model, object linking and embedding, client-server objects. (Formerly 3460:508)
CPSC 511  Human-Computer Interaction  (3 Units)  
Prerequisite: Admission to the computer science graduate program. This course introduces the basic concepts and technologies of Human-Computer Interaction (HCI). Students will learn how to design and implement systems for human to interact with computers. Topics include: Categories of HCI, CLI, GUI, NUI, Design, Implementation and Evaluation of HCI, HCI Devices, Virtual Device Drive, HCI Toolkits, HCI Standards, Categories of Interactive Tasks, EDP and Multi-Threading in HCI, VR/AR/MR/XR in HCI, APP HCI, 3D Printing. (Formerly 3460:511)
CPSC 515  Big Data Programming  (3 Units)  
Prerequisite: Admission to Computer Science Graduate Program or permission. Fundamentals of big data programming and computing platforms. Wrangling, modeling, visualizing, and analyzing data; computing platforms for data mining and deep learning. (Formerly 3460:515)
CPSC 518  Introduction to Discrete Structures  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Introduction to algebraic structures of particular use in computer science. Topics include algorithms and flow chart language, graphs and digraphs, trees, and lattices codes. (May not be used to meet computer science Master's degree requirements.) (Formerly 3460:518)
CPSC 521  Object-Oriented Programming  (3 Units)  
Prerequisite: Admission to Computer Science master's program or permission. Object-oriented design, analysis, and programming using different development models. Comparison with other programming paradigms. (May not be used to meet computer science Master's degree requirements.) (Formerly 3460:521)
CPSC 526  Operating Systems  (3 Units)  
Prerequisites: Admission to Computer Science master's program or permission. Introduction to aspects of all modern operating systems: types; storage management; process and resource control; interacting process synchronization. (Formerly 3460:526)
CPSC 528  UNIX System Programming  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. An overview of the UNIX operating system. Shell programming. Process management, processor management, storage management, scheduling algorithms, resource protection, and system programming. (Formerly 3460:528)
CPSC 530  Theory of Programming Languages  (3 Units)  
Prerequisite: Admission to Computer Science Master's Program or permission. Advanced concepts underlying programming languages and their applications, formal definitions of programming languages, Backus Normal Form, semantics. Alternative programming paradigms including functional programming. (Formerly 3460:530)
CPSC 535  Algorithms  (3 Units)  
Prerequisites: Admission to Computer Science master's program or permission. Design and analysis of efficient algorithms for random access machines; derivation of pattern classification algorithms. (Formerly 3460:535)
CPSC 536  Applied Machine Learning  (3 Units)  
Prerequisite: Admission to a Computer Science Master's program or permission. This course introduces the fundamentals of machine learning and concepts of deep learning. Topics include machine learning concepts, tasks, and workflow; supervised learning methods for classification and prediction; unsupervised learning methods for pattern recognition; deep learning algorithms such as neural networks and convolutional neural networks. (Formerly 3460:536)
CPSC 538  Interactive Game & Game Engine Design  (3 Units)  
Prerequisite: Admission to Computer Science Graduate Program. This course will introduce the basic concepts and techniques of game and game engine design. Students will learn how to design and implement interactive computer games and game engines. Topics include: Interactive Animation, Game Engines, EDP in Game Development, Procedural Animation and Physics Engine, Decision Making and AI Games, Surface & Volume Representation, VR, AR, MR, APP Games, Game Engine Development, and Voxel-Engine. (Formerly 3460:538)
CPSC 540  Compiler Design  (3 Units)  
Prerequisites: Admission to Computer Science master's program or permission. Techniques used in constructing compilers, including lexical and syntactic analysis, parsing techniques, object code generation and optimization. Course requires a compiler implementation project. (Formerly 3460:540)
CPSC 545  Introduction to Bioinformatics  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Introduce major themes in bioinformatics. Topics include concepts of molecular genetics, biological databases, database searching, sequence alignments, phylogenetic trees, structure prediction, and microarray data analysis. (Formerly 3460:545)
CPSC 553  Computer Security  (3 Units)  
Prerequisite: admission to Computer Science master's program or permission. Principles of computer security: cryptography, authentications, secure network protocols, intrusion detection and countermeasures. (Formerly 3460:553)
CPSC 555  Data Communication & Computer Networks  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. ISO-OSI, TCP/IP, SNA data switching, protocols, flow and error control, routing, topology. Network trends, network taxonomies, and socket-based programming. (Formerly 3460:555)
CPSC 557  Computer Graphics  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Topics in vector and raster graphics, interactive graphics languages, scan conversion, clipping, geometric transformation, projection, shading, animation and virtual reality. (Formerly 3460:557)
CPSC 560  Artificial Intelligence & Heuristic Programming  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Study of various programs which have displayed some intelligent behavior. Exploration of level at which computers can display intelligence. (Formerly 3460:560)
CPSC 563  Pervasive Computing  (3 Units)  
Prerequisite: admission to Computer Science master's program or permission. Computing from a wireless perspective. Topics include protocols, algorithms, security and sensor networks. (Formerly 3460:563)
CPSC 565  Computer Architecture  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. An introduction to hardware organization of computer at register, processor and system level. In-depth study of architecture of a particular computer system family. (Formerly 3460:565)
CPSC 568  Mobile Robotics  (3 Units)  
Prerequisite: admission to Computer Science master's program or permission. Introduction to history, hardware and software components, and design of autonomous mobile robots. Multiple projects involving both physical robots and software emulation. (Formerly 3460:568)
CPSC 575  Database Management  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Fundamentals of database organization, data manipulations and representation, data integrity, privacy. (Formerly 3460:575)
CPSC 576  Introduction to NoSQL Data Management  (3 Units)  
Prerequisite: CPSC 210. The widespread emergence of big data storage needs has driven the development and adoption of a new class of non-relational databases commonly referred to as NoSQL databases. This course will explore the origins of NoSQL databases and the characteristics that distinguish them from traditional relational database management systems. Core concepts of NoSQL databases will be presented, followed by an exploration of how different database technologies implement these core concepts. We will take a closer look at 1-2 databases from each of the four main NoSQL data models (key-value, column family, document, and graph), highlighting the business needs that drive the development and use of each database. Finally, we will present criteria that decision makers should consider when choosing between relational and non-relational databases and techniques for selecting the NoSQL database that best addresses specific use cases. (Formerly 3460:576)
CPSC 577  Introduction to Parallel Processing  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Commercial processors: past and present. Parallel languages, models of parallel computation. Emphasis on parallel algorithm design and performance evaluation. A broad study of parallel paradigms with relation to real world applications. (Formerly 3460:577)
CPSC 580  Software Engineering  (3 Units)  
Prerequisite: Admission to Computer Science master's program or permission. Introduction to formal software specification and validation. Introduction of methodologies and tools of design, development, validation, and maintenance. (Formerly 3460:580)
CPSC 589  Topics in Computer Science  (1-3 Units)  
(May be repeated) Prerequisite: permission of instructor. Selected topics in computer science at an advanced level. (Formerly 3460:589)
CPSC 595  Experiential Learning in Computer Science  (1-3 Units)  
Prerequisites: must complete 18 graduate credits hours with at least 3.0 overall GPA and have permission of a faculty member. Placement in industry for experience related to computer science. (May not be repeated). (Formerly 3460:595)
CPSC 597  Individual Study in Computer Science  (1-3 Units)  
(May be repeated. Can apply to degree, minor or certificate only with department approval.) Prerequisite: permission. Directed studies designed as introduction to research problems under guidance of designated faculty member. (Formerly 3460:597)
CPSC 601  Research Methodology  (3 Units)  
Prerequisite: Admission to Computer Science graduate program or permission of instructor. Research process overview: literature review, formulation of problems, research design, writing proposals, data collection, data processing and analysis, evaluation, writing reports, and presenting results. (Formerly 3460:601)
CPSC 626  Advanced Operating Systems  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Advanced topics in operating system design: synchronization mechanisms, performance evaluation, security, distributed operating systems. (Formerly 3460:626)
CPSC 630  Advanced Theory of Programming Languages  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. In-depth study of various issues in the design and implementation of programming languages, such as formal type systems, operational and other semantics, and verification. (Formerly 3460:630)
CPSC 631  Abstract Machines  (3 Units)  
Prerequisite: Admission to the Computer Science Master's program or instructor permission. The course studies the formal specification of abstract computational devices, representations of programs, static and dynamic semantics, and their implementations. (Formerly 3460:631)
CPSC 635  Advanced Algorithms  (3 Units)  
Prerequisite: Admission to Computer Science master's program or permission. Advanced graph algorithms, matrix multiplication, fast Fourier transforms, lower bound theory, complexity hierarchies, NP-complete and intractable problems, approximation techniques. (Formerly 3460:635)
CPSC 636  Graph Analytics  (3 Units)  
Prerequisite: Admission to the Computer Science Master's program or instructor permission. Topics include graph's mathematical and statistical properties, basic graph analytic algorithms, and network models, and application of graph analytics to high-dimensional data analysis. (Formerly 3460:636)
CPSC 641  Optimization for Parallel Compilers  (3 Units)  
Prerequisite: Graduate standing and permission of instructor. Advanced analysis and transformation strategies to support automatic vectorization and parallelization of code, emphasizing restructuring to improve instruction scheduling. (Formerly 3460:641)
CPSC 645  Computational Biology  (3 Units)  
Prerequisite: Admission to Computer Science graduate program or permission of instructor. Topics include sequence analysis, hidden Markov model, RNA structure prediction, microarray data analysis, biological networks, and molecular dynamics simulation as well as Monte Carlo simulation. (Formerly 3460:645)
CPSC 653  Software Security  (3 Units)  
Prerequisite: Admission to Computer Science graduate program or permission of instructor. Issues in software security -- common software security errors, steganography, spam, cryptography, malware, Internet hacking. (Formerly 3460:653)
CPSC 655  Computer Networks & Distributed Processing  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Interconnection technologies, protocol layering models, datagram and stream transport services, client-server paradigm, principles and protocols of interconnected networks operating as unified systems, and TCP/IP technology. (Formerly 3460:655)
CPSC 658  Visualization  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Visualization pipeline, data representation in visualization, visualization algorithms, object-oriented visualization, scientific visualization, volume visualization, visualization applications and research topics. (Formerly 3460:658)
CPSC 660  Expert Systems  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Architecture of expert systems, knowledge representation and acquisition, inference mechanisms for expert systems, uncertainty management, expert system tools and applications. (Formerly 3460:660)
CPSC 665  Advanced Computer Architecture  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Fundamentals of computer analysis and design, with emphasis on cost/performance tradeoffs. Studies of pipelined, vector, RISC, and multiprocessor architectures. (Formerly 3460:665)
CPSC 670  Advanced Automata & Computability  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. An in-depth study of concepts related to computability. Topics include nondeterministic automats, recursive function theory, the Chomsky hierarchy, Turing machines and undecidability. (Formerly 3460:670)
CPSC 676  Data Mining  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Study fundamental data mining algorithms and their applications in the process of Knowledge Discovery from Databases. Study Data warehousing systems and architectures. (Formerly 3460:676)
CPSC 677  Parallel Processing  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Advanced computer architectures, theories of parallel computing, system resources optimization, efficient programming languages and application requirements of cost-effective computer systems. Classical results and practical insights into implementing parallel algorithms on actual parallel machines. (Formerly 3460:677)
CPSC 678  Data Integration  (3 Units)  
Prerequisites: Admission to Computer Science graduate program or permission of instructor. Topics include Datalog, Conjunctive Queries, Query Containment and Equivalence, Schema Matching and Mapping, Wrappers, Query Evaluation, Source Descriptions, Semantic Web, and Crowdsourcing. (Formerly 3460:678)
CPSC 680  Software Engineering Methodologies  (3 Units)  
Prerequisite: admission to Computer Science Master's Program or permission. Introduction to current techniques and methodologies used in software design, development, validation, and maintenance. (Formerly 3460:680)
CPSC 689  Advanced Topics in Computer Science  (1-3 Units)  
(May be repeated) Prerequisite: permission of instructor. At most, six credits may be applied to Master's degree requirements. Selected topics in computer science at an advanced level. (Department consent required for application to computer science Master's degree requirements.) (Formerly 3460:689)
CPSC 695  Practicum in Computer Science  (1-3 Units)  
Prerequisite: graduate teaching assistant or permission. Training and experience in college teaching of computer science under the supervision of an experienced faculty member. May not be used to meet degree requirements. Credit/non-credit. (Formerly 3460:695)
CPSC 697  Individual Study in Computer Science  (1-3 Units)  
(May be repeated. Can apply to degree only with department approval) Prerequisite: permission of instructor. Directed studies designed as introduction to research problems under guidance of designated faculty member. (Formerly 3460:697)
CPSC 698  Master's Research  (1-6 Units)  
Prerequisite: permission of advisor. Research in computer science topic culminating in research paper. No more than three credits may be applied to the minimum degree requirements (May be repeated.) (Formerly 3460:698)
CPSC 699  Master's Thesis  (1-6 Units)  
(May be repeated) Prerequisite: permission. Properly qualified candidate for a master's degree may enroll for research experience which culminates in presentation of a faculty-supervised thesis. (Formerly 3460:699)