Computer Science Courses (CS)
One year of high school algebra is required for all computer science courses.
A second year is strongly recommended.
Related Catalog Entry: School of Information Technology and Engineering / Computer Science
Related Mason Website: School of Information Technology and Engineering (http://ite.gmu.edu/), Computer Science (http://cs.gmu.edu/)
103 Introduction to Computing (3:1:2).Prerequisite: Knowledge of high
school algebra. An introduction, using both lecture and laboratory practice, to the
nature and uses of computers. Widely used computer applications, including word processing,
spreadsheets, databases, presentation software, and computer communications and networking,
are studied. Laboratory projects are required in these areas. Additional lectures
address computer systems organization, legal and ethical considerations, security,
artificial intelligence, and the Internet.
105 Computer Ethics and Society (1:1:0). An introduction to the legal,
social, and ethical issues surrounding software development and computer use. Professional
conduct, social responsibility, and rigorous standards for software testing and reliability
are stressed. Issues such as liability, ownership of information, privacy, security,
and crime are examined. Students read, write, discuss, and present reports on these
topics.
112 Computer Science I (4:3:2).Prerequisite: Qualification for MATH 108
or 113 on math placement test offered through the Testing Center, or a grade of C
or better in MATH 105. An introduction to computer science for majors and others
with a serious interest in computer science. Topics include an overview of computer
system hardware and organization, problem-solving methods and algorithm development,
program structures, abstract data types, simple data and file structures, introduction
to analysis of algorithmic complexity and program correctness, and applications development
in a high-level programming language that supports modular design.
161 Introduction to Programming (1:1:0). An introduction to computer programming,
using the C++ programming language. Other languages may be offered at times. The
course is not available for CS major credit.
211 Computer Science II (3:3:0).Prerequisite: Grade of C or better in
CS 112. A continuation of CS 112. Topics include abstract data types and data structures
(sets, files, strings, linked lists, stacks, queues, trees, graphs) and examples
of their applications. Emphasis on program development continues and is reinforced
through several larger programming projects. Additional programming language instruction
supplements the major topics of this course.
265 Assembly Language Programming (3:3:0).Prerequisite: Grade of C or
better in CS 211; corequisite: CS 105. Symbolic assembly language and computer structures:
arithmetic and logical operations; machine representations of numbers, characters,
and instructions; input-output and data conversions; addressing techniques; assembler
directives; subroutine linkage; and macroprocessing.
310 Computer Science III (3:3:0).Prerequisite: Grade of C or better in
CS 211. Tools and techniques required to develop moderate to large programs. Topics
include continued study of object-oriented techniques, data structures, recursion
and problem-solving skills. Students complete several moderate-size programs.
330 Formal Methods and Models (3:3:0).Prerequisites: Grade of C or better
in CS 211 and MATH 125. Abstract concepts that underlie much advanced work in computer
science, with major emphasis on formal languages, models of computation, logic, and
proof strategies.
332 Object-Oriented Specification and Implementation (3:3:0).Prerequisite:
Grade of C or better in CS 310. Concentration on the transition from an abstract
data type (ADT) specification to its implementation, using C++ as the implementation
language. The course covers symbolic logic for reasoning about programs, axiomatic
and algebraic methods for ADT specification, and introduction to goal-directed programming.
The term project involves the design and construction of a program incorporating
several ADTs.
363 Comparative Programming Languages (3:3:0).Prerequisite: Grade of C
or better in CS 265. Key programming mechanisms described independently of particular
machines or languages including control, binding, procedural abstraction, and types.
The course systematically surveys diverse high-level language capabilities.
365 Computer Systems Architecture (3:3:0).Prerequisites: Grade of C or
better in CS 265 and ECE 301. Computer hardware organization, software structure,
and data organization. Students complete a term project that simulates one computer
system on another.
421 Introduction to Software Engineering (3:3:0).Prerequisites: Grade
of C or better in CS 310 and ENGL 302. Techniques in software design and development.
The course discusses formal models of structured programming, software engineering
methods and tools, functional or object-oriented design, and documentation. Working
in teams, students organize, manage, and develop a software engineering project.
440 Language Processors and Programming Environments (3:3:0).Prerequisites:
Grade of C or better in CS 310, 330 and 365. A survey of basic programming language
processors and software development tools: assemblers, interpreters, compilers, and
CASE tools. Topics include design and construction of language processors, formal
syntactic definition methods, parsing techniques, and code generation techniques.
450 Data Base Concepts (3:3:0).Prerequisite: Grade of C or better in CS
310 and CS 330. Data models and data sublanguages for the relational, hierarchical,
and network approaches to data base management systems. The course covers normal
forms, external models, implementation, data independence, alternative logical views
of data, and object-oriented design. Various approaches are compared in the context
of applications.
451 Computer Graphics and Software Design (3:3:0).Prerequisites: Grade
of C or better in MATH 203, CS 310 and 365. Graphics devices and hardware, graphical
user interfaces, scan conversion of geometric primitives, 2D/3D transformations and
viewing, curves, hidden surface removal, illumination and color models, and a programming
project that includes designing a menu-driven system.
455 Computer Networking Systems (3:3:0).Prerequisites: Grade of C or better
in CS 310, 365 and STAT 344. Data communications and networking protocols, with study
organized to follow the seven-layer ISO reference model. Topics include the role
of various media and software components, local and wide area network protocols,
network performance, and emerging advanced commercial technologies.
471 Operating Systems (3:3:0).Prerequisites: Grade of C or better in CS
310, CS 330, CS 365, and either OR 481 or MATH 446. Issues in multiprogramming. The
course covers concurrent processes and synchronization mechanisms, processor scheduling,
memory management, file management, I/O management, deadlock management, performance
of operating systems, and projects dealing with synchronization in a multiprogrammed
OS and with virtual memory management. f,s
475 Distributed Systems (3:3:0).Prerequisite: Grade of C or better in
CS 471 or permission of instructor. Practical issues in designing and implementing
distributed software. Topics include concurrent programming, synchronization, multithreading,
local and wide-area network protocols, distributed computation, systems integration,
and techniques for expressing coarse-grained parallelism at the application level.
Projects involve network programming at the application level ( e.g., client-server
programming using sockets and remote procedure calls).
480 Introduction to Artificial Intelligence (3:3:0).Prerequisites: Grade
of C or better in CS 310 and CS 330. Principles and methods for knowledge representation,
reasoning, learning, problem solving, planning, heuristic search, and natural language
processing and their application to building intelligent systems in a variety of
domains. LISP, PROLOG, or an expert system programming language is used. f,s
483 (465) Data Structures and Analysis of Algorithms (3:3:0).Prerequisites:
Grade of C or better in CS 310, CS 330 and MATH 114. An analysis of the computational
resources required for important problem types by alternative algorithms and their
associated data structures, using mathematically rigorous techniques. Specific algorithms
are analyzed and improved. f,s
490 Design Exhibition (3:3:0).Prerequisites: Grade of C or better in CS
421, 483, two other CS 400-level courses, and senior standing. A capstone course
focusing on the design and successful implementation of a major software project,
encompassing a broad spectrum of knowledge and skills, developed by a team of students.
A final exhibition of the result to a faculty/industry panel is required. f,s
498 Independent Study in Computer Science (1-3:0:0).Prerequisites: 60
credits, major in computer science, and permission of instructor. Research and analysis
of selected problems or topics in computer science. The topic must be arranged with
an instructor and approved by the department chair before registering. May be repeated
for a maximum of six credits if the topics are substantially different.
499 Special Topics in Computer Science (3:3:0).Prerequisites: 60 credits
and permission of instructor; specific prerequisites vary with nature of topic. Topics
of special interest to undergraduates. May be repeated for a maximum of six credits
if the topics are substantially different.
531 Theory of Computation (3:3:0).Prerequisites: CS 330 and MATH 125.
Theory of computability, Turing machines, computable functions, recursive functions,
unsolvable decision problems and Godel's Incompleteness Theorem, and computational
complexity.
540 Language Processors (3:3:0).Prerequisites: MATH 125, CS 265, 310,
and 330. Basic programming language processors: assemblers, interpreters, and compilers.
Topics include design and construction of language processors, formal syntactic definition
methods, parsing techniques, and code generation techniques. Lab includes construction
of language processors and experience with programming environments.
571 Operating Systems (3:3:0).Prerequisites: CS 310 and 365. Models of
operating systems. Major functions including processes, memory management, I/O, interprocess
communication, files, directories, shells, distributed systems, performance, and
user interface.
580 Introduction to Artificial Intelligence (3:3:0).Prerequisites: CS
310 and 365. Principles and methods for knowledge representation, reasoning, learning,
problem solving, planning, heuristic search, and natural language processing and
their application to building intelligent systems in a variety of domains. LISP,
PROLOG, or an expert system programming language is used.
582 Logic and Artificial Intelligence (3:3:0).Prerequisite: Either CS
480, CS 580, or PHIL 376. Introduction to logical formalisms and the objectives of
philosophy and computer science. The course covers use of predicate calculus for
problem solving, logic as declarative programming, nonmonotonic logics and common
sense, and use of logics for advanced knowledge representation.
583 Analysis of Algorithms (3:3:0).Prerequisites: CS 310, CS 330, and
MATH 125. Topics include the analysis of sequential and parallel algorithmic strategies
(such as greedy methods, divide and conquer strategies, dynamic programming, search
and traversal techniques, approximation algorithms), the analysis of specific algorithms
falling into these classes, NP-Hard and NP-Complete problems.
619/SWSE 619 Software Construction (3:3:0). See SWSE 619.
620/SWSE 620 Software Requirements and Prototyping (3:3:0). See SWSE 620.
621/SWSE 621 Software Design (3:3:0). See SWSE 621.
623/SWSE 623 Formal Methods and Models in Software Engineering (3:3:0).
See SWSE 623.
625/SWSE 625 Software Project Management (3:3:0). See SWSE 625.
627 Software Engineering Methods and Metrics (3:3:0).Prerequisites: CS
540 and either CS/SWSE 619 or CS 421. Presentation of the software engineering principles
of management, methodologies, and metrics. The topics of software engineering management,
process, and quality are presented in an integrative approach, stressing software
improvements through measurements of software products and processes.
631/SWSE 631 Object-Oriented Software Development (3:3:0).Prerequisite:
CS/SWSE 619 or 540, or equivalent. Principles of object-oriented analysis and design,
development, and programming. The course includes relationships between object-oriented
design concepts and software engineering principles, techniques of object-oriented
design and programming, and application of object-oriented techniques.
632/SWSE 632 User Interface Design and Development (3:3:0). See SWSE 632.
635 Foundations of Parallel Computation (3:3:0).Prerequisites: CS 583
and 540 or 571, or equivalent. Survey of the field of parallel computation. Three
major parallel computing paradigms (MIMD computation, SIMD computation, and data
flow computation) are covered. Emphasis is placed on the interfaces between algorithm
design and implementation, architecture, and software. Parallel algorithms and parallel
programming languages are examined relative to the architecture of particular parallel
computers.
637/SWSE 637 Software Testing and Quality Assurance (3:3:0). See SWSE 637.
640 Advanced Compilers (3:3:0).Prerequisite: CS 540 or equivalent. An
examination of advanced compiler techniques such as code optimizations for sequential
and parallel machines; compilers for logical, functional, or object oriented languages;
and other selected topics in the current literature.
650 Database Engineering (3:3:0).Prerequisites: CS 540, 583, and 571.
Data models for network, hierarchical, object-oriented, and relational management
information systems. The course covers development (including internal structures)
of a database system.
652 Computer Graphics (3:3:0).Prerequisite: CS 583. Architecture of graphics
input and display devices. The course includes hardware interfaces, graphics software
design concepts and techniques, basic algorithms for windowing, clipping, panning,
and zooming, raster scan and random scan processing, data structures and graphics
symbols, and hidden line removal algorithms and presentation of solid areas.
656 Computer Communications and Networking (3:3:0).Prerequisites: CS 571
and STAT 344 or equivalent. Techniques and systems for communication of data between
computational devices, and protocols of the seven-layer ISO reference model. Topics
include the role of various media and software components, local and wide area network
protocols, network design, performance and cost considerations, and emerging advanced
commercial technologies.
668 Computer Architecture Systems (3:3:0).Prerequisite: CS 571 or 540
or equivalent. An examination of the principles and practices relating computer architecture
to programming execution and efficiency. A new approach that stresses the performance
and cost of architecture is presented. The principles, of compiler and OS implications,
instructions sets, basic processors, pipelines, and memory-hierarchy are examined.
Specific topics may include RISC machines, cache memories, register usage, VAX architecture,
and vector machines.
671 Advanced Operating Systems (3:3:0).Prerequisite: CS 571 or permission
of instructor. Advanced topics in the design and implementation of microkernel-based,
object-oriented, and distributed operating systems. Specific topics include support
for interprocess communication, the interaction between computer architecture and
operating systems, distributed file systems, transactions, and distributed shared
memory.
672 Computer System Performance Evaluation (3:3:0).Prerequisites: CS 571
and MATH 351, or permission of instructor. Theory and practice of analytical models
of computer systems. Topics include queueing networks, single and multiple class
mean-analysis, models of centralized and client-server systems, and software performance
engineering.
673 Multimedia Computing and Systems (3:3:0).Prerequisite: CS 571. The
convergence of computing, communications, and display technologies has led to interest
in the processing of multiple data types. The integration of text, sound, images,
and video in modern presentations requires compression, synchronization, database,
and communication methods. This course focuses on technological and development environments
involved in developing multimedia applications. Projects involve experience with
multimedia authoring tools, and simulations to assess performance.
680 Natural Language Processing (3:3:0).Prerequisites: CS 540 and 580.
The course explores the principles of the design of computer programs that respond
appropriately to questions, commands, and statements expressed in human language,
particularly English. Role of knowledge representation and linguistic theory. Students
become familiar with current literature to implement a limited natural language processor.
681 Designing Expert Systems (3:3:0).Prerequisite: CS 580. Design, construction,
and evaluation of software systems that solve problems generally deemed to require
human expertise. The course focuses on the study and use of relevant languages, environments,
mathematics, and logic. Case studies of successful systems are examined. Programming
projects include development of tools or small-scale systems.
682 Computer Vision (3:3:0).Prerequisite: CS 686. Study of computational
models of visual perception and their implementation on computer systems. Topics
include early visual processing, edge detection, segmentation, intrinsic images,
image modeling, representation of visual knowledge, and image understanding.
683 Parallel Algorithms (3:3:0).Prerequisite: CS 583; CS 635 recommended.
An examination of the design and analysis of parallel algorithms. Material focuses
on algorithms for both theoretical and practical models of parallel computation.
Algorithm design and analysis for the PRAM are considered, as well as for existing
SIMD and MIMD type architectures. Topics include sorting, graph algorithms, numerical
algorithms, and computational complexity.
684 Graph Algorithms (3:3:0).Prerequisite: CS 583. Data structures and
analytical techniques for the study of graph algorithms. Data structures discussed
include disjoint sets, heaps, and dynamic trees. Algorithms treated include minimum
spanning trees, shortest path, maximum flow, and graph planarity.
685/ECE 651/SYST 672 Intelligent Systems for Robots (3:3:0).Prerequisite:
CS 580 or ECE 650 or SYST 611 or SYST 555 or equivalent. Review of recent developments
in the area of intelligent autonomous systems. The applications of artificial intelligence,
computer vision, and machine learning to robotics are studied. Topics include analysis
and design of algorithms and architectures for planning, navigation, sensory data
understanding, sensor fusion, spatial reasoning, motion control, knowledge acquisition,
learning of concepts and procedures, self-organization, and adaptation to the environment.
686 Image Processing and Applications (3:3:0).Prerequisites: CS 583 and
either STAT 344 or MATH 351, or equivalent. Concepts and techniques used in image
processing. Methods for image capture, transformation, enhancement, restoration,
and encoding are discussed. Students complete projects involving naturally occurring
images.
687 Advanced Artificial Intelligence (3:3:0).Prerequisite: CS 580. Exploration
of foundational issues of artificial intelligence, such as the roles of knowledge
and search, the formalization of knowledge and inference, and symbolic versus emergent
approaches to intelligence. Advanced programming techniques for artificial intelligence
and their relationship both to the foundational issues and to the most important
application areas for artificial intelligence are studied. There is a major programming
project.
688 Neural Network Principles (3:3:0).Prerequisite: CS 580 or equivalent.
Study of neural network models, algorithms, and applications. Several connectionist
and biologically based models are introduced, and their capabilities and limitations
are discussed. A variety of application areas are presented. A network simulation
project is required.
689 Intelligent Tutoring Systems (3:3:0).Prerequisite: CS 580. Principles,
design, and development of computer-based tutoring systems and learning environments,
with emphasis on the application of techniques from artificial intelligence. The
course covers organizing and representing subject matter and expertise in forms structured
for presentation and communication, diagnosing a learner's actions to obtain
information that can usefully guide tutorial decision making about subject matter,
generating problems, and learning about various forms of assistance. Case studies
and evaluation strategies are discussed.
697 Independent Reading and Research (1-3:0:0).Prerequisites: Graduate
standing, completion of at least two core courses (CS 540, 571, 580, 583), and permission
of instructor. In areas of importance but insufficient demand to justify a regular
course, a student may undertake a course of study under the supervision of a consenting
faculty member. The students normally submit a written statement of the content of
the course and a tentative reading list as part of the request for approval to take
the course. A literature review, project report, or other written product is normally
required.
699 Advanced Topics in Computer Science (3:3:0).Prerequisites: Completion
of at least two core courses and permission of instructor. Special topics in computer
science not occurring in the regular computer science sequence. May be repeated for
credit when the subject is distinctly different.
706 Concurrent Software Systems (3:3:0).Prerequisites: CS 571 and 635
or 619 or equivalent. A study of issues related to the development of concurrent
software systems. Topics include concurrent programming languages and constructs;
and the specification, design, verification, and validation of concurrent programs.
Students are required to solve concurrent programming problems and to check their
solutions by using verification, testing, and debugging tools.
720/SWSE 720 Advanced Software Requirements (3:3:0).Prerequisite: CS/SWSE
620 or equivalent. See SWSE 720.
721/SWSE 721 Advanced Software Design Methods (3:3:0).Prerequisite: CS/SWSE
621 or equivalent. See SWSE 721.
735 Concurrency (3:3:0).Prerequisite: CS 635 or equivalent. Description
of the formal specification of concurrent systems and algorithms, using formal methodology
based on the theory of communicating sequential processes. Emphasis is placed on
using the Occam programming language to the implement of formal specifications of
concurrent systems.
752 Interactive Graphics Software (3:3:0).Prerequisites: CS 652 and 583.
A study of interactive graphics programming, architecture of display devices, graphics
systems functional capabilities, and implementation concepts and techniques. The
course extends basic raster techniques to device independent algorithms: two-and-three
dimensional viewing, clipping, and transformations. Raster/scan conversion techniques,
hidden surface and edge removal algorithms, shading and texturing techniques, and
color models are discussed. User dialogs and human factors are examined.
755 Advanced Computer Networks (3:3:0).Prerequisite: CS 656. Current and
emerging issues in advanced computer networks and their applications. Topics include
software systems associated with packet and cell switched networking architectures
and protocols, high-performance LANs, scheduling and congestion control, mobile networking,
multimedia applications, and the next generation of the Internet.
756 Performance Analysis of Computer Networks (3:3:0).Prerequisite: CS
656 or equivalent. Queueing models for modeling and analysis of computer networks.
The course examines elementary queueing analysis; networks of queues; routing and
flow controls; and applications to local and wide area networks, internets, and emerging
networking technologies such as Asynchronous Transfer Mode.
773 Real-Time Systems Design and Development (3:3:0).Prerequisite: CS
656 or 671. Real-time systems and the principles supporting their design and implementation.
Emphasis is placed upon fundamental results from real-time scheduling theory and
their relevance to computer system design. Topics include system design issues for
real-time applications involving communication networks, operating systems, databases,
and multimedia.
782 Machine Learning (3:3:0).Prerequisite: CS 681 or 687 or 688 or permission
of instructor. Survey of the field of machine learning that is concerned with developing
intelligent adaptive systems that are able to improve through learning from input
data or from their own problem-solving experience. Topics provide broad coverage
of past and current developments in machine learning, including basic learning strategies
and multistrategy learning.
785 Knowledge Acquisition and Problem Solving (3:3:0).Prerequisite: CS
680 or 681 or 687 or permission of instructor. Principles and major methods of the
basic stages of knowledge acquisition (systematic elicitation of expert knowledge,
knowledge base refinement, and knowledge base optimization), in the context of general
problem-solving methods. Case studies of successful knowledge acquisition and problem
solving systems are presented. Projects include development or application of knowledge
acquisition tools for knowledge-based systems.
798 Project Seminar (3:3:0).Prerequisite: 18 credits applicable toward
the M.S. in Computer Science. Master's degree candidates undertake a project
using the knowledge gained in the M.S. program. Topics are chosen in consultation
with an advisor. The project is intended to meet the project or thesis requirement
for the M.S. in Computer Science.
799 Thesis (1-6:0:0).Prerequisite: 18 credits applicable toward the M.S.
in Computer Science. Original or expository work evaluated by a committee of three
faculty members.
Return to Course Descriptions
Return to Catalog Index
|