WVU Computer Science Courses


Lower Division Courses

Upper Division Courses

Graduate Level Courses

Please send any comments or suggestions to: webmaster@cs.wvu.edu


LOWER DIVISION COURSES

CS 15 Introduction to Computer Science
Programming and program design; simple data types, variables, and expressions; block structures; program modularization through procedures, functions, and packages; repetition and selection through control structures; structured data types, including arrays and records; representative applications.

CS 16 Principles of Computer Science PR: CS 15
Design and implementation of programs manipulating complex data structures; sets, files, stacks, lists, trees; searching and sorting; comparison of implementation techniques; analysis of efficiency; dynamic allocation; recursion.

CS 26 Discrete Mathematics PR: CS 16 and Math. 15
Traditional mathematics such as functions, relations, set theory, and graph theory: applications to computer science: switching circuits, Boolean algebra, and Karnaugh maps.

CS 56 Computer Organization and Assembler Programming PR: CS 16
Machine organization, number systems, assembler and machine language, macros, subroutines, and the use of several computational formats.

CS 76 File structures PR: CS 16
Extension of internal data structures to persistent external storage: file design and manipulation: blocking and buffering: secondary storage devices: sequential, direct, indexed, and multi-key data structures and access methods, external searching and sorting.


UPPER DIVISION COURSES

CS 126 Analysis of Algorithms PR: CS 26 and Stat 201
Greedy, graph theoretic, divide and conquer, and dynamic algorithms; polynomial time algorithms and NP-completeness.

CS 136 Principles of Programming Languages PR: CS 16
Theoretical and practical aspects of programming languages: historical, current, special-purpose, and practical aspects of programming languages: comparison of language features and implementation techniques: language selection based on application.

CS 156 Computer System Concepts PR: CS 56 or CpE 110
System hardware and software organization, with emphasis on microprocessor systems: operating system concepts, including processes, memory management, and the user interface: elementary network concepts: introduction to UNIX.

CS 176 Introduction to Software Engineering PR: CS 76
Introduction to the techniques and methodologies of software engineering; specification modelling; requirements analysis and definition; specification; software design; quality assurance; testing; reuse; development tools and environments.

CS 216 Numerical Concepts PR: CS 126
Computer arithmetic, number representation, and errors: locating roots of equations: interpolation: numerical integration and differentiation: numerical solution of initial value problems for ordinary differential equations: solving systems of linear equations; data smoothing.

CS 228 Discrete Mathematics 2 PR: CS 26 and Math. 16 or equiv
Applications of discrete mathematics to computer science. Methods of solving homogeneous and non-homogeneous recurrence relations using generating functions and characteristic equations: digraphs to analyze computer algorithms:; graph theory and its ramifications to computer algorithms.

CS 236 Compiler Construction PR: CS 136
Theory and practice of the construction of programming language translators; scanning and parsing techniques, semantic processing, runtime storage organization, and , and code generation; design and implementation of interpreter or a compiler by students.

CS 246 Automata Theory PR: CS 136
Introduction to formal languages, grammars, and automata; regular expressions and finite automata, context-free languages and push down automata, context-sensitive languages and linear-bounded automata, and Turing machines and recursively enumerable languages.

CS 256 Operating Systems Structures PR: CS 156
Support of computer components; device management and interrupts, process scheduling, file management, complete OS structure, OS development and debugging, configuration.

CS 258 Advanced Operating Systems PR: CS 256
Reliability and security, system management, and virtual machine structures; introduction to distributed and realtime systems; emphasis on design issues faced by actual systems.

CS 266 Computer Organization and Architecture PR: CS 156
Computer structure; emphasis on implications for software design; evolution of computers; elementary digital logic; CPU structures; memory and I/O structures; pipelining and memory management; introduction to parallel and high level architectures.

CS 267 Microprocessor Structures PR: CS 156
Typical microprocessor system including OS architecture, assembly language programming, and interfacing capabilities.

CS 268 Data and Computer Communications PR: CS 156
Introduction to fundamental concepts and principles of data and computer communications; digital data communication techniques, multiplexing, switching, LANs and WANs, and protocols and architecture.

CS 276 Advanced Software Engineering PR: CS 176
Engineering process, project economics, project organizational and management issues, configuration management.

CS 278 Database Design and Theory PR: CS 176
Relational data model using relational algebra and SQL and the object-oriented data model; relational database and semantic design theory.

CS 286 Introduction to Artificial Intelligence PR: CS 176
Survey of AI techniques, heuristics search, game playing, knowledge representation schemes; logic, semantic net, frames, rule-based; natural language processing, advanced AI techniques/systems; planning, blackboard architecture, neural net model; AI implementation.

CS 288 Introduction to Computer Graphics PR: CS 176
Overview of I/O hardware, elements of graphics software, fundamental algorithms, two-dimensional viewing and transformations, design for interaction, and introduction to three-dimensional concepts.


GRADUATE LEVEL COURSES

CS 311 Scientific Computing Applications PR: CS 76
Application of mathematical modelling and simulation methodology, languages, and systems. Discrete simulation using GPSS-V language. Linear programming. Finite difference methods using higher-level languages. Students will prepare individual projects under supervision of faculty member.

CS 315 Advanced Mathematics of Computation PR: Math 215
Advanced theory of computation deals with the theoretical foundations of computer science. Topics include formal logic, graph theory, computability, and complexity theory.

CS 320 Solution of Nonlinear Systems PR: CS 216 or Math 241
Solution of nonlinear systems of equations. Newton and Secant Methods. Unconstrained optimization. Nonlinear over-relaxation techniques. Nonlinear least squares problems.

CS 325 Numerical Interpolation and Approximation PR: CS 216
Interpolation and approximation using Chebychev polynomials, Pade approximations, Chebychev economization of Taylor Series. Hermite interpolation, orthogonal polynomials and Gaussian Quadrature.

CS 326 Advanced Analysis of Algorithms PR: CS 126
Advanced analysis of algorithms deals with analysis and design techniques for efficient sequential and parallel algorithm design. The topics include NP-completeness, advanced analysis techniques, advanced algorithms, and parallel algorithms.

CS 330 Design of Language Processors PR: CS 236
Study of the design and construction of automatic programming language processors. Investigation of the structure of scientific and business oriented compilers, list processors, and information processing languages.

CS 336 Formal Specification of Languages PR: CS 236
Specification of language syntax by grammars and automata. Algebraic, denotational, and operational semantics. Specification of language semantics by attribute grammars, denotational semantics, and action equations. Application of formal specifications to construction of software tools.

CS 346 Advanced Automata Theory. I PR: CS 246
Survey of automata outside the Chomsky hierarchy with applicability to parallel processing, learning, temporal logic, and language processing.

CS 350 Software Engineering in Data Communications PR: CS 256
Data communications principles, software design techniques for implementing data communications systems. Testing and debugging techniques. Networks and data link control. Software design in a network environment. A "hands-on" project in data communications design is an integral part of the course.

CS 356 Theory of Operating Systems PR: CS 256
Theoretical analysis of selected aspects of operating system design. Topics include: interaction of concurrent processes; scheduling and resource allocation; virtual memory management; access control; distributed and real-time system issues.

CS 365 Distributed Database Management Systems PR: CS 278
Reference architectures for distributed database management systems. Integration of local databases stored at different sites into a global database. Heterogeneity of data models. Query translation and optimization. Synchronization of concurrent access. Integrity and reliability.

CS 366 Advanced Computer Systems Architecture PR: CS 266
Study of advanced computing structures, especially high-performance techniques, pipelined and parallel systems, and high-level architectures. Comparative evaluation of architectures for specific applications. Emphasis is placed on software implications of hardware structures.

CS 375 Software Verification and Validation PR: CS 136, CS 176
Principles of formal software specification; formal verification, testing, and other validation techniques.

CS 376 Formal Methods in Software Engineering PR: CS 276
Principles of rigorous specification, design, implementation, validation of sequential, concurrent, and real-time software; emphasis on reading current papers on these topics.

CS 377 Data: Types, Semantics and Abstraction PR: CS 176
Data type and structure specification, axiomatic and model based specification, algebraic techniques, testing and verification of specifications, data abstraction facilities in modern programming languages, examples and associated algorithms.

CS 378 Theory of Database Systems PR: CS 278
This course is concerned with abstract and newer database models. Database design techniques are introduced in the context of semantic data modeling. The equivalence of different relational models is proven. Object oriented database is introduced.

CS 380 Interactive Computer Graphics PR: CS 236 or 256 or 278
Data structures and list handling, picture structures and transformations, rendering of surfaces and solids, interaction handling, display processors and programming systems and graphic system organization.

CS 386 Advanced Artificial Intelligence Techniques PR: CS 286
Reasoning under uncertainty: Nonmonotonic reasoning, statistical reasoning, fuzzy logic. Planning, parallel and distributed AI, natural language processing, learning, connectionist models, temporal logic, common sense knowledge and qualitative reasoning, AI techniques and robotics.

CS 388 Interactive Computer Graphics PR: CS 126
Viewing in three dimensions, projections, rendering of surfaces and solids, illumincation and shading, interaction handling, display processors and programming systems, and graphics system orgnization.