CS - Computer Science

Frederick Sheldon, Chair, Dept. of Computer Science (237 Janssen Engr. Bldg. 83844-1010; phone 208/885-6501).

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

CS 112 Computational Thinking and Problem Solving

CS 112 Computational Thinking and Problem Solving (3 cr)

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

CS 120 Computer Science I (4 cr)

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

CS 121 Computer Science II (3 cr)

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 127 Programming Language

CS 127 (s) Programming Language (1-3 cr, max arr)

Introduction to computer programming in a selected language.

CS 150 Computer Organization and Architecture

CS 150 Computer Organization and Architecture (3 cr)

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 Special Topics

CS 204 (s) Special Topics (cr arr)

CS 210 Programming Languages

CS 210 Programming Languages (3 cr)

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

CS 240 Computer Operating Systems (3 cr)

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 150

Coreq: CS 270

CS 270 System Software

CS 270 System Software (3 cr)

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 299 Directed Study

CS 299 (s) Directed Study (cr arr)

CS 324 Computer Graphics

CS 324 Computer Graphics (3 cr)

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

CS 328 Introduction to Computer Game Development (3 cr)

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

CS 336 Introduction to Information Assurance (3 cr)

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 350 Intermediate Computer Architecture

CS 350 Intermediate Computer Architecture (3 cr)

Applied understanding of processor architecture. Design and construction of processor components, including the Arithmetic-Logic Unit (ALU), registers, datapath and control units. Memory interface to the processor. Performance optimizations, including pipelining techniques, cache memory. Portions of a processor will be constructed and simulated using a Hardware Description Language (HDL).

CS 360 Database Systems

CS 360 Database Systems (3 cr)

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 270

CS 383 Software Engineering

CS 383 Software Engineering (3 cr)

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. (Fall only)

Prereq: CS 210, CS 240 and CS 270 or Permission

CS 385 Theory of Computation

CS 385 Theory of Computation (3 cr)

See Math 385.

CS 395 Analysis of Algorithms

CS 395 Analysis of Algorithms (3 cr)

See Math 395.

CS 398 Computer Science Cooperative Internship

CS 398 (s) Computer Science Cooperative Internship (1-3 cr, 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 Seminar

CS 400 Senior Seminar (0 cr)

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

CS 401 Contemporary Issues in Computer Science (1 cr)

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 Special Topics

CS 404 (s) Special Topics (cr arr)

CS 411 Parallel Programming

CS J411/J511 Parallel Programming (3 cr)

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 412 Parallel Algorithms

CS 412 Parallel Algorithms (3 cr)

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.

CS 415 Computational Biology: Sequence Analysis

CS J415/J515 Computational Biology: Sequence Analysis (3 cr)

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

CS J420/J520 Data Communication Systems (3 cr)

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 240

CS 428 Multi-User Games and Virtual Environments

CS J428/J528 Multi-User Games and Virtual Environments (3 cr)

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 438 Network Security

CS J438/J538 Network Security (3 cr)

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

CS J439/J539 Applied Security Concepts (3 cr)

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 441 Advanced Operating Systems

CS J441/J541 Advanced Operating Systems (3 cr)

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 445 Compiler Design

CS 445 Compiler Design (4 cr)

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

CS J447/J547 Computer and Network Forensics (3 cr)

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

CS J448/J548 Survivable Systems and Networks (3 cr)

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 J449/J549 or CS J438.

CS 449 Fault-Tolerant Systems

CS J449/J549 Fault-Tolerant Systems (3 cr)

Same as ECE J449/J549. 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

CS J451/J551 Advanced Computer Architecture (3 cr)

Same as ECE J441/J541. 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

CS J452/J552 Real-Time Operating Systems (3 cr)

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

CS J460/J560 Database Management Systems Design (3 cr)

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

CS J470/J570 Artificial Intelligence (3 cr)

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 570.

Prereq: CS 210

CS 472 Evolutionary Computation

CS J472/J572 Evolutionary Computation (3 cr)

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

CS J475/J575 Machine Learning (3 cr)

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

CS J479/J579 Data Science (3 cr)

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

CS 480 CS Senior Capstone Design I (3 cr)

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

CS 481 CS Senior Capstone Design II (3 cr)

Gen Ed: Senior Experience

Continuation of CS480. 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 Directed Study

CS 499 (s) Directed Study (cr arr)

CS 500 Master's Research and Thesis

CS 500 Master's Research and Thesis (cr arr)

CS 501 Seminar

CS 501 (s) Seminar (cr arr)

CS 502 Directed Study

CS 502 (s) Directed Study (cr arr)

CS 504 Special Topics

CS 504 (s) Special Topics (cr arr)

CS 505 Professional Development

CS 505 (s) Professional Development (cr arr)

CS 510 Programming Language Theory

CS 510 Programming Language Theory (3 cr)

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

CS 511 Parallel Programming (3 cr)

See CS J411/J511.

CS 512 Parallel Algorithms

CS 512 Parallel Algorithms (3 cr)

See CS J412/J512.

CS 513 Concurrent Systems

CS 513 Concurrent Systems (3 cr)

Issues of parallel computer architecture considering a hardware/software approach; topics include convergence of parallel architectures, fundamental design issues, parallel programs, programming for performance, workload-driven evaluation, shared memory multiprocessors, snoopy-based multiprocessor design, scalable multiprocessors, cache coherence, hardware software tradeoffs, interconnection network design, latency tolerance, and future directions of concurrent systems.

CS 515 Computational Biology: Sequence Analysis

CS 515 Computational Biology: Sequence Analysis (3 cr)

See CS J415/J515.

CS 520 Data Communication Systems

CS 520 Data Communication Systems (3 cr)

See CS J420/J520.

CS 524 Advanced Computer Graphics

CS 524 Advanced Computer Graphics (3 cr)

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. (Spring only)

Prereq: CS 324, Math 175

CS 528 Multi-User Games and Virtual Environments

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

See CS J428/J528.

CS 536 Advanced Information Assurance Concepts

CS 536 Advanced Information Assurance Concepts (3 cr)

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

CS 538 Network Security (3 cr)

See CS J438/J538.

CS 539 Applied Security Concepts

CS 539 Applied Security Concepts (3 cr)

See CS J439/J539.

CS CS 541

CS 541 Advanced Operating Systems (3 cr)

See CS J441/J541.

CS 547 Computer and Network Forensics

CS 547 Computer and Network Forensics (3 cr)

See CS J447/J547.

CS 548 Survivable Systems and Networks

CS 548 Survivable Systems and Networks (3 cr)

See CS J448/J548.

CS 549 Fault/Tolerant Systems

CS 549 Fault-Tolerant Systems (3 cr)

See CS J449/J549.

CS 551 Advanced Computer Architecture

CS 551 Advanced Computer Architecture (3 cr)

See CS J451/J551.

CS 552 Real Time Operating Systems

CS 552 Real-Time Operating Systems (3 cr)

See CS J452/J552.

CS 560 Database Management Systems Design

CS 560 Database Management Systems Design (3 cr)

See CS J460/J560.

CS 570 Artificial Intelligence

CS 570 Artificial Intelligence (3 cr)

See CS J470/J570.

CS 572 Evolutionary Computation

CS 572 Evolutionary Computation (3 cr)

See CS J472/J572.

CS 575 Machine Learning

CS 575 Machine Learning (3 cr)

See CS J475/J575.

CS 578 Neural Network Design

CS 578 Neural Network Design (3 cr)

See ECE 578.

579 Data Science

CS 579 Data Science (3 cr)

See CS J479/J579.

CS 580 Graduate Project

CS 580 Graduate Project (1-6 cr, 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, 480 or Permission

CS 598 Internship

CS 599 Non-thesis Master's Research

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

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

CS 600 Doctoral Research and Dissertation (cr arr)