Computer Science (CS)

Vertically-related courses in this subject field are:  CS 120-CS 121. 

CS 112 Computational Thinking and Problem Solving

3 credits
CS 112 carries no credit after CS 120. 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.
Prereq: 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.
Prereq: 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.
Prereq: CS 120 with a grade of ‘C’ or higher
Coreq: 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.
Prereq: CS 120.

CS 204 (s) Special Topics

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.
Prereq: CS 121.

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.
Prereq: CS 121 and CS 150
Coreq: 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.
Prereq: CS 121.

CS 298 (s) Internship

Credit arranged.

CS 299 (s) Directed Study

Credit arranged.

CS 324 Computer Graphics

3 credits
Use of the computer to define, store, manipulate, and display 2-D and 3-D objects; 2-D curvefitting and 3-D surface development. Cooperative: open to WSU degree-seeking students.
Prereq: 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.
Prereq: 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.
Prereq: CS 240.

CS 360 Database Systems

3 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.
Prereq: CS 240 and CS 270 .

CS 383 Software Engineering

3 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.
Prereq: CS 210, CS 240 and CS 270 or Permission.

CS 385 Theory of Computation

3 credits
Cross-listed with MATH 385.
Mathematical models of computation, including finite automata and Turing machines. (Fall only)
Prereq: 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)
Prereq: 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.
Prereq: Permission.

CS 400 (s) Seminar

0 credits
Technical topics, employment practices, interviewing, and current research topics. Graded P/F. One lec a wk.
Prereq: sr standing in CS.

CS 401 Contemporary Issues in Computer Science

1 credit
Ethical, legal, social, and intellectual property issues; current research topics; and other issues of importance to the professional computer scientist. Graded P/F.
Prereq: Senior standing in CS.

CS 404 (s) Special Topics

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++.
Prereq: 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.
Prereq: 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 reqd for grad cr.
Prereq: CS 150 and CS 240 .

CS 424 Advanced Computer Graphics

3 credits
Joint-listed with CS 524.
Graphical user interfaces; rendering for realism including shading, shadows and textures; fractals; raster displays, pixmaps, and antialiasing; 3D curves and surfaces; color theory; hidden surfaces; ray tracing; games. Additional work required for graduate credit. (Spring only)
Prereq: CS 324, MATH 175 .

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 are required for graduate credit.
Prereq: CS 210, CS 324, and CS 328 .

CS 431 (s) SFS Professional Development

1 credit
Joint-listed with CS 531.

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 tradeoffs between risk of misuse, cost of prevention, and societal issues; concepts implemented in programming assignments. Additional projects/assignments reqd for grad cr. Recommended Preparation: Knowledge of C or C++. CS 438 is a cooperative course available to WSU degree-seeking students.
Prereq: 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 reqd for grad cr. Recommended preparation: Good knowledge of C, operating system concepts and Unix.
Prereq: CS 336 or Permission.

CS 444 Supervisory Control and Critical Infrastructure Systems

1 credit
Joint-listed with CS 544. Cross-listed with ECE 444, 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/yrs.)
Prereq: 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.
Prereq: CS 210 and CS 385 .

CS 447 Computer and Network Forensics

3 credits
Joint-listed with CS 547
Competence in using established forensic methods in the handling of electronic evidence; rigorous audit/logging and date archival practices; prevention, detection, apprehension, and prosecution of security violators and cyber criminals; identifying and correcting computer vulnerabilities in a way that is smart, prudent, and responsible. Additional work required for graduate credit.
Prereq: CS 336 and Permission.

CS 448 Survivable Systems and Networks

3 credits
Joint-listed with CS 548
Computers and networks under malicious threat or attack. Attributes of survivability, trustworthiness, dependability and assurance. Threats to survivability, security, reliability and performance. Models and analytical methods to assess survivability, vulnerability, interdependence and risk. Systemic inadequacies and approaches for overcoming deficiencies. Literature review and case studies. Additional projects/assignments required for graduate credit. Recommended Preparation: CS 449, CS 549 or CS 438.

CS 449 Fault-Tolerant Systems

3 credits
Joint-listed with CS 549. Cross-listed wtih 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 reqd for grad cr.
Prereq: CS 240 or Permission.

CS 451 Advanced Computer Architecture

3 credits
Joint-listed with CS 551. Cross-listed with ECE 441, ECE 541.
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.
Prereq: 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 are required for graduate credit. (Spring only)
Prereq: CS 240 .

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.
Prereq: CS 360 .

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 reqd for cr in CS 570.
Prereq: 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 grad cr.
Prereq: CS 210 .

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 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.
Prereq: CS 210 .

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 lifecycle, from data collection, analysis, archiving, to data discovery, access and reuse. Additional work required for graduate credit.
Prereq: 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.
Prereq: CS 383, ENGL 317, and Senior standing .

CS 481 CS Senior Capstone Design II

3 credits
Gen Ed: 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.
Prereq: CS 480 .

CS 499 (s) Directed Study

Credit arranged.

CS 500 Master's Research and Thesis

Credit arranged.

CS 501 (s) Seminar

Credit arranged.

CS 502 (s) Directed Study

Credit arranged.

CS 504 (s) Special Topics

Credit arranged.

CS 505 (s) Professional Development

Credit arranged.

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.
Coreq: 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++.
Prereq: CS 395.

CS 512 Parallel Algorithms

3 credits
Parallel algorithm design; formal analysis of parallel algorithmic complexity; measures of parallel efficiency; relationship between algorithmic structure and parallel mapping strategies; the consequences of spatial- and temporal-locality. Additional projects/assignments required for graduate credit.
Prereq: 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.
Prereq: 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 reqd for grad cr.
Prereq: CS 150 and CS 240 .

CS 524 Advanced Computer Graphics

3 credits
Joint-listed with CS 424.
Graphical user interfaces; rendering for realism including shading, shadows and textures; fractals; raster displays, pixmaps, and antialiasing; 3D curves and surfaces; color theory; hidden surfaces; ray tracing; games. Additional work required for graduate credit. (Spring only)
Prereq: CS 324, MATH 175 .

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 are required for graduate credit.
Prereq: CS 210, CS 324, and CS 328 .

CS 531 (s) SFS Professional Development

1 credit
Joint-listed with CS 431.

CS 536 Advanced Information Assurance Concepts

3 credits
Advanced topics in design and analysis of network, database, and operating system security; current trends and research in mandatory and discretionary security policies. Recommended preparation: CS 336.

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 tradeoffs between risk of misuse, cost of prevention, and societal issues; concepts implemented in programming assignments. Additional projects/assignments reqd for grad cr. Recommended Preparation: Knowledge of C or C++. CS 438 is a cooperative course available to WSU degree-seeking students.
Prereq: CS 336.

CS 539 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 reqd for grad cr. Recommended preparation: Good knowledge of C, operating system concepts and Unix.
Prereq: CS 336 or Permission.

CS 541 Advanced Operating Systems

3 credits
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.
Prereq: CS 240.

CS 543 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. (Fall only)
Prereq: CS 383 .

CS 544 Control and Crit Infra Systems

1 credit
Joint-listed with CS 444. Cross-listed with ECE 444, 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/yrs.)
Prereq: Senior or Graduate standing in the College of Engineering .

CS 547 Computer and Network Forensics

3 credits
Joint-listed with CS 447
Competence in using established forensic methods in the handling of electronic evidence; rigorous audit/logging and date archival practices; prevention, detection, apprehension, and prosecution of security violators and cyber criminals; identifying and correcting computer vulnerabilities in a way that is smart, prudent, and responsible. Additional work required for graduate credit.
Prereq: CS 336 and Permission.

CS 548 Survivable Systems and Networks

3 credits
Joint-listed with CS 448
Computers and networks under malicious threat or attack. Attributes of survivability, trustworthiness, dependability and assurance. Threats to survivability, security, reliability and performance. Models and analytical methods to assess survivability, vulnerability, interdependence and risk. Systemic inadequacies and approaches for overcoming deficiencies. Literature review and case studies. Additional projects/assignments required for graduate credit. Recommended Preparation: CS 449, CS 549 or CS 438.

CS 549 Fault/Tolerant Systems

3 credits
Joint-listed with CS 449. Cross-listed wtih 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 reqd for grad cr.
Prereq: CS 240 or Permission.

CS 551 Advanced Computer Architecture

3 credits
Joint-listed with CS 551. Cross-listed with ECE 441, ECE 541.
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.
Prereq: 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, 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 are required for graduate credit. (Spring only)
Prereq: CS 240 .

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 credits.
Prereq: CS 360 .

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 reqd for cr in CS 570.
Prereq: 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 grad cr.
Prereq: CS 210 .

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.
Prereq: CS 210 .

CS 578 Neural Network Design

3 credits
Cross-listed with ECE 578 and ME 578.
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.
Prereq: 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 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 lifecycle, from data collection, analysis, archiving, to data discovery, access and reuse. Additional work required for graduate credit.
Prereq: 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.
Prereq: CS 383, CS 480 or Permission.

CS 598 (s) Internship

Credit arranged.

CS 599 (s) Non-thesis Master's Research

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.)
Prereq: Permission.

CS 600 Doctoral Research and Dissertation

Credit arranged.