University Catalog: 2008-09

Think. Learn. Succeed.

Computer Science (CS)

Computer Science

101 Preview of Computer Science (2:2:0) Corequisite: CS 112. All computer science majors are required to take this course within their first year. Offers a broad overview of computer science designed to provide students with an introduction to the field of computer science and an orientation to the Computer Science Department and the computing environment at the university. Includes a project to introduce problem solving using computers.

105 Computer Ethics and Society (1:1:0) Prerequisite: 12 credits of undergraduate course work. Intensive introduction to legal, social, and ethical issues surrounding software development and computer use. Stresses professional conduct, social responsibility, and rigorous standards for software testing and reliability. Examines issues such as liability, ownership of information, and computer crime.

112 Introduction to Computer Programming (4:3:1) Prerequisite: satisfaction of prerequisites for MATH 113. This course introduces the use of computer programming as a problem-solving tool. Topics in procedural programming include expressions, control structures, simple data types, input/output, graphical interfaces, testing, debugging, and programming environments.

123 Computing: From the Abacus to the Web (3:3:0) Prerequisites: none. Students may not take this course for credit once they have successfully completed CS 211.This course, intended for nonmajors, will give students the ability to relate to existing and emerging technologies (such as e-mail, the Internet, search engines, blogs, computer games, and robotics) by educating them on the underlying computer science concepts. Historical, social, and technical issues related to each topic will be discussed.

211 Object-Oriented Programming (3:3:1) Prerequisite: CS 112. This course continues to focus on problem solving, testing, and debugging and introduces object-oriented programming. Topics include classes, inheritance, packages, collections, exceptions, and polymorphism. Examples in the course may include the use of basic data structures.

222 Computer Programming for Engineers (3:3:0) Prerequisites: CS 112. A second course in computer programming. Introduces object-oriented programming and elementary data structures. The emphasis is on problems and language features relevant to engineers. (Intended as terminal course in computer programming.)

225 Culture and Theory of Games (3:3:0) Explores the theory, history, culture, and lore of games with particular emphasis on the varieties of computer game environments.

261 Introduction to a Second Language (1:1:0) Prerequisite: grade of C or better in CS 211. Not available for credit for CS majors. Advanced programming using Java programming language. Other languages may be offered at times.

262 Introduction to Low-Level Programming (1:1:0) Prerequisites: grade of C or better in CS 211. Introduction to the language C, as well as operating system concepts, in UNIX, to prepare students for topics in systems programming.

306 Synthesis of Ethics and Law for the Computing Professional (3:3:0) Prerequisite: CS 105, junior standing (at least 60 credit hours). Corequisite: all required general education courses. Computers science majors may use this course to satisfy the general education synthesis requirement, so long as they have not previously taken CS 305 for credit. Practical course to become effective computer professional. Examines legal and ethical issues surrounding computer technology and its use, as well as the foundation building that is necessary to deal with those challenges. Applies philosophical bases for ethical decision making to modern concerns raised by computers and technology. Addresses topics covered by CS 105 in a more intensive manner and focuses on the emerging legal and ethical issues involved in e-commerce and widespread use of the Internet.

310 Data Structures (3:3:0) Prerequisite: CS 211. Corequisite: CS105. This course continues to focus on object-oriented programming with an emphasis on tools and techniques for developing moderate to large programs. Topics include use and implementation of linear and nonlinear data structures, and the design and analysis of elementary algorithms.

325 Introduction to Game Design (3:3:0) Prerequisite: CS 211. Game design, in various electronic entertainment technologies, involves a diverse set of skills and backgrounds from narrative and art to computer programming. This course surveys the technical aspects of the field, with an emphasis on programming.

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/SWE 332 Object-Oriented Software Design and Implementation (3:3:0) Prerequisite: CS 211. In-depth study of software design and implementation using a modern, object-oriented language with support for graphical user interfaces and complex data structures. Topics covered will be specifications, design patterns, and abstraction techniques, including typing, access control, inheritance, and polymorphism. Students will learn the proper engineering use of techniques such as information hiding, classes, objects, inheritance, exception handling, event-based systems, and concurrency.

363 Comparative Programming Languages (3:3:0) Prerequisite: grade of C or better in CS 367. Key programming mechanisms described independently of particular machines or languages including control, binding, procedural abstraction, and types. Systematically surveys diverse high-level language capabilities.

365 Computer Systems Architecture (3:3:0) Prerequisite: grade of C or better in ECE 303 or 331. Computer subsystems and instruction set architectures. Single cycle, multiple-cycle, and pipeline architectures. Memory hierarchy, cache, and virtual memory input-output processing.

367 Computer Systems and Programming (3:3:0) Prerequisite: Grade of C or better in CS 262 or 222 and ECE 301 or 331. Introduces students to computer systems from the perspective of a programmer. Topics covered include data representation, assembly and machine-level representation of high-level language programs, the memory hierarchy, linking, exceptions, interrupts, processes and signals, virtual memory, and system-level I/O. This course serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required.

391 Advanced Programming Lab (1:0:1) Corequisite: grade of C or better in CS 310 and permission of instructor. Programming-intensive lab course. Students refine problem-solving and programming skills while gaining experience in teamwork. Focuses on data structures, recursion, backtracking, dynamic programming, and debugging. Central focus is applying familiar and new algorithms and data structures to novel circumstances.

421/SWE 421 Software Requirements and Design Modeling (3:3:0) Prerequisite: CS 211. An introduction to concepts, methods, and tools for the creation of large-scale software systems. Methods, tools, notations, and validation techniques to analyze, specify, prototype, and maintain software requirements. Introduction to object-oriented requirements modeling, including use of case modeling, static modeling, and dynamic modeling using the Unified Modeling Language (UML) notation. Concepts and methods for the design of large-scale software systems. Fundamental design concepts and design notations are introduced. A study of object-oriented analysis and design modeling using the UML notation. Students participate in a group project on software requirements, specification, and object-oriented software design.

425 Game Programming I (3:3:0) Prerequisite: CS 325 and 367. The course will provide an introduction to technologies and techniques used in modern computer games. Teams will explore the various facets of a complete design, using sophisticated tools. The course will involve a project in which a game is prototyped; this prototype and initial design will serve as the starting point for the project in CS 426.

426 Game Programming II (3:3:0) Prerequisite: CS 425. This project-oriented course is a continuation of CS 425 with an emphasis on the implementation of a complete game.

440 Language Processors and Programming Environments (3:3:0) Prerequisites: grade of C or better in CS 310, 330, and 367. Survey of basic programming language processors and software development tools such as assemblers, interpreters, and compilers. Topics include design and construction of language processors, formal syntactic definition methods, parsing techniques, and code-generation techniques.

450 Database Concepts (3:3:0) Prerequisite: grade of C or better in CS310 and 330. This course covers basics to intermediate knowledge for the design, implementation, and use of relational database systems. The main topics include the Entity-Relationship (ER) and Entity-Enhanced Relationship (EER) models for database design, Relational Algebra (RA), Structured Query Language (SQL), SQL programming techniques, functional dependencies and normalization, object and object-relational databases, and security. Students will practice to design, develop, and implement a relational ORACLE database and use the database for queries, transaction processing, and report generation.

451 Computer Graphics (3:3:0) Prerequisites: grade of C or better in MATH 203, CS 310, and CS 367. Basic graphics principles and programming. Topics include scan conversion, transformation, viewing, lighting, blending, texture mapping, and some advanced graphics techniques.

455 Computer Communications and Networking (3:3:0) Prerequisites: grade of C or better in CS 310 and 367, and STAT 344. Data communications and networking protocols, with study organized to follow layers of Internet Protocol Suite (TCP/IP family of protocols). Topics include role of various media and software components, local and wide area network protocols, network performance, and emerging advanced commercial technologies.

465 Computer Systems Architecture (3:3:0) Prerequisite: grade of C or better in CS 367. Computer subsystems and instruction set architectures. Single-cycle, multiple-cycle, and pipeline architectures. Memory hierarchy, cache, and virtual memory input-output processing.

468 Secure Programming and Systems (3:3:0) Prerequisite: grade of C or better in CS 310 and CS 367, or permission of instructor. Fundamental principles and techniques for implementing secure computer systems. Topics include security and cryptography basics, vulnerability analysis, secure software development, and distributed system security. Projects involve designing and programming basic security tools, secure programs, and distributed systems.

471 Operating Systems (3:3:0) Prerequisites: grade of C or better in CS 310 and 367. Issues in multiprogramming. Covers concurrent processes and synchronization mechanisms; processor scheduling; memory, file, I/O, and deadlock management; performance of operating systems; and projects dealing with synchronization in multiprogrammed OS and virtual memory management. f, s

475 Concurrent and Distributed Systems (3:3:0) Prerequisite: grade of C or better in CS 310 and 367, or permission of instructor. Practical issues in designing and implementing concurrent and 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 application level.

480 Introduction to Artificial Intelligence (3:3:0) Prerequisites: grade of C or better in CS 310 and 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. Uses LISP, PROLOG, or expert system programming language. f,s

482 Computer Vision (3:3:0) Prerequisite: grade of C or better in MATH 203, STAT 344, and CS 310. Basic principles 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. Students complete projects involving real images.

483 Analysis of Algorithms Prerequisite: grade of C or better in CS310 and 330 and MATH 125. Analyzes computational resources for important problem types by alternative algorithms and their associated data structures, using mathematically rigorous techniques. Specific algorithms analyzed and improved. f,s

484 Data Mining (3:3:0) Prerequisite: grade of C or better in CS 310 and STAT 344, or permission of instructor. Basic principles and methods for data analysis and knowledge discovery. Emphasizes developing basic skills for modeling and prediction, on one side, and performance evaluation, on the other. Topics include system design; data quality, preprocessing, and association; event classification; clustering; biometrics; business intelligence; and mining complex types of data.

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. Capstone course focusing on design and successful implementation of major software project, encompassing broad spectrum of knowledge and skills, developed by team of students. Requires final exhibition to faculty-industry panel. 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. Topic must be arranged with instructor and approved by department chair before registering. May be repeated for maximum 6 credits if topics 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 maximum 6 credits if topics substantially different.

540 Language Processors (3:3:0) Prerequisites: MATH 125; and CS 365, 310, and 330. Basic programming language processors such as 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.

555 Computer Communications and Networking (3:3:0) Prerequisites: STAT 344 or equivalent. Techniques and systems for communication of data between computational devices and layers of Internet Protocol Suite. Topics include role of various media and software components, local and wide area network protocols, network design, performance and cost considerations, and emerging advanced commercial technologies. Emphasizes TCP/IP family of protocols.

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 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 expert system programming language.

583 Analysis of Algorithms (3:3:0) Prerequisites: CS 310 and 330, and MATH 125. Topics include analyzing sequential and parallel algorithmic strategies such as greedy methods, divide and conquer strategies, dynamic programming, search and traversal techniques, and approximation algorithms; and analyzing specific algorithms falling into these classes, NP-Hard and NP-Complete problems.

600 Theory of Computation (3:3:0) Prerequisites: CS 583 and discrete mathematics. Introduction to logic and proof techniques, formal languages, automata theory, and computational complexity. Specific topics include regular and context-free languages, Turing machines, NP-completeness, and undecidability.

631 Object-Oriented Design Patterns (3:3:0) Prerequisite: SWE 619 or 620, or CS 540 or 571; or graduate course in object-oriented programming or equivalent. Principles of object-oriented design through design patterns. Studies selection of appropriate object-oriented structure after system requirements or requirements specification of software system have been developed. Design patterns created in logic view of software system. Studies generalized design solutions for generalized software design problems, and reuse of design patterns. Once developed, design patterns may be specified in any object-oriented language.

633 Computational Geometry (3:3:0) Prerequisite: CS 583. Basic principles and methods for computing in field of geometric modeling. Emphasizes data structures used to represent geometric objects, and algorithms for manipulating those data structures. Topics include range searching, polygon triangulation, convex hulls, motion-planning, visibility, and mesh generation.

635 Foundations of Parallel Computation (3:3:0) Prerequisites: CS 583, and 540 or 571; or equivalent. Covers three major parallel computing paradigms: MIMD computation, SIMD computation, and data flow computation. Emphasizes interfaces between algorithm design and implementation, architecture, and software. Examines parallel algorithms and parallel programming languages relative to architecture of particular parallel computers.

640 Advanced Compilers (3:3:0) Prerequisites: CS 540 and 583, or equivalent. Examines advanced compiler techniques such as code optimizations for sequential and parallel machines; compilers for logical, functional, or object oriented languages; and other topics in current literature.

645 Programming Language Semantics (3:0:0) Prerequisites: CS 540, language processors. This course introduces basic concepts and techniques in the foundational study of programming languages. The central theme is the view of individual programs and whole languages as mathematical objects about which precise claims may be made and proved. Particular topics include operational techniques for formal definition of language features, type systems and type safety properties, polymorphism and subtyping, and foundations of object-oriented programming.

650 Database Engineering (3:3:0) Prerequisites: CS 540, 583, and 571. Data models for network, hierarchical, object-oriented, and relational management information systems. Covers development (including internal structures) of a database system.

652 Computer Graphics (3:3:0) Prerequisite: CS 583. Graphics principles and programming. Topics include graphics hardware, antialiasing, transformations, viewing, illumination, blending, texture mapping, color models, curves, surfaces, and animation.

662 Computer Graphics Game Technologies (4:3:1) Prerequisite: CS 652. Topics include modeling, rendering, and simulation in real time. Addresses some graphics game techniques including collision detection, levels of detail, physics-based simulations, textures, maps, and shadows.

668 Computer Architecture Systems (3:3:0) Prerequisite: CS 571 or 540, or equivalent. Examines principles and practices relating computer architecture to programming execution and efficiency. Presents new approach that stresses performance and cost of architecture. Examines principles of compiler and OS implications, instructions sets, basic processors, pipelines, and memory-hierarchy. Topics may include RISC machines, cache memories, register usage, and vector machines.

671 Advanced Operating Systems (3:3:0) Prerequisite: CS 571, or permission of instructor. Advanced topics in design and implementation of microkernel-based, object-oriented, and distributed operating systems. Specific topics include support for interprocess communication, 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 queuing networks, single and multiple class mean-value analysis, models of centralized and client-server systems, software performance engineering, and web servers performance.

673 Multimedia Computing and Systems (3:3:0) Prerequisite: CS 571. Focuses on technological and development environments in developing multimedia applications. Projects involve experience with multimedia authoring tools and simulations to assess performance.

675 Distributed Systems (3:3:0) Prerequisites: CS 571 or permission of instructor. Issues in design and implementation of distributed systems and applications. Topics include distributed communication paradigms, middleware, coordination and synchronization, distributed transactions, consistency and replication, fault-tolerance and reliability, and peer-to-peer systems.

680 Natural Language Processing (3:3:0) Prerequisites: CS 540 and 580. Explores principles of designing 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. Focuses on study and use of relevant languages, environments, mathematics, and logic. Case studies of successful systems. Programming projects include development of tools or small-scale systems.

682 Computer Vision (3:3:0) Prerequisite: CS 580 and 583. Study of computational models of visual perception and their implementation in 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. Examines design and analysis of parallel algorithms. Material focuses on algorithms for both theoretical and practical models of parallel computation. Considers algorithm design and analysis for PRAM and 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 to study graph algorithms. Data structures include disjoint sets, heaps, and dynamic trees. Algorithms include minimum spanning trees, shortest path, maximum flow, and graph planarity.

685/ECE 651/SYST 672 Intelligent Systems for Robots (3:3:0) Prerequisite: One of CS 580, ECE 650, SYST 611 or 555, or equivalent. Reviews developments in intelligent autonomous systems. Studies applications of artificial intelligence, computer vision, and machine learning to robotics. Topics include analysis and design of algorithms and architectures for planning, navigation, sensory data understanding, sensor fusion, spatial reasoning, motion control, knowledge acquisition, learning concepts and procedures, self-organization, and adaptation to environment.

686 Image Processing and Applications (3:3:0) Prerequisites: CS 583 and either STAT 344 or MATH 351, or equivalent. Concepts and techniques in image processing. Discusses methods for image capture, transformation, enhancement, restoration, and encoding. Students complete projects involving naturally occurring images.

687 Advanced Artificial Intelligence (3:3:0) Prerequisite: CS 580. Explores foundational issues of artificial intelligence, such as roles of knowledge and search, formalization of knowledge and inference, and symbolic versus emergent approaches to intelligence. Studies advanced programming techniques for artificial intelligence, relationship to foundational issues, and important application areas for artificial intelligence. Major programming project required.

688/IT 688 Pattern Recognition (3:3:0) Prerequisites: CS 580 or equivalent. Explores statistical pattern recognition and neural networks. Pattern recognition topics include Bayesian classification and decision theory, density (parametric and nonparametric) estimation, linear and nonlinear discriminant analysis, dimensionality reduction, feature extraction and selection, mixture models and EM, and vector quantization and clustering. Neural networks topics include feed-forward networks and back-propagation, self-organization feature maps, and radial basis functions. Course emphasizes experimental design, applications, and performance evaluation.

695 Topics in Computer Science (3:3:0) Prerequisites: completion of two core courses, and permission of instructor. Special topics in computer science not occurring in regular computer science sequence. May be repeated for credit when subject distinctly different.

697 Independent Reading and Research (1–3:0:0) Prerequisites: graduate standing; completion of at least two of core courses CS 540, 571, 580, and 583; and permission of instructor. In areas of importance but insufficient demand to justify a regular course, students may undertake a course of study under supervision of consenting faculty member. Students usually submit written statement of course content and tentative reading list as part of request for approval. Literature review, project report, or other written product usually required.

700 Quantitative Methods and Experimental Design in Computer Science (3:0:0) Prerequisites: STAT 344, at least two 600-level courses in computer science, and doctoral status. Integrated treatment to models and practices of experimental computer science. Topics include scientific methods applied to computing, workload characterization, forecasting of performance and quality metrics of systems, uses of analytic and simulation models, design of experiments, interpretation and presentation of experimental results, hypothesis testing, and statistical analyses of data. Involves one or more large-scale projects.

706 Concurrent Software Systems (3:3:0) Prerequisites: CS 571 and SWE 621 or 631, or equivalent. Topics include concurrent programming languages and constructs; and specification, design, verification, and validation of concurrent programs. Students required to solve concurrent programming problems and check solutions by using verification, testing, and debugging tools.

719/IT 809 Scaling Technologies for E-business (3:3:0) Prerequisites: at least one operating system and one networking course, and admission to IT&E doctoral program. Discusses, from quantitative point of view, characteristics of most important technologies used to support implementation of e-business sites. Includes topics such as hardware and software architectures of e-business sites, authentication, payment services, understanding customer behavior, workload characterization, scalability analysis, and performance prediction. Term paper and project required.

732/IT 822 Software Maintenance and Reuse (3:3:0) Prerequisites: CS/SWE 621 or equivalent, data structures, principles of modern programming, and discrete mathematics; or permission of instructor. Perfective maintenance, reuse of software components and patterns, evolving software systems, principles of object-oriented analysis and development. Presents issues regarding technologies supporting perfective software maintenance and reuse.

735 Concurrency (3:3:0) Prerequisite: CS 635 or 706, or equivalent. Studies techniques, tools for specifying and verifying concurrent and distributed programs. Topics may include model checking, temporal logic, process algebra, and test generation. Automated verification tools used to specify and verify concurrent programs.

750/ IT 750 Theory and Applications of Data Mining (3:3:0) Prerequisites: CS 688 or permission of instructor. Concepts and techniques in data mining and multidisciplinary applications. Topics include databases; data cleaning and transformation; concept description; association and correlation rules; data classification and predictive modeling; performance analysis and scalability; data mining in advanced database systems, including text, audio, and images; and emerging themes and future challenges. Term project and topical review required.

752 Interactive Graphics Software (3:3:0) Prerequisite: CS 652. Advanced graphics methods and tools. Topics include visualization, modeling, rendering, animation, simulation, virtual reality, graphics software tools, and current research topics.

753/ IT 815 Parallel Computation (3:3:0) Prerequisites: CS 635 or CSI 801. Covers topics illustrating contemporary thinking on architectures, application, development environments, algorithms, operating systems, language requirements, and performance.

755 Advanced Computer Networks (3:3:0) Prerequisite: CS 555. Current and emerging issues in advanced computer networks and 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 next generation of Internet.

756 Performance Analysis of Computer Networks (3:3:0) Prerequisite: CS 656 or equivalent. Analytical and simulation techniques for modeling and analyzing computer networks. Examines elementary queuing analysis; networks of queues; routing and flow controls; and applications to local and wide area networks, Internet, and emerging networking technologies.

758/IT 758 Networked Virtual Environments (3:3:0) Theory and practice of advanced distributed simulation via networks using highly realistic graphic environments. Networked virtual environment principles, networking technology for distributed simulation, networked multimedia concepts, virtual simulation concepts, efficiency/ performance issues, and online conferencing/virtual classrooms. Term project required.

771/IT 817 Neural Networks (3:3:0) Prerequisite: CS 688, or permission of instructor. Studies adaptive and competitive principles using distributed and parallel computation. Topics include background from statistics, control, adaptive signal processing, and neurosciences. Basic models, such as those suggested by Grossberg, Hopfield, and Kohonen, discussed in terms of analytical characteristics and applications. Neural networks assessed as universal approximators. Connections to fuzzy approach established through the Radial Basis Function approach. Presents applications to perception, knowledge-based systems, and robotics.

773 Real-Time Systems Design and Development (3:3:0) Prerequisite: CS 656 or 671. Real-time systems and principles supporting design and implementation. Emphasizes fundamental results from real-time scheduling theory, and relevance to computer system design. Topics include system design issues for real-time applications involving communication networks, operating systems, databases, and multimedia.

774/IT 835 Computational Vision (3:3:0) Prerequisites: CS 68 and 686; or permission of instructor. Studies recent advances in development of machine vision algorithms and knowledge-based vision systems. Topics include scalespace; Gabor and wavelet processing; distributed and hierarchical processing using neural networks; motion analysis; active, functional, and selective perception; object and target recognition; expert systems; data fusion; and machine learning. Emphasizes system integration in terms of perception, control, action, and adaptation. Presents applications to robotics, intelligent highways, inspection, forensic, and data compression.

775/IT 844 Advanced Pattern Recognition (3:3:0) Prerequisite: CS 688 or permission of instructor. Covers statistical pattern recognition, neural network, and statistical learning theory approaches. Topics include decision theory and Bayes’ theorem, density (parametric and nonparametric) estimation, linear and nonlinear discriminant analysis, SVM and kernel methods, SRM and model selection, performance evaluation, mixture of experts (AdaBoost), dimensionality reduction, feature selection and extraction, and clustering. Emphasizes experimental design, applications, and performance evaluation.

776/IT 852 Graphical Real-Time Simulation (3:3:0) Prerequisite: CS 652 or IT 875. Current research in advanced computer graphics, and applications in realistic real-time simulations. Topics include physically based modeling, real-time simulation, distributed interactive simulation (DIS), network virtual environments (NVE), and virtual reality (VR).

777 Human-Computer Intelligent Interaction (3:3:0) Prerequisites: CS 580, and 652 or 682; or permission of instructor. Current and emerging issues in human-computer intelligent interaction, and human-centered systems and their applications. Topics include video processing, visualization, virtual environments, adaptation and tutoring, image and scene modeling, analysis and synthesis, face and gesture recognition, and speech and natural language processing. Term project and topical review required.

778/IT 778 Biometrics (3:3:0) Prerequisites: CS 688 or permission of instructor. Basic principles and methods for automatic authentication of individuals. Technologies include face, fingerprint and iris recognition, and speaker verification. Additional topics cover multimodal biometrics, system design, performance evaluation, and privacy issues. Term project required.

780/INFS 780 Data Mining in Multimedia Databases (3:3:0) Prerequisite: INFS 755 or CS 750 or permission of instructor. This course covers advanced algorithms for data management, learning, and mining large multimedia databases. Issues related to handling such data including feature selection, high dimensional indexing, interactive search and information retrieval, pattern discovery, and scalability to large datasets are discussed. Mining techniques and data types to be covered include texts/web, images, videos, DNA, temporal, spatial, spatiotemporal databases, graph mining, stream mining, and data visualization.

782 Machine Learning (3:3:0) Prerequisite: CS 681, 687, or 688; or permission of instructor. Surveys machine learning concerning development of 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 developments in machine learning, including basic learning strategies and multistrategy learning.

785 Knowledge Acquisition and Problem Solving (3:3:0) Prerequisite: CS 680, 681, or 687; or permission of instructor. Principles and major methods of basic stages of knowledge acquisition such as systematic elicitation of expert knowledge, knowledge base refinement, and knowledge base optimization in the context of general problem-solving methods. Includes case studies of successful knowledge acquisition and problem-solving systems, and projects involving development or application of knowledge acquisition tools for knowledge-based systems.

795 Advanced Topics in CS (3:3:0) Prerequisite: admission into computer science PhD program. Advanced topics not occurring in regular sequence. May be repeated for credit when subject differs. Satisfies MS breadth requirement only if explicitly stated in syllabus in given section. Only one such course should be used for breadth requirements.

798 Project Seminar (3:3:0) Prerequisite: 18 credits applicable toward MS in computer science. Master’s degree candidates undertake a project using knowledge gained in MS program. Topics chosen in consultation with advisor. Meets project or thesis requirement for MS in computer science.

799 Thesis (3–6:0:0) Prerequisite: 18 credits applicable toward MS in computer science. Original or expository work evaluated by committee of three faculty members.

800 Computer Science Colloquium (1:0:0). Prerequisites: Admission to CS PhD program. This course introduces PhD students to research topics in computer science. Students are required to attend colloquia including talks by distinguished speakers, faculty candidates, and Mason faculty. This course can be taken twice for credit.

803, 804 Doctoral Tutorial in Information Technology (3:3:0) Individualized intensive study of information technology. May be repeated as needed.

811/IT 811 Research Topics in Machine Learning and Inference (3:3:0) Prerequisite: CS 580 or 681, or permission of instructor. Presents unifying principles that underlie diverse methods, paradigms, and approaches to machine earning and inference. Reviews most known learning and inference systems, discusses strengths and limitations, and suggests most appropriate areas of application. Hands-on experience by experimenting with state-of-the-art learning and inference systems, and working on projects tailored to research interests.

818/IT 818 Topics in Computer Systems (3:3:0) Discussion of current research topics in computer systems. Topics vary according to faculty interest. Possible topics include peer-to-peer computing, high-performance distributed computing, sensor and ad hoc networks, autonomic computing, virtualization, and web services and middleware.

850/IT 915 Research Topics in Parallel Computation (3:3:0) Prerequisite: CS 815. Discusses current research topics that vary according to student and faculty interest. Possible topics include formal models of concurrency, specification and design of parallel programming languages, logic programming in a parallel environment, and parallel distributed processing (neural networks).

880/IT 910 Research Topics in Artificial Intelligence (3:3:0) Prerequisite: graduate course in artificial intelligence. Special topics in artificial intelligence not occurring in regular computer science sequence. Requires substantial student participation. Subject matter may include continuation of existing 600- or 700-level courses in artificial intelligence or other topics. May be repeated for credit when subject matter differs.

884/IT 940 Advanced Topics in Computer Vision and Robotics (3:3:0) Prerequisite: CS 682 or 685, or permission of instructor depending on topics offered. Covers recent developments. Topics motivated by applications to autonomous robotic systems, mobile robot navigation, multirobot systems, human-computer-environment interaction, image/video search and analysis, content discovery, and visual surveillance. Topics include 3D structure and motion recovery, motion understanding, map building and localization, object detection and recognition, and target tracking. Projects and experimental evaluation emphasized. Course may be repeated with change of topic.

895 Research Topics in CS (3:3:0) Prerequisite: admission into computer science PhD program, or permission of instructor. Advanced topics not occurring in regular sequence. May be repeated for credit when subject differs. Only one such course should be used for breadth requirements.

990/IT990 Dissertation Topic Presentation (1:0:0) Prerequisite: completion of all course requirements for PhD in IT, or permission of instructor. Opportunity for PhD students to present research proposal for critique to interested faculty and students. Covers presentation of research topic for PhD in information technology; required of all PhD students. Students complete dissertation research proposal. May be repeated with change in topic, although degree credit is given once.

998 Doctoral Dissertation Proposal (1–12:0:0) Work on research proposal that forms basis for doctoral dissertation. May be repeated as needed. No more than 24 credits of CS 998 and 999 may be applied to doctoral degree requirements.

999 Doctoral Dissertation (1–12:0:0) Formal record of commitment to doctoral dissertation research under direction of faculty member in computer science. May be repeated as needed. No more than 24 credits of CS 998 and 999 may be applied to doctoral degree requirements.