The Washington State University General Catalog

Courses with the CS Subject

The online catalog includes the most recent changes to courses and degree requirements that have been approved by the Faculty Senate, including changes that are not yet effective.

Courses

The online catalog includes the most recent changes to courses and degree requirements that have been approved by the Faculty Senate, including changes that are not yet effective. Courses showing two entries of the same number indicate that the course information is changing. The most recently approved version is shown first, followed by the older version, in gray, with its last-effective term preceding the course title. Courses shown in gray with only one entry of the course number are being discontinued. Course offerings by term can be accessed by clicking on the term links when viewing a specific campus catalog.


Computer Science - Vancouver (CS)

(Select Campus to see schedule links)

 

Enrollment in 400-level computer science courses is restricted to admitted majors or minors in computer science and to juniors and seniors admitted to other degree programs requiring these computer science courses.


121 Program Design and Development 4 (3-3) Course Prerequisite: MATH 108, 171, 172, 182, 201, 202, 206, or 220, each with a C or better, or a minimum ALEKS math placement score of 78%. Formulation of problems and top-down design of programs in a modern structured language for their solution on a digital computer.

122 Data Structures 4 (3-3) Course Prerequisite: CS 121 with a C or better, or CS 251 with a C or better. Advanced programming techniques: data structures, recursion, sorting and searching, and basics of algorithm analysis.

166 Discrete Mathematics 3 Course Prerequisite: CS 122 with a C or better or concurrent enrollment; MATH 171 with a C or better or concurrent enrollment. Introduction to the theoretical foundations of computing. Combinatorics, relations, trees, graphs, Boolean algebra, proof methods, and discrete probability as applied to computer science.

215 Data Analytics Systems and Algorithms 3 Course Prerequisite: CPT S 122, CPT S 132, or CS 122. Exploration of fundamental concepts, constructs, and techniques of modern data analytics systems. (Crosslisted course offered as CPT S 215, CS 215).

220 Object-Oriented Design 3 Course prerequisite: CS 122. Software design with object-oriented programming; object-oriented programming concepts; front-end application development.

223 Advanced Data Structures 3 Course Prerequisite: CS 122 with a C or better. Advanced data structures, object oriented programming concepts, and program design principles.

224 Programming Tools 3 Course Prerequisite: CS 122 with a C or better. Debugging tools, scripting languages, UNIX programming tools, introduction to graphical user interface programming.

251 C Programming for Engineers 4 (3-3) Course Prerequisite: MATH 108, 171, 172, 182, 201, 202, 206, or 220, each with a C or better, or a minimum ALEKS math placement score of 78%. Enrollment not allowed if credit already earned for CS 261. Introduction to the C programming language and application to engineering problem solving; introduction to data structures, sorting and searching; laboratory use of integrated development environments and debugging tools.

260 Computer Organization 3 Course Prerequisite: CS 122 with a C or better; CS 166 with a C or better. Introduction to computer architecture, data representation, design and analysis of instruction sets, implementation of machine instructions, virtual memory and multiprocessing.

261 C and Assembly Language Programming 3 Course Prerequisite: CS 122 with a C or better. Enrollment not allowed it credit already earned for CS 251. C language concepts, professional practices and C programming; module linkage; assembly language concepts and programming.

315 Introduction to Data Mining 3 Course Prerequisite: CPT S 215, 223, 233, or CS 215, with a C or better; admitted to the major or minor in Computer Science, Computer Engineering, Electrical Engineering, Software Engineering, Data Analytics, or Cybersecurity. The process of automatically extracting valid, useful, and previously unknown information from large repositories. (Crosslisted course offered as CPT S 315, CS 315). Recommended preparation: prior Python programming.

317 Automata and Formal Languages 3 Course Prerequisite: CS 122 with a C or better; CS 166 with a C or better or MATH 301 with a C or better. Finite automata, regular sets, pushdown automata, context-free language, Turing machines and the halting problem.

320 [M] Fundamentals of Software Engineering 3 Course Prerequisite: CS 223 with a C or better; CS 224 with a C or better; admitted to the major in Computer Science. Introduction to software engineering; requirements analysis, definition and specification; software process models; prototyping; architecture; object-oriented design with UML.

330 Numerical Computing 3 Course Prerequisite: CS 251 with a C or better, or CS 261 with a C or better; MATH 172 or 182 with a C or better; MATH 220 with a C or better. Power and limitation of numerical solutions; design, analysis and implementation of numerical algorithms; visualization and rendering.

351 Introduction to Database Systems 3 Course Prerequisite: CS 215 with a C or better, CS 223 with a C or better, or CS 224 with a C or better Introduction to database concepts, data models, database languages, database design, implementation issues.

355 Programming Language Design 3 Course Prerequisite: CS 223 with a C or better; CS 224 with a C or better. Design concepts of high-level programming languages; survey of existing languages, experience using some languages.

360 Systems Programming 4 (3-3) Course Prerequisite: CS 122 with a C or better; CS 261 with a C or better, or ECE 234 with a C or better. Implementation of systems programs, concepts of computer operating systems; laboratory experience in using operating system facilities.

360 (Effective through Summer 2024) Systems Programming 4 (3-3) Course Prerequisite: CS 122 with a C or better; CS 251 or 261 with a C or better. Implementation of systems programs, concepts of computer operating systems; laboratory experience in using operating system facilities.

402 [M] Social and Professional Issues in Computer Science 3 Course Prerequisite: ENGLISH 402 or 403; admitted to the major in Computer Science. Social, legal, ethical and professional issues that arise in the context of computing.

415 Big Data 3 Course Prerequisite: CPT S 215, 223, or 233, with a C or better; admitted to the major or minor in Computer Science, Computer Engineering, Electrical Engineering, Software Engineering, Data Analytics, or Cybersecurity. Big data models, databases and query languages, modern distributed database systems and algorithms. (Crosslisted course offered as CPT S 415, CS 415).

420 [CAPS] Software Design Project I 3 Course Prerequisite: CS 320 with a C or better; CS 360; admitted to the major in Computer Science; senior standing. Development of software in a team environment; project management; unit and integration testing, bug tracking, configuration management, software process models; object-oriented design with UML.

420 (Effective through Summer 2024) [CAPS] Software Design Project I 3 Course Prerequisite: CS 320 with a C or better; CS 360 with a C or better or concurrent enrollment; senior standing. Development of software in a team environment; project management; unit and integration testing, bug tracking, configuration management, software process models; object-oriented design with UML.

421 Software Design Project II 3 (2-3) Course Prerequisite: CS 420 with a C or better; admitted to the major in Computer Science; senior standing. Large-scale software development in a team environment; software design and implementation, project management, testing and integration; teamwork skills, communication, source code management, documentation and presentations. Continuation and completion of CS 420 project.

425 Digital Forensics 3 Course Prerequisite: CS 360 with a C or better or concurrent enrollment. Use of computers in the investigation of criminal and civil incidents in which computers or computer technology play a significant or interesting role.

426 Applied Systems Security 3 Course Prerequisite: CS 360 with a C or better or concurrent enrollment. Foundations, theory, and practice of non-cryptographic computer security; design of secure software; adding security to existing systems; other contemporary topics in security.

427 Cryptography and Network Security 3 Course Prerequisite: CS 166 with a C or better; CS 360 with a C or better; senior standing. Computer security concepts, models and mechanism; encryption technology, formal models, policy and ethical implications. Credit not granted for both CS 427 and CS 527. Offered at 400 and 500 level.

437 Introduction to Machine Learning 3 Course prerequisite: CS 223 with a C or better; STAT 212 or concurrent enrollment, or STAT 360 or concurrent enrollment. Machine learning concepts, algorithms, and applications; machine learning models and workflows; use of real-world data sets to solve classification, regression, and clustering problems; issues specific to real world data analysis such as feature selection, dimensionality reduction, or cleaning.

440 Artificial Intelligence 3 Course Prerequisite: CS 223 with a C or better; STAT 212 with a C or better or STAT 360 with a C or better. Knowledge representation and automated problem solving; theory and application of agent programming.

442 Computer Graphics 3 Course Prerequisite: CS 223 with a C or better; CS 320 with a C or better; MATH 220 with a C or better. Raster operations; transformations and viewing; geometric modeling; visibility and shading; color. Credit not granted for both CS 442 and CS 542. Offered at 400 and 500 level.

443 Human-Computer Interaction 3 Course Prerequisite: Admitted to the major in Computer Science; junior standing. Introduction to the field of human-computer interaction; understanding the system user; user-centered design and evaluation techniques including heuristic evaluation and usability testing.

447 Computer Game Design 3 Course Prerequisite: CS 223 with a C or better; CS 320 with a C or better. Design and implementation of computer games. Credit not granted for both CS 447 and CS 547. Offered at 400 and 500 level.

450 Design and Analysis of Algorithms 3 Course Prerequisite: CS 223 with a C or better; STAT 360 with a C or better, CS 166 with a C or better, or MATH 301 with a C or better. Analysis of data structures and algorithms; computational complexity and design of efficient data-handling procedures.

450 (Effective through Summer 2024) Design and Analysis of Algorithms 3 Course Prerequisite: CS 223 with a C or better; STAT 360 with a C or better; admitted to the major in Computer Science. Analysis of data structures and algorithms; computational complexity and design of efficient data-handling procedures.

452 Compiler Design 3 Course Prerequisite: CS 317 with a C or better; CS 355 with a C or better. Design of lexical analyzers, syntactic analyzers, intermediate code generators, code optimizers and object code generators.

453 Cloud Data Management 3 Course Prerequisite: CS 351 with a C or better. Principles of cloud data management: data models, fragmentation, processing paradigms, consistency, storage, and commercial cloud data management platforms.

454 Information Retrieval 3 Course Prerequisite: CS 223 with a C or better. Fundamentals principles and algorithms related to information retrieval: text querying, indexing, and retrieval methods, evaluation metrics, ranking, semi-structured data, crawling and scraping of the web using link-based algorithms, and user interface issues.

455 Introduction to Computer Networks 3 Course Prerequisite: CS 360 with a C or better. Concepts and implementation of computer networks; architectures, protocol layers, internetworking and addressing case studies.

458 Mobile Application Development 3 Course Prerequisite: CS 223, 224, or 360, each with a C or better. Design and development of mobile applications; introduction to mobile application frameworks, including user interface, sensors, event handling, data management and network communication.

460 Operating Systems 3 Course Prerequisite: CS 360 with a C or better. Role and purpose of operating systems, process and memory management, I/O device management and drivers, file system concepts and design.

466 Embedded Systems 3 (2-3) Course Prerequisite: CS 360 with a C or better, or ECE 370 with a C or better; senior standing. Design and development of real-time and dedicated software systems with an introduction to sensors and actuators. Credit not granted for both CS 466 and CS 566. Offered at 400 and 500 level.

483 Topics in Computer Science V 1-4 May be repeated for credit. Course Prerequisite: Admitted to the major in Computer Science. Current topics in computer science or software engineering.

487 Software Design and Architecture 3 Course Prerequisite: CPT S 321 with a C or better; CPT S 322 with a C or better; admitted to a major or minor in EECS or Data Analytics. Enrollment not allowed if credit already earned for CPT S 323. Software design; design principles, patterns, and anti-patterns; design quality attributes and evaluation; architectural styles, architectural patterns and anti-patterns. Credit not granted for both CPT S 487 and CPT S 587, or for both CPT S 487 and 323. Offered at 400 and 500 level.

499 Special Problems V 1-4 May be repeated for credit. Course Prerequisite: By department permission. Independent study conducted under the jurisdiction of an approving faculty member; may include independent research studies in technical or specialized problems; selection and analysis of specified readings; development of a creative project; or field experiences. S, F grading.

501 Cloud Systems 3 Fundamental concepts of cloud computing and their applications within commercial systems; exposure to current research topics in this area.

515 Advanced Algorithms 3 Advanced algorithms and data structures, design and analysis, intractability. (Crosslisted course offered as CPT S 515, CS 515.)

516 Theory of Computation 3 Discrete structures, automata, formal languages, recursive functions, algorithms, computability, and complexity. Required preparation must include a strong background in discrete mathematics, automata, and formal languages.

518 Advanced Analysis of Algorithms 3 Advanced Study in design and analysis of algorithms, including randomized and approximation algorithms, linear programming, network flow and string matching.

521 Software Engineering Analysis 3 Research in software engineering; application of quantitative techniques in the software life cycle; current software engineering literature; exploration of techniques of mathematical modeling and solutions to software engineering problems. Required preparation must include a familiarity with the use and theory behind current software engineering practices.

527 Cryptography and Network Security 3 Computer security concepts, models and mechanism; encryption technology, formal models, policy and ethical implications. Credit not granted for both CS 427 and CS 527. Offered at 400 and 500 level.

541 Artificial Intelligence 3 Intelligent computer programs; simulation of cognitive processes. Required preparation must include prior knowledge and experience in artificial intelligence.

542 Computer Graphics 3 Raster operations; transformations and viewing; geometric modeling; visibility and shading; color. Credit not granted for both CS 442 and CS 542. Offered at 400 and 500 level.

547 Computer Game Design 3 Design and implementation of computer games. Credit not granted for both CS 447 and CS 547. Offered at 400 and 500 level.

548 Advanced Computer Graphics 3 Solid modeling, visual realism, light and color models, advanced surface generation techniques. Required preparation must include a prior knowledge and understanding of linear algebra and the graphics pipeline.

558 Wireless Networks 3 Design and implementation of sensor networks. Required preparation must include a prior knowledge and understanding of communication protocols such as TCP/IP and experience in network programming.

558 (Effective through Summer 2024) Wireless Sensor Networks 3 Design and implementation of sensor networks. Required preparation must include a prior knowledge and understanding of communication protocols such as TCP/IP and experience in network programming.

563 Concurrent Programming 3 Multithreaded programming; parallel programming; distributed programming; theory of concurrency; synchronization techniques; libraries and tools.

564 Distributed Systems 3 Distributed systems concepts; distributed systems models; socket programming; remote procedure call; distributed file systems; transactions and concurrency control; fault tolerance.

565 File and Storage Systems 3 Design and implementation of file and storage systems, introduction of the architecture and characteristics of the components on which storage systems are built.

566 Embedded Systems 3 (2-3) Design and development of real-time and dedicated software systems with an introduction to sensors and actuators. Credit not granted for both CS 466 and CS 566. Offered at 400 and 500 level.

570 Machine Learning 3 Introduction to building computer systems that learn from their experience; classification and regression problems; unsupervised and reinforcement learning.

580 Advanced Topics in Computer Science 3 May be repeated for credit.

582 Software Testing 3 Software testing, testing levels, testing objectives, testing techniques.

595 Directed Study in Computer Science V 1 (0-3) to 3 (0-9) May be repeated for credit; cumulative maximum 3 credits. Current topics in computer science.

700 Master's Research, Thesis, and/or Examination V 1-18 May be repeated for credit. Independent research and advanced study for students working on their master's research, thesis and/or final examination. Students must have graduate degree-seeking status and should check with their major advisor/committee chair before enrolling for 700 credit. S, U grading.

702 Master's Special Problems, Directed Study, and/or Examination V 1-18 May be repeated for credit. Independent research in special problems, directed study, and/or examination credit for students in a non-thesis master's degree program. Students must have graduate degree-seeking status and should check with their major advisor/committee chair before enrolling for 702 credit. S, U grading.

800 Doctoral Research, Dissertation, and/or Examination V 1-18 May be repeated for credit. Course Prerequisite: Admitted to the Computer Science PhD program. Independent research and advanced study for students working on their doctoral research, dissertation and/or final examination. Students must have graduate degree-seeking status and should check with their major advisor/committee chair before enrolling for 800 credit. (Crosslisted course offered as CPT S 800, CS 800). S, U grading.

Student Affairs Schedule of Classes Commencement Veteran's Affairs Summer Session
 
Office of the Registrar, PO Box 641035, Washington State University, Pullman WA 99164-1035, 509-335-5346, bitter@wsu.edu
Copyright © Board of Regents, Washington State University