Computer Science Courses
Gregory W. Donohoe, Chair, Dept. of Computer Science (237 Janssen Engr. Bldg. 83844-1010; phone 208/885-6501).
CS 101 Introduction to Computer Science (3 cr)
May be used as core credit in J-3-c. Survey of computer science and topics of importance to computer scientists; includes topics such as the nature of problems, unsolvability, hardware, human factors, security, social, ethical, and legal issues; exposure to practical aspects of computer networks. Three lectures and one recitation per week. Recommended Preparation: two yrs of high school algebra.
CS 105 Computer Science as a Profession (2 cr)
Introduction to the computer science profession and curriculum; fields of study available; current topics in departmental research; curriculum planning; legal, ethical, and social issues in computing; academic ethics and responsibilities. (Fall only)
CS 112 Introduction to Problem Solving and Programming (3 cr)
May be used as core credit in J-3-c. May not be taken for credit after CS 120. Intro to fundamental problem solving techniques using the computer; use of a programming language, structured programming concepts; use of fundamental data types, including arrays and structures; basic concepts of computer organization, editing, and program execution; programming lab in which the student solves problems using a modern programming language.
CS 120 Computer Science I (4 cr)
Carries 2 credits after CS 112. 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. Three lec and one 2-hr lab a wk.
CS 121 Computer Science II (4 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. Three lec and one 2-hr lab a wk.
Prereq: CS 120
Coreq: Math 176
CS 127 (s) Programming Language (1-3 cr, max arr)
Introduction to computer programming in a selected language.
CS 130 Programming with Visual Basic (3 cr)
Introduction to fundamental problem solving techniques using the computer and the object oriented, event driven language Visual Basic. The course introduces structured programming concepts; the use of fundamental data types, including arrays and database structures; and editing and program execution. Recommended Preparation: Math 143.
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 (s) Special Topics (cr arr)
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 (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.
Coreq: CS 270
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 (s) Directed Study (cr arr)
CS ID&WS324 Computer Graphics (3 cr) WSU Cpt S 442
Use of the computer to define, store, manipulate, and display 2-D and 3-D objects; 2-D curvefitting and 3-D surface development.
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 (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 (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.
CS 383 Software Engineering I (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)
CS 384 Software Engineering II (3 cr)
Continuation of CS 383, Current topics in development of software systems; software detailed design, coding and implementation, unit and integration testing, documentation, software release and support, software engineering measurement, software project management, legal and ethical issues in software product development. Projects are developed to demonstrate application of concepts. (Spring only)
Prereq: CS 383
CS 385 Theory of Computation (3 cr)
See Math 385.
CS 395 Analysis of Algorithms (3 cr)
See Math 395.
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.
CS 401 Contemporary Issues in Computer Science (1 cr)
Ethical, legal, 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 (cr arr)
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 J412/J512 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.
Prereq: CS 395
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 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.
CS 424 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)
CS J428/J528 Games and Virtual Environments (3 cr)
Software design and programming issues involved in constructing computer games and multi-user virtual environments. Additional projects and assignments are required for graduate credit.
CS ID-J438/ID-J538 Network Security (3 cr) WSU Cpt S 425
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++.
Prereq: CS 336
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 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 443 Embedded Systems (3 cr)
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 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.
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 data 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 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 438.
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: ECE 441 or Permission
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.
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 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 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 481 Senior Capstone Design (4 cr)
Application of formal design techniques to development of a large computer science project performed by students working in teams. Significant lab work reqd.
CS 499 (s) Directed Study (cr arr)
CS 500 Master's Research and Thesis (cr arr)
CS 501 (s) Seminar (cr arr)
CS 502 (s) Directed Study (cr arr)
CS 504 (s) Special Topics (cr arr)
CS ID&WS510 Programming Language Theory (3 cr) WSU Cpt S 518
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.
Coreq: CS 385 or Equivalent
CS 511 Parallel Programming (3 cr)
See CS J411/J511.
CS 512 Parallel Algorithms (3 cr)
See CS J412/J512.
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 (3 cr)
See CS J415/J515.
CS 520 Data Communication Systems (3 cr)
See CS J420/J520.
CS 528 Games and Virtual Environments (3 cr)
See CS J428/J528.
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 (3 cr)
See CS J438/J538.
CS 539 Applied Security Concepts (3 cr)
See CS J439/J539.
CS 541 Advanced Operating Systems (3 cr)
See CS J441/J541.
CS 547 Computer and Network Forensics (3 cr)
See CS J447/J547.
CS 548 Survivable Systems and Networks (3 cr)
See CS J448/J548.
CS 549 Fault/Tolerant Systems (3 cr)
See CS J449/J549.
CS 551 Advanced Computer Architecture (3 cr)
See CS J451/J551.
CS 552 Real Time Operating Systems (3 cr)
See CS J452/J552.
CS 570 Artificial Intelligence (3 cr)
See CS J470/J570.
CS 572 Evolutionary Computation (3 cr)
See CS J472/J572.
CS 573 Stochastic Optimization for Industrial and Laboratory Applications (3 cr)
The course examines industrial and research applications of stochastic optimization techniques. It explores the difficulties of these optimizations through a series of case studies.
CS 576 Data Mining Topics and Techniques (3 cr)
This course will focus on the development of relevant tools, methods, and design of Knowledge from Data (KDD) Systems. Further, it will concentrate on the design and implementation of an advanced data mining system with expectations of optimal performance and flexibility.
Prereq: Graduate Standing or Permission
CS 578 Neural Network Design (3 cr)
See ECE 578.
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 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.)
CS 600 Doctoral Research and Dissertation (cr arr)