Computer Science (CS)

Vertically-related courses in this subject field are: 

CS 112 Computational Thinking and Problem Solving (3 credits)

General Education: Mathematical Ways of Knowing

Introduction to computational thinking and problem solving, including elementary computing concepts such as variables, loops, functions, lists, conditionals, concurrency, data types, simple object oriented concepts, I/O, events, syntax, structured programming, basic concepts of computer organization, editing and the influence of computers in modern society.

Prereqs: MATH 108 with a grade of ‘C’ or better; or sufficiently high ACT, SAT, or Math Placement Test score to qualify for MATH 143.

CS 120 Computer Science I (4 credits)

Fundamental programming constructs, algorithms and problem-solving, fundamental data structures, overview of programming languages, virtual machines, introduction to language translation, declarations and types, abstraction mechanisms, object-oriented programming. This course includes a lab.

Prereqs: MATH 143 with a grade of ‘C’ or higher or CS 112 with a grade of ‘C’ or higher; or sufficiently high ACT, SAT, or Math Placement Test score to qualify for MATH 170

CS 121 Computer Science II (3 credits)

Abstract data types and data structures: linked lists, stacks, queues, trees, and graphs. Methods to implement and algorithms to manipulate these structures. Dynamic memory methods, sequential file processing, additional searching and sorting algorithms, recursion, and object-oriented programming.

Prereqs: CS 120 with a grade of ‘C’ or higher

Coreqs: MATH 176

CS 150 Computer Organization and Architecture (3 credits)

Digital logic and digital systems, Machine level representation of data, Assembly level machine organization, Memory system organization and architecture, Interfacing and communication, Functional organization, Multiprocessing and alternative architectures.

Prereqs: CS 120

CS 204 (s) Special Topics (1-16 credits)

Credit arranged

CS 210 Programming Languages (3 credits)

Major features of good programming languages, with primary emphasis on language features and their role in writing good software; programming language design alternatives; various types of languages, including procedure, data-flow, functional, and object-oriented languages.

Prereqs: CS 121

CS 212 Practical Python (3 credits)

This course is an introduction to Python programming fundamentals. It will cover the basics of Python, good algorithm design, and development. Topics include Python types, data structures, and objects. It will include hands-on programming in a variety of applications of Python from multiple application areas. Major general-purpose Python modules including numeric and graphing modules will be explored.

Prereqs: MATH 143 or equivalent

CS 240 Computer Operating Systems (3 credits)

Overview of operating systems, Operating system principles, Concurrency, Scheduling and dispatch, Memory management, Introduction to net-centric computing, OS security. Process management. Concurrent programming using threads.

Prereqs: CS 121 and CS 150

Coreqs: CS 270

CS 270 System Software (3 credits)

Programming productivity tools such as make. Debugging tools. Linking and loading. Shell programming and scripting languages. Process management and interprocess communication. Exception handling. Network concepts and network programming.

Prereqs: CS 121

CS 298 (s) Internship (1-16 credits)

Credit arranged

CS 299 (s) Directed Study (1-16 credits)

Credit arranged

CS 324 Computer Graphics (3 credits)

Use of the computer to define, store, manipulate, and display 2D and 3D objects; 2D curvefitting and 3D surface development. Cooperative: open to WSU degree-seeking students.

Prereqs: CS 121 and MATH 330

CS 328 Introduction to Computer Game Development (3 credits)

An introduction to data structures, algorithms, and programming techniques useful in the development of computer games. Topics including 2D graphics, sound programming, user interfaces, game genres, computerization of classic board games and simulation games.

Prereqs: CS 210 and CS 240

CS 336 Introduction to Information Assurance (3 credits)

Introduces the confidentiality, availability and integrity goals of information systems; resistance, recognition and response categories of assurance. Focus on computer security and survivability, including cryptography, network security, general purpose operating system security and dependability and special purpose systems for high assurance security and dependability.

Prereqs: CS 240

CS 355 Introduction to Robotics (3 credits)

This introductory course studies the fundamentals of robotics/mechatronics systems and their programming. We examine the entire robotic stack (Management and Control Software, PLC Controllers, Micro Controllers, Motors/Actuators, Sensors and Safety) and how software is used for each level. Several types of robots (small autonomous robots, 6 DOF robot arms) are programmed using Python and ROS2. The use of feedback in robotic systems from sensor inputs is taught and students will use simple camera systems for robotic vision. Typically Offered: Fall and Spring.

Prereqs: CS 120 and CS 121 or by Instructor Permission

CS 360 Database Systems (4 credits)

Study of database design and implementation; comparison of basic models (entity-relationship, hierarchical, network, relational); study of query languages; discussion of issues of integrity, security, dependencies, and normal forms. Typically Offered: Fall and Spring.

Prereqs: CS 121 and CS 150

CS 383 Software Engineering (4 credits)

Current topics in development of software systems; software life cycle model, requirements definition, requirements analysis, software specification, software architectural design, engineering discipline in software development, software measurement, user interface design, legal and ethical issues in software product development. Projects are developed to demonstrate application of concepts. Typically Offered: Fall and Spring.

Prereqs: A grade of C or better in CS 240 and CS 270, and a grade of C or better in either CS 210 or CYB 220.

CS 385 Theory of Computation (3 credits)

Cross-listed with MATH 385

Mathematical models of computation, including finite automata and Turing machines. (Fall only)

Prereqs: Permission

CS 395 Analysis of Algorithms (3 credits)

Cross-listed with MATH 395

Measures of efficiency; standard methods and examples in the design, implementation, and analysis of algorithms. (Spring only)

Prereqs: MATH 175 and CS 121

CS 398 (s) Computer Science Cooperative Internship (1-3 credits, max 3)

Supervised internship in professional computer science settings, integrating academic study with work experience; requires formal plan of activities before co-op assignment and final written report evaluated by on-campus faculty members. Graded P/F.

Prereqs: Permission

CS 400 (s) Seminar (1-16 credits, max arranged)

Credit arranged. Technical topics, employment practices, interviewing, and current research topics. Graded P/F. One lecture a week. Typically Offered: Fall and Spring.

Prereqs: Senior standing in CS

CS 404 (s) Special Topics (1-16 credits)

Credit arranged

CS 411 Parallel Programming (3 credits)

Joint-listed with CS 511

Analysis, mapping, and the application of parallel programming software to high-performance systems; the principles of spatial- and temporal-locality of data memory hierarchies in performance tuning; architectural considerations in the design and implementation of a parallel program; the tradeoff between threaded (shared memory) and message-passing (distributed memory) programming styles and performance. Additional projects/assignments required for graduate credit. Recommended Preparation: Proficiency in programming using a modern language such as C or C++.

Prereqs: CS 395

CS 415 Computational Biology: Sequence Analysis (3 credits)

Joint-listed with CS 515

Design and analyze algorithms that address the computational problems posed by biological sequence data, such as DNA or protein sequences. Topics may include: comparing sequences (from genes to genomes), database searching, multiple sequence alignment, phylogenetic inferencing, gene discovery and annotation, and genome assembly. Additional class presentation and/or paper required for graduate credit.

Prereqs: Knowledge of high level programming language, basic probability theory, basic molecular biology, or Permission

CS 420 Data Communication Systems (3 credits)

Joint-listed with CS 520

Concept and terminology of data communications, equipment, protocols (including ISO/OSI and TCP/IP), architectures; transmission alternatives, regulatory issues and network management. Additional projects/assignments required for graduate credit.

Prereqs: CS 150 and CS 240

CS 428 Multi-User Games and Virtual Environments (3 credits)

Joint-listed with CS 528

Software design and programming issues involved in constructing multi-user computer games and virtual environments, incorporating networking and 3D graphics. Additional projects and assignments required for graduate credit.

Prereqs: CS 210, CS 324, and CS 328

CS 431 (s) SFS Professional Development (3 credits)

Joint-listed with CS 531

This course is reserved for CyberCorps(R) Scholarship for Service program participants. Typically Offered: Fall and Spring.

Prereqs: Instructor Permission

CS 438 Network Security (3 credits)

Joint-listed with CS 538

Practical topics in network security; policy and mechanism, malicious code; intrusion detection, prevention, response; cryptographic techniques for privacy and integrity; emphasis on trade-offs between risk of misuse, cost of prevention, and societal issues; concepts implemented in programming assignments. Additional projects/assignments required for graduate credit. Recommended Preparation: Knowledge of C or C++. Cooperative: open to WSU degree-seeking students.

Prereqs: CS 336

CS 439 Applied Security Concepts (3 credits)

Joint-listed with CS 539

Hands-on approach to computer security with emphasis on developing practical knowledge of how cyber attacks work and how to defend against them. Detailed exploration of attacks such as buffer overruns, string attacks, worms, trojan horses, and denial-of-service attacks, and development of defenses against them. Additional work required for graduate credit. Recommended preparation: Good knowledge of C, operating system concepts and Unix.

Prereqs: CS 336 or Permission

CS 441 Advanced Operating Systems (3 credits)

Joint-listed with CS 541

Principles of contemporary operating systems for network and distributed computer systems; sequential processes, scheduling, process synchronization, device management, file systems, memory management, and protection and security. Additional work required for graduate credit. Typically Offered: Spring (Even Years).

Prereqs: CS 240

CS 443 Embedded Systems (3 credits)

Joint-listed with CS 543

Interfacing to an embedded system processor. Development of the processor's hardware-software interface. Application software development. Use of C and assembly language in device driver design, monitor-debugger, and real-time kernel. Regular laboratory assignments. Additional work required for graduate credit.

Prereqs: CS 150 or equivalent

CS 444 Supervisory Control and Critical Infrastructure Systems (3 credits)

Cross-listed with ECE 444

Joint-listed with CS 544, ECE 544

Principles of network-based distributed real-time control and critical infrastructure systems. Integration of dedicated control protocols with wide area networks (e. g. the Internet). Issues of reliability, cost, and security. Application to selected industries, such as electric power distribution and waste and water management. Recommended preparation: ECE 340, CS 240, ME 313, CE 330, or CE 372. (Spring, alt/years. )

Prereqs: Senior or Graduate standing in the College of Engineering

CS 445 Compiler Design (4 credits)

Algorithms used by the following system software: assemblers, macro-processors, interpreters, and compilers; compiler design options and code optimization; all concepts implemented in major programming assignments.

Prereqs: CS 210 and CS 385

CS 447 Digital Forensics (3 credits)

Cross-listed with CYB 420

Joint-listed with CS 547, CYB 520

This course covers modern procedures, techniques, and best practices for digital forensic data acquisition, analysis, and case building. Covered topics and knowledge areas include (a) Applicable laws, policies, rules, procedures and best practices, and selected digital forensics techniques and tools (DFS); (b) Processes, techniques, tools, and best practices for static digital forensic data acquisition, analysis, and reporting from different host systems (HOF) and raw media (MEF). At the end of this course, students should have the knowledge, skills, and abilities to be able to appropriately prepare, perform, and record digital forensic investigation tasks on a selected set of media and hosts, of varied types. This including knowledge, skills, and abilities to: (1) Identify and describe applicable laws, policies, procedures, and static acquisition and analysis techniques and best practices for digital forensic investigations; (2) Identify the appropriate tools for a given forensic task on a given type of media, host, or image; and (3) Select and successfully use a variety of digital forensic tools for acquiring, analyzing, and recording case information. Hands-on and/or laboratory work is an essential component in this course. Significant additional work and performance required for graduate-level credit. Typically Offered: Fall.

Prereqs: CYB 310

CS 449 Fault-Tolerant Systems (3 credits)

Cross-listed with ECE 449

Joint-listed with CS 549

Design, modeling, analysis and integration of hardware and software to achieve dependable computing systems employing on-line fault tolerance; theory and fundamental concepts of designing reliable systems; analytical evaluation techniques, faults and advances in ultra-reliable distributed systems, fault-tolerant software systems; case studies include the space Shuttle, Airbus, and Boeing fly-by-wire primary flight computers as well as systems in reliable data bases and financial markets. Additional projects and assignments required for graduate credit.

Prereqs: CS 240 or Permission

CS 451 Advanced Computer Architecture (3 credits)

Cross-listed with ECE 441

Joint-listed with CS 551 and ECE 541

J Principles and alternatives in instruction set design; processor implementation techniques, pipelining, parallel processors, memory hierarchy, and input/output; measurement of performance and cost/performance trade-off. Additional work required for graduate credit.

Prereqs: CS 150, STAT 301 or Permission

CS 452 Real-Time Operating Systems (3 credits)

Joint-listed with CS 552

Topics of interest in the implementation of Real-Time Operating Systems, especially as applicable to embedded systems, including a relevant hardware review, interrupts and interrupt handling, real-time scheduling principles and implementation, latency, task management, shared data and synchronization, timers, message passing, tradeoffs between memory space and speed. Students will build a simple but relatively complete real-time operating system over the course of the semester. Additional projects and assignments required for graduate credit. (Spring only)

Prereqs: CS 240

CS 453 Robotic Systems Engineering I (3 credits)

Cross-listed with ME 459

Joint-listed with CS 553, ME 559

Topics to be covered include: principles of distributed systems control, interfacing and signal conditioning of sensors and actuators, data acquisition and signal processing, microprocessor-based control, physical modeling, and hardware and software simulation for model validation and control. Typically Offered: Fall and Spring.

Prereqs: Instructor Permission

CS 454 Robotic Systems Engineering II (3 credits)

Joint-listed with CS 554

Topics to be covered include: simulation of mixed environment robotic systems for model validation and control, interfacing and signal conditioning of sensors and actuators, and data acquisition and signal processing. Software architectures utilizing the ROS (Robotic Operating System) will be implemented and demonstrated on the appropriate physical robots and for associated remote computer-based sensors during the course. Typically Offered: Fall and Spring.

Prereqs: Instructor permission

CS 455 Machine Vision (3 credits)

This course will teach students state-of-the-art practices, tools and methodologies to the process of generating a symbolic description of a given environment from an image. Lectures will describe the mathematics of image formation, motion vision, recovering and geolocating shapes within images. Use of local processing power and use of cloud based algorithms will be implemented. Applications for robotics, autonomous vehicles and machine interaction are discussed. Completion of MATH 330 is strongly recommended. Typically Offered: Fall.

Prereqs: Instructor Permission

CS 460 Database Management Systems Design (3 credits)

Joint-listed with CS 560

Theory, analysis and implementation of database architecture, security, performance, query optimization, recovery and concurrency control, reliability, integrity, commit protocols, distributed processing, deadlock detection and management. Additional projects/assignments required for graduate credits.

Prereqs: CS 360

CS 466 PLC Programming for Automation (3 credits)

Joint-listed with CS 566

This course covers the theory and practice of utilizing Programmable Logic Controllers used in industrial automation. It will provide background in Boolean logic and its application in combinational and sequential logic. The course will then go over analog and digital input/output such as light sensors, switches, motors, relays, pulse-width modulation, encoders and how they relate to PLCs. Computer networking and the Modbus communications protocol and security issues will be examined. Additional projects/assignments required for graduate credit. Typically Offered: Fall.

Prereqs: None.

CS 470 Artificial Intelligence (3 credits)

Joint-listed with CS 570

Concepts and techniques involved in artificial intelligence, Lisp, goal-directed searching, history trees, inductive and deductive reasoning, natural language processing, and learning. Extra term paper required for graduate credit.

Prereqs: CS 210

CS 472 Evolutionary Computation (3 credits)

Joint-listed with CS 572

Solving computation problems by "growing" solutions; simulates natural evolution using analogues of mutation, crossover, and other generic transformations on representations of potential solutions; standard EC techniques such as genetic algorithms and evolutionary programming, mathematical explanations of why they work, and a survey of some applications; the focus is on solving real-world problems using projects. Graduate-level research and possible paper or presentation required for graduate credit.

Prereqs: CS 210

CS 474 Deep Learning (3 credits)

Joint-listed with CS 574

Deep Learning is enabling many rapid technological advances across multiple science disciplines, from automated speech recognition through medical image analysis and to autonomous robots and vehicles. This course will cover Deep Learning topics on gradient decent (GD), cross-validation, regularization, deep feedforward neural networks (NNs), convolutional NNs (CNNs), recurrent NNs (RNNs), deep architectures, transfer learning, and multitask learning. In this course students will learn to: understand and describe concepts and implementations of: deep forward networks, regularization, CNNs, RNNs, and transfer learning; apply CNNs and RNNs for modeling, analyzing, and solving real-world problems; select and apply adequate or best-fit toolboxes to train, tune, and test a deep neural network. Students will also gain an ability to successfully communicate, collaborate, and lead within a project group setting. Additional work required for graduate credit.

Prereqs: (CS 121 or MATH 330) and STAT 301

CS 475 Machine Learning (3 credits)

Joint-listed with CS 575

Analysis and implementation of classic machine learning algorithms including neural networks, deep learning networks, principle component analysis, decision trees, support vector machines, clustering, reinforcement learning, ensemble learning, K-means, self-organizing maps and probabilistic learning such as Markov Chain Monte Carlo and Expectation Maximization algorithms. Techniques of pre-processing data, training, testing, and validating will be discussed along with statistical measures commonly used and pitfalls commonly encountered. Additional work required for graduate credit.

Prereqs: CS 210

CS 477 Python for Machine Learning (3 credits)

Joint-listed with CS 577

Python is widely used for Machine Learning and Data Science. This course introduces students to current approaches and techniques for finding solutions to Data Science problems using Machine Learning with Python. Topics include: classification, regression, clustering, ensemble learning, and deep learning. The course offers hands-on experiences with Machine Learning techniques using Python-based libraries and also modern tools used by computer and data scientists such as Jupyter Notebook. In this course students will learn: an ability to understand and describe the fundamental concepts and techniques of Machine Learning and their Python-based implementations; an ability to design, implement, and evaluate Python-based Machine Learning solutions for problems such as data classification and clustering. Students will also develop leadership and teamwork abilities through group discussions and projects. Additional work required for graduate credit.

Prereqs: (CS 121 or MATH 330) and STAT 301

CS 479 Data Science (3 credits)

Joint-listed with CS 579

Data science is advancing the conduct of science in individual and collaborative works. Data science combines aspects of data management, library science, computer science, and physical science using supporting cyberinfrastructure and information technology. Key methodologies in application areas based on real research experience are taught to build a skill-set that enables students to handle each stage in a data life cycle, from data collection, analysis, archiving, to data discovery, access and reuse. Additional work required for graduate credit.

Prereqs: MATH 330 or Permission

CS 480 CS Senior Capstone Design I (3 credits)

Capstone design sequence for computer science majors. Formal development techniques applied to definition, design, coding, testing, and documentation of a large software project. Projects are customer-specified, includes real-world design constraints, and usually encompasses two semesters. Students work in teams. Significant lab work required.

Prereqs: CS 383, ENGL 317, and Senior standing

CS 481 CS Senior Capstone Design II (3 credits)

General Education: Senior Experience

Continuation of CS 480. Application of formal design techniques to development of a large computer science project performed by students working in teams. Significant lab work required.

Prereqs: CS 480

CS 487 Adversarial Machine Learning (3 credits)

Joint-listed with CS 587

The course introduces students to adversarial attacks and defenses against machine learning models. The particular focus is on adversarial examples in deep learning models, due to their prevalence in modern machine learning applications. Covered topics include evasion attacks against white-box and black-box machine learning models, data poisoning attacks, privacy attacks, defense strategies against common adversarial attacks, generative adversarial networks, and robust machine learning models. The course also provides an overview of adversarial attacks against machine learning models used in cybersecurity applications. Additional work is required for graduate credit. Typically Offered: Spring.

Prereqs: Instructor Permission Required

CS 489 Semantic Web and Open Data (3 credits)

Joint-listed with CS 589

The Semantic Web extends the core principles of the World Wide Web to make the meaning of data machine-readable. This course covers the technological framework and associated functionalities enabled by the Semantic Web and Linked Open Data that provide a space for large scale data integration, reasoning and analysis. In this course students will learn: an ability to understand and describe the fundamental concepts in Semantic Web, such as ontology, RDF, OWL, logic reasoning, ontology engineering, knowledge graph, Linked Data, SPARQL, Open Data, as well as the inter-relationships among those concepts; an ability to design and implement domain-specific solutions for Big Data problems using concepts such as ontology engineering, data querying, analysis, and transformation, and output generation; an ability to describe and apply ethical concepts such as privacy, intellectual property, and responsibility as they relate to data analysis and the Semantic Web. Students will also develop leadership and teamwork abilities through group projects. Additional work required for graduate credit.

Prereqs: CS 360 or CS 479 or CS 579

CS 499 (s) Directed Study (1-16 credits)

Credit arranged

CS 500 Master's Research and Thesis (1-16 credits)

Credit arranged

CS 501 (s) Seminar (1-16 credits)

Credit arranged

CS 502 (s) Directed Study (1-16 credits)

Credit arranged

CS 504 (s) Special Topics (1-16 credits)

Credit arranged

CS 505 (s) Professional Development (1-16 credits)

Credit arranged

CS 507 Computer Science and Cyber Research Methods (3 credits)

Cross-listed with CYB 507

This course introduces graduate students to approaches, methods, techniques, tools, and legal and ethical rules and regulations for planning, designing, performing, evaluating, and reporting computer science and cybersecurity research and results. In this course, students should gain the needed knowledge and skills to be able to: (1) Identify appropriate publication venues and adequately perform related literature searches; (2) Critically read and interpret related research questions, methods, experiments, and results; (3) Develop a scientific research question; (4) Develop a research plan with corresponding research hypothesis and hypothesis testing experiments; (5) Analyze research experiment results; (6) Present research and results to a variety of audiences in written and oral form; (7) Identify applicable laws, such as human subjects research and conflicts of interest regulations, and ethical and non-ethical behaviors in the conduct of research.

Prereqs: Graduate standing or instructor permission

CS 510 Programming Language Theory (3 credits)

Advanced topics in programming language theory including formal syntax, formal semantics, denotational semantics, and type theory; principles of programming language design are stressed; not a comparative language class. Cooperative: open to WSU degree-seeking students.

Coreqs: CS 385 or equivalent

CS 511 Parallel Programming (3 credits)

Joint-listed with CS 411

Analysis, mapping, and the application of parallel programming software to high-performance systems; the principles of spatial- and temporal-locality of data memory hierarchies in performance tuning; architectural considerations in the design and implementation of a parallel program; the tradeoff between threaded (shared memory) and message-passing (distributed memory) programming styles and performance. Additional projects/assignments required for graduate credit. Recommended Preparation: Proficiency in programming using a modern language such as C or C++.

Prereqs: CS 395

CS 515 Computational Biology: Sequence Analysis (3 credits)

Joint-listed with CS 415

Design and analyze algorithms that address the computational problems posed by biological sequence data, such as DNA or protein sequences. Topics may include: comparing sequences (from genes to genomes), database searching, multiple sequence alignment, phylogenetic inferencing, gene discovery and annotation, and genome assembly. Additional class presentation and/or paper required for graduate credit.

Prereqs: Knowledge of high level programming language, basic probability theory, basic molecular biology; or Permission

CS 520 Data Communication Systems (3 credits)

Joint-listed with CS 420

Concept and terminology of data communications, equipment, protocols (including ISO/OSI and TCP/IP), architectures; transmission alternatives, regulatory issues and network management. Additional projects/assignments required for graduate credit.

Prereqs: CS 150 and CS 240

CS 528 Multi-User Games and Virtual Environments (3 credits)

Joint-listed with CS 428

Software design and programming issues involved in constructing multi-user computer games and virtual environments, incorporating networking and 3D graphics. Additional projects and assignments required for graduate credit.

Prereqs: CS 210, CS 324, and CS 328

CS 531 (s) SFS Professional Development (3 credits, max 99)

Joint-listed with CS 431

This course is reserved for CyberCorps(R) Scholarship for Service program participants. Typically Offered: Fall and Spring.

CS 536 Advanced Information Assurance Concepts (3 credits)

Cross-listed with CYB 536

This course covers theory, approaches, techniques, and best practices for (a) Secure and resilient system and network architectures (IAA); (b) Cybersecurity compliance (IAC); (c) Cybersecurity standards (IAS); and (d) Security risk analysis (SRA). At the end of this course, given examples of cyber system models and scenarios, architectures, and implementations of different types and of varied complexity, students should have the knowledge, skills, and abilities to be able to: (1) Understand organizational and/or cyber-system requirements, architecture, design, and implementation; (2) Describe and analyze the system with appropriate detail; (3) Develop a threat model; (4) Identify potential vulnerabilities; (5) Identify appropriate risk analysis processes and standards; (6) Perform risk analysis and assessment; (7) Identify, evaluate, design, apply, and document security and resiliency enhancements and risk removal or mitigation approaches, tasks, and security controls. Such approaches, tasks, and controls including a combination of the following types: organizational, policy, technical, human factors, processes, protocols, techniques, and documents as appropriate.

Prereqs: Graduate standing and instructor permission

CS 538 Network Security (3 credits)

Joint-listed with CS 438

Practical topics in network security; policy and mechanism, malicious code; intrusion detection, prevention, response; cryptographic techniques for privacy and integrity; emphasis on trade-offs between risk of misuse, cost of prevention, and societal issues; concepts implemented in programming assignments. Additional projects/assignments required for graduate credit. Recommended Preparation: Knowledge of C or C++. CS 438 is cooperative: open to WSU degree-seeking students.

Prereqs: CS 336

CS 539 Applied Security Concepts (3 credits)

Joint-listed with CS 439

Hands-on approach to computer security with emphasis on developing practical knowledge of how cyber attacks work and how to defend against them. Detailed exploration of attacks such as buffer overruns, string attacks, worms, trojan horses, and denial-of-service attacks, and development of defenses against them. Additional work required for graduate credit. Recommended preparation: Good knowledge of C, operating system concepts and Unix.

Prereqs: CS 336 or Permission

CS 541 Advanced Operating Systems (3 credits)

Joint-listed with CS 441

Principles of contemporary operating systems for network and distributed computer systems; sequential processes, scheduling, process synchronization, device management, file systems, memory management, and protection and security. Additional work required for graduate credit. Typically Offered: Spring (Even Years).

Prereqs: CS 240

CS 543 Embedded Systems (3 credits)

Joint-listed with CS 443

Interfacing to an embedded system processor. Development of the processor's hardware-software interface. Application software development. Use of C and assembly language in device driver design, monitor-debugger, and real-time kernel. Regular laboratory assignments. Additional work required for graduate credit.

Prereqs: CS 150 or equivalent

CS 544 Supervisory Control and Critical Infrastructure Systems (3 credits)

Cross-listed with ECE 544

Joint-listed with CS 444, ECE 444

Principles of network-based distributed real-time control and critical infrastructure systems. Integration of dedicated control protocols with wide area networks (e. g. the Internet). Issues of reliability, cost, and security. Application to selected industries, such as electric power distribution and waste and water management. Recommended preparation: ECE 340, CS 240, ME 313, CE 330, or CE 372. (Spring, alt/years. )

CS 547 Digital Forensics (3 credits)

Cross-listed with CYB 520

Joint-listed with CS 447, CYB 420

This course covers modern procedures, techniques, and best practices for digital forensic data acquisition, analysis, and case building. Covered topics and knowledge areas include (a) Applicable laws, policies, rules, procedures and best practices, and selected digital forensics techniques and tools (DFS); (b) Processes, techniques, tools, and best practices for static digital forensic data acquisition, analysis, and reporting from different host systems (HOF) and raw media (MEF). At the end of this course, students should have the knowledge, skills, and abilities to be able to appropriately prepare, perform, and record digital forensic investigation tasks on a selected set of media and hosts, of varied types. This including knowledge, skills, and abilities to: (1) Identify and describe applicable laws, policies, procedures, and static acquisition and analysis techniques and best practices for digital forensic investigations; (2) Identify the appropriate tools for a given forensic task on a given type of media, host, or image; and (3) Select and successfully use a variety of digital forensic tools for acquiring, analyzing, and recording case information. Hands-on and/or laboratory work is an essential component in this course. Significant additional work and performance required for graduate-level credit. Typically Offered: Fall.

CS 549 Fault/Tolerant Systems (3 credits)

Joint-listed with CS 449 and ECE 449

Design, modeling, analysis and integration of hardware and software to achieve dependable computing systems employing on-line fault tolerance; theory and fundamental concepts of designing reliable systems; analytical evaluation techniques, faults and advances in ultra-reliable distributed systems, fault-tolerant software systems; case studies include the space Shuttle, Airbus, and Boeing fly-by-wire primary flight computers as well as systems in reliable data bases and financial markets. Additional projects and assignments required for graduate credit.

Prereqs: CS 240 or Permission

CS 551 Advanced Computer Architecture (3 credits)

Cross-listed with ECE 541

Joint-listed with CS 451 and ECE 441

Principles and alternatives in instruction set design; processor implementation techniques, pipelining, parallel processors, memory hierarchy, and input/output; measurement of performance and cost/performance trade-off. Additional work required for graduate credit.

Prereqs: CS 150, STAT 301 or Permission

CS 552 Real Time Operating Systems (3 credits)

Joint-listed with CS 452

Topics of interest in the implementation of Real-Time Operating Systems, especially as applicable to embedded systems, including a relevant hardware review, interrupts and interrupt handling, real-time scheduling principles and implementation, latency, task management, shared data and synchronization, timers, message passing, trade-offs between memory space and speed. Students will build a simple but relatively complete real-time operating system over the course of the semester. Additional projects and assignments are required for graduate credit. (Spring only)

Prereqs: CS 240

CS 553 Robotic Systems Engineering I (3 credits)

Cross-listed with ME 559

Joint-listed with CS 453, ME 459

Topics to be covered include: principles of distributed systems control, interfacing and signal conditioning of sensors and actuators, data acquisition and signal processing, microprocessor-based control, physical modeling, and hardware and software simulation for model validation and control. Typically Offered: Fall and Spring.

CS 554 Robotic Systems Engineering II (3 credits)

Joint-listed with CS 454

Topics to be covered include: simulation of mixed environment robotic systems for model validation and control, interfacing and signal conditioning of sensors and actuators, and data acquisition and signal processing. Software architectures utilizing the ROS (Robotic Operating System) will be implemented and demonstrated on the appropriate physical robots and for associated remote computer-based sensors during the course. Typically Offered: Fall and Spring.

CS 555 Machine Vision (3 credits)

This course will teach students state-of-the-art practices, tools and methodologies to the process of generating a symbolic description of a given environment from an image. Lectures will describe the mathematics of image formation, motion vision, recovering and geolocating shapes within images. Use of local processing power and use of cloud based algorithms will be implemented. Applications for robotics, autonomous vehicles and machine interaction are discussed. Completion of MATH 330 is strongly recommended. Typically Offered: Fall.

Prereqs: Instructor Permission

CS 560 Database Management Systems Design (3 credits)

Joint-listed with CS 460

Theory, analysis and implementation of database architecture, security, performance, query optimization, recovery and concurrency control, reliability, integrity, commit protocols, distributed processing, deadlock detection and management. Additional projects/assignments required for graduate credit.

Prereqs: CS 360

CS 566 PLC Programming for Automation (3 credits)

Joint-listed with CS 466

This course covers the theory and practice of utilizing Programmable Logic Controllers used in industrial automation. It will provide background in Boolean logic and its application in combinational and sequential logic. The course will then go over analog and digital input/output such as light sensors, switches, motors, relays, pulse-width modulation, encoders and how they relate to PLCs. Computer networking and the Modbus communications protocol and security issues will be examined. Additional projects/assignments required for graduate credit. Typically Offered: Fall.

Prereqs: None.

CS 570 Artificial Intelligence (3 credits)

Joint-listed with CS 470

Concepts and techniques involved in artificial intelligence, Lisp, goal-directed searching, history trees, inductive and deductive reasoning, natural language processing, and learning. Extra term paper required for graduate credit.

Prereqs: CS 210

CS 572 Evolutionary Computation (3 credits)

Joint-listed with CS 472

Solving computation problems by "growing" solutions; simulates natural evolution using analogues of mutation, crossover, and other generic transformations on representations of potential solutions; standard EC techniques such as genetic algorithms and evolutionary programming, mathematical explanations of why they work, and a survey of some applications; the focus is on solving real-world problems using projects. Graduate-level research and possible paper or presentation required for graduate credit.

Prereqs: CS 210

CS 574 Deep Learning (3 credits)

Joint-listed with CS 474

Deep Learning is enabling many rapid technological advances across multiple science disciplines, from automated speech recognition through medical image analysis and to autonomous robots and vehicles. This course will cover Deep Learning topics on gradient decent (GD), cross-validation, regularization, deep feedforward neural networks (NNs), convolutional NNs (CNNs), recurrent NNs (RNNs), deep architectures, transfer learning, and multitask learning. In this course students will learn to: understand and describe concepts and implementations of: deep forward networks, regularization, CNNs, RNNs, and transfer learning; apply CNNs and RNNs for modeling, analyzing, and solving real-world problems; select and apply adequate or best-fit toolboxes to train, tune, and test a deep neural network. Students will also gain an ability to successfully communicate, collaborate, and lead within a project group setting. Additional work required for graduate credit.

Prereqs: (CS 121 or MATH 330) and STAT 301

CS 575 Machine Learning (3 credits)

Joint-listed with CS 475

Analysis and implementation of classic machine learning algorithms including neural networks, deep learning networks, principle component analysis, decision trees, support vector machines, clustering, reinforcement learning, ensemble learning, K-means, self-organizing maps and probabilistic learning such as Markov Chain Monte Carlo and Expectation Maximization algorithms. Techniques of preprocessing data, training, testing, and validating will be discussed along with statistical measures commonly used and pitfalls commonly encountered. Additional work required for graduate credit.

Prereqs: CS 210

CS 577 Python for Machine Learning (3 credits)

Joint-listed with CS 477

Python is widely used for Machine Learning and Data Science. This course introduces students to current approaches and techniques for finding solutions to Data Science problems using Machine Learning with Python. Topics include: classification, regression, clustering, ensemble learning, and deep learning. The course offers hands-on experiences with Machine Learning techniques using Python-based libraries and also modern tools used by computer and data scientists such as Jupyter Notebook. In this course students will learn: an ability to understand and describe the fundamental concepts and techniques of Machine Learning and their Python-based implementations; an ability to design, implement, and evaluate Python-based Machine Learning solutions for problems such as data classification and clustering. Students will also develop leadership and teamwork abilities through group discussions and projects. Additional work required for graduate credit.

Prereqs: (CS 121 or MATH 330) and STAT 301

CS 578 Neural Network Design (3 credits)

Introduction to neural networks and problems that can be solved by their application; introduction of basic neural network architectures; learning rules are developed for training these architectures to perform useful functions; various training techniques employing the learning rules discussed and applied; neural networks used to solve pattern recognition and control system problems.

Prereqs: Permission

CS 579 Data Science (3 credits)

Joint-listed with CS 479

Data science is advancing the conduct of science in individual and collaborative works. Data science combines aspects of data management, library science, computer science, and physical science using supporting cyber-infrastructure and information technology. Key methodologies in application areas based on real research experience are taught to build a skill-set that enables students to handle each stage in a data life cycle, from data collection, analysis, archiving, to data discovery, access and reuse. Additional work required for graduate credit.

Prereqs: MATH 330 or Permission

CS 580 Graduate Project (1-6 credits, max 6)

Application of formal design and documentation techniques to the development of computer programming project; project selected in consultation with student's major professor.

Prereqs: CS 383, CS 480 or Permission

CS 587 Adversarial Machine Learning (3 credits)

Joint-listed with CS 487

The course introduces students to adversarial attacks and defenses against machine learning models. The particular focus is on adversarial examples in deep learning models, due to their prevalence in modern machine learning applications. Covered topics include evasion attacks against white-box and black-box machine learning models, data poisoning attacks, privacy attacks, defense strategies against common adversarial attacks, generative adversarial networks, and robust machine learning models. The course also provides an overview of adversarial attacks against machine learning models used in cybersecurity applications. Additional work is required for graduate credit. Typically Offered: Spring.

CS 589 Semantic Web and Open Data (3 credits)

Joint-listed with CS 489

The Semantic Web extends the core principles of the World Wide Web to make the meaning of data machine-readable. This course covers the technological framework and associated functionalities enabled by the Semantic Web and Linked Open Data that provide a space for large scale data integration, reasoning and analysis. In this course students will learn: an ability to understand and describe the fundamental concepts in Semantic Web, such as ontology, RDF, OWL, logic reasoning, ontology engineering, knowledge graph, Linked Data, SPARQL, Open Data, as well as the inter-relationships among those concepts; an ability to design and implement domain-specific solutions for Big Data problems using concepts such as ontology engineering, data querying, analysis, and transformation, and output generation; an ability to describe and apply ethical concepts such as privacy, intellectual property, and responsibility as they relate to data analysis and the Semantic Web. Students will also develop leadership and teamwork abilities through group projects. Additional work required for graduate credit.

Prereqs: CS 360 or CS 479 or CS 579

CS 598 (s) Internship (1-16 credits)

Credit arranged

CS 599 (s) Non-thesis Master's Research (1-16 credits)

Credit arranged. Research not directly related to a thesis or dissertation. There is a limit on the number of credits in 599 that can be included on a study plan.

Prereqs: Permission

CS 600 Doctoral Research and Dissertation (1-45 credits)

Credit arranged