Please send any comments or suggestions to: webmaster@cs.wvu.edu
| 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. | ||
| 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. | ||
| 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. | ||