Computer Science

Degree Programs Offered

The graduate certificate programs provide focused, short-term programs of study beyond the baccalaureate degree for individuals seeking to improve their experience, advance in position and salary, expand their education background, and complete work that may potentially be applied to a master's degree. Students who are admitted to the MS in Computer Science program may transfer credits from certificate courses to a relevant concentration in the MS program. Students currently in the MS in Computer Science may also complete certificate programs as part of their studies.

Certificates Offered

Applicants with an undergraduate degree in Computer Science or Computer Engineering from an accredited institution are expected to have a GPA of at least 3.0. Applicants who have degrees in other fields will also be considered for admission. Students may make up their deficiencies in Computer Science by completing transition courses.

Each certificate requires completion of four graduate courses and usually involve a combination of core and elective courses. Provisional admission courses (such as undergraduate prerequisites) for the certificate must be completed with a grad of "B-" or better. Provisional courses must be completed before continuing any certificate program. Each graduate level course might have prerequisites that must be satisfied before the associated graduate course can be taken. The exit requirements are the same as the MS in Computer Science program. This includes that students must maintain at least a 3.0 GPA and can have no grade lower than a "B-". The undergraduate transition courses assigned at the time off admission must be passed following the same policy.

Computer Science Graduate Courses

CSCI 8000  ADVANCED CONCEPTS IN PROGRAMMING LANGUAGES (3 credits)

Logic/Declarative programming is an important programming paradigm in which problems are described in terms of the properties they possess. As a result, in this style of programming many algorithmic elements, which explicitly must be articulated when writing programs in other programming languages, can be omitted. Core elements of logic programming play important roles in AI.

Prerequisite(s): CSCI 3320; CSCI 3660; CSCI 4220. Not open to non-degree graduate students.

CSCI 8010  FOUNDATIONS OF COMPUTER SCIENCE (3 credits)

This is a foundational course for students enrolled in the graduate program in computer science. The objectives are to introduce students to a large body of concepts so that they are better prepared for undertaking the core courses in the graduate program. It is assumed that student would have programmed in a high-level language and have exposure to basic college level mathematical concepts such as logarithms, exponents, sequences, and counting principles.

Prerequisite(s): Students are expected to have written programs using a high-level programming language and should understand basic mathematical concepts including exponents, logarithms, sequences, and counting principles. Not open to non-degree graduate students.

CSCI 8016  INTRODUCTION TO THE THEORY OF RECURSIVE FUNCTIONS (3 credits)

This is a proof-oriented course presenting the foundations of Recursion Theory. We present the definition and properties of the class of primitive recursive functions, study the formal models of computation, and investigate partially computable functions, universal programs. We prove Rice's Theorem, the Recursion Theorem, develop the arithmetic hierarchy, demonstrate Post's theorem. Introduction to the formal theories of computability and complexity is also given. (Cross-listed with MATH 4010, MATH 8016, CSCI 4010).

Prerequisite(s): MATH 2230 or MATH 2030 with a C- or better or CSCI 3660 with a C- or better or instructor's permission.

CSCI 8040  LARGE SCALE NETWORK ANALYSIS ALGORITHMS (3 credits)

The course will provide a review of the properties of large complex network systems, such as those occurring in social networks, epidemiology and biological systems. We will discuss algorithms to analyze these properties, their implementations, their stability under information fluctuation and how information spreads through networks.

Prerequisite(s): Students should be comfortable w/ programming, have knowledge of data structures, preliminary graph algorithms, & linear algebra. Suggest Prep Courses: CSCI 4150 or CSCI 8156; CSCI 3320; MATH 4050 or Permission. Not open to non-degree graduate students.

CSCI 8050  ALGORITHMIC GRAPH THEORY (3 credits)

The overall of the goal is to introduce advanced concepts in graph theory, graph modeling, and graph algorithms and how they can be used to solve a wide range of problems in various application domains. The course introduces students to several applied path algorithms, clustering and partitioning techniques, network flow algorithms, and weighted matching algorithms. Other advanced concepts associated with complex networks include node centralities in graphs and community detection approaches. The course will also introduce students to key classes of graphs with a particular focus on the main classes of Perfect Graphs and their applications in scheduling, chip design, mobile computing, and Biomedical Informatics. (Cross-listed with MATH 8050).

Prerequisite(s): CSCI 3320 or CSCI 8325 and MATH 4150 or MATH 8156 or permission of instructor. Not open to non-degree graduate students.

CSCI 8060  ALGORITHMIC COMBINATORICS (3 credits)

This course includes classical combinatorial analysis graph theory, trees, network flow, matching theory, external problems, and block designs. (Cross-listed with MATH 8060).

Prerequisite(s): MATH 3100, CSCI 3100, MATH 8105 or CSCI 8105 or instructor's permission.

CSCI 8080  DESIGN AND ANALYSIS OF ALGORITHMS (3 credits)

The course provides students an understanding of advanced topics in algorithms. Main topics include: growth of functions, asymptotic notation, recurrences, divide and conquer, dynamic programming, greedy algorithms, graph algorithms, and the theory of NP-Completeness. (Cross-listed with MATH 8080).

Prerequisite(s): CSCI 3320 or CSCI 8325 or equivalent. Not open to non-degree graduate students.

CSCI 8105  APPLIED COMBINATORICS (3 credits)

Basic counting methods, generating functions, recurrence relations, principle of inclusion-exclusion. Polya's formula. Elements of graph theory, trees and searching network algorithms. (Cross-listed with MATH 8105, MATH 3100, CSCI 3100).

CSCI 8110  ADVANCED TOPICS IN ARTIFICIAL INTELLIGENCE (3 credits)

An in-depth study of one or more topics selected from: search techniques, knowledge representation, knowledge programming, parallel processing in Artificial Intelligence, natural language processing, image processing, current and future directions, etc. May be repeated with different topics, with permission of adviser.

Prerequisite(s): CSCI 4450 or CSCI 8456 or equivalent.

CSCI 8150  ADVANCED COMPUTER ARCHITECTURE (3 credits)

This course will provide an in-depth understanding of the key architectural concepts governing the design of state-of-the-art high-performance computers. It will introduce methods that are commonly used to trade-off the various architectural choices to design systems with the desired cost-performance requirements. The course will provide a systems level perspective to design. The emphasis will be on the cache, memory and I/O subsystems, system interconnects leading to distributed shared-memory multiprocessor systems. Multiprocessor clusters based on message passing and high-performance processor architecture will be covered. The course will also provide a brief overview of emerging system architectures including quantum computing and those used to facilitate machine learning applications.

Prerequisite(s): CSCI 4350, CSCI 4500 or equivalent with permission of the instructor. Not open to non-degree graduate students.

CSCI 8156  GRAPH THEORY & APPLICATIONS (3 credits)

Introduction to graph theory. Representations of graphs and graph isomorphism. Trees as a special case of graphs. Connectivity, covering, matching and coloring in graphs. Directed graphs and planar graphs. Applications of graph theory in several fields such as networks, social sciences, VLSI, chemistry and parallel processing. (Cross-listed with CSCI 4150, MATH 4150, MATH 8156).

Prerequisite(s): MATH 2030 or permission of instructor.

CSCI 8160  INTRODUCTION TO VLSI DESIGN (3 credits)

Introduction to the principal concepts of integrated circuits layout. Presentation of the hardware foundations, algorithmic mathematical and graph theoretical foundations of circuit layout. Topics discussed in digital design and computer architecture classes are studied at the actual layout design level such as datapath subsystems and array subsystems. Design methodology tools and testing. Hardware descriptions languages.

Prerequisite(s): CSCI 3320 (or CSCI 8325), CSCI 3710 and CSCI 4350 (or CSCI 8356). Not open to non-degree graduate students.

CSCI 8206  NUMERICAL ANALYSIS (3 credits)

This course involves solving nonlinear algebraic equations and systems of equations, interpolation and polynomial approximation, numerical differentiation and integration, numerical solutions to ordinary differential equations, analysis of algorithms and errors, and computational efficiency. (Cross-listed with CSCI 4200, MATH 4200, MATH 8206).

Prerequisite(s): MATH 1970 and MATH 2050 and MATH 2350 with a C- or better or permission of instructor.

CSCI 8210  ADVANCED COMMUNICATIONS NETWORKS (3 credits)

Advanced study of communication networks, analysis of communication needs, special problems encountered in different types of networks, efficiency and traffic analysis and emerging hardware software technologies. Detailed "hands-on" study of the TCP/IP networking protocols.

Prerequisite(s): CSCI 3550 or 8555 or equivalent. Not open to non-degree graduate students.

CSCI 8256  HUMAN COMPUTER INTERACTION (3 credits)

Human computer interaction is concerned with the joint performance of tasks by humans and machines; human capabilities to use machines (including learnability of interfaces); algorithms and programming of the interface; engineering concerns that arise in designing and building interfaces; the process of specification, design, and implementation of interfaces; and design trade-offs. (Cross-listed with CSCI 4250).

CSCI 8266  USER EXPERIENCE DESIGN (3 credits)

User experience (UX) design is concerned with the application of user-centered design principles to the creation of computer interfaces ranging from traditional desktop and web-based applications, mobile and embedded interfaces, and ubiquitous computing. This course provides in-depth, hands-on experience with real world application of the iterative user-centered process including contextual inquiry, task analysis, design ideation, rapid prototyping, interface evaluation, and reporting usability findings. (Cross-listed with CSCI 4260, ACMP 4260, ACMP 8266).

CSCI 8300  IMAGE PROCESSING AND COMPUTER VISION (3 credits)

This course introduces the computer system structures and programming methodologies for digital image processing and computer vision. The course will cover the mathematical models of digital image formation, image representation, image enhancement and image understanding. Techniques for edge detection, region growing, segmentation, two-dimensional and three-dimensional description of object shapes will be discussed. The course will concentrate on the study of knowledge-based approaches for computer interpretation and classification of natural and man-made scenes and objects.

Prerequisite(s): CSCI 1620 and CSCI 3320. Not open to non-degree graduate students.

CSCI 8306  DETERMINISTIC OPERATIONS RESEARCH MODELS (3 credits)

This is a survey course of deterministic operations research models and algorithms. Topics include linear programming, network programming, and integer programming. (Cross-listed with CSCI 4300, MATH 4300, MATH 8306).

Prerequisite(s): MATH 2050 with a C- or better or permission of instructor.

CSCI 8316  PROBABILISTIC OPERATIONS RESEARCH MODELS (3 credits)

This is a survey course of probabilistic operations, research models and algorithms. Topics include Markov chains, queueing theory, inventory models, forecasting, and simulation. (Cross-listed with CSCI 4310, MATH 4310, MATH 8316).

Prerequisite(s): MATH 2050 and either MATH 4740 or MATH 8746 or STAT 3800 or STAT 8805 all with a C- or better or permission of instructor.

CSCI 8325  DATA STRUCTURES (3 credits)

This is a core that will cover a number of data structures such as tree, hashing, priority queues and graphs as well as different algorithm design methods by examining common problem-solving techniques. (Cross-listed with CSCI 3320)

CSCI 8326  COMPUTATIONAL OPERATIONS RESEARCH (3 credits)

Survey of computational methods used in the solution of operations research problems. Some topics may include scripting to guide optimization software, constraint programming, heuristics and metaheuristics for optimization, basic machine learning algorithms, and simulation. (Cross-listed with MATH 4320, MATH 8326, CSCI 4320).

Prerequisite(s): MATH 3200 or CSCI 1620, and MATH 4300 each with a grade of C- or better or permission of instructor.

CSCI 8340  DATABASE MANAGEMENT SYSTEMS II (3 credits)

This course is an in-depth coverage of database management systems. Students will learn important principles of query processing and query optimization, transaction processing, and various database systems architectures. After taking this course, students should also be able to identify useful resources to explore future developments in the area of database management systems.

Prerequisite(s): CSCI 4850 or CSCI 8856. Not open to non-degree graduate students.

CSCI 8350  DATA WAREHOUSING AND DATA MINING (3 credits)

This course is an in-depth coverage of data warehousing and data mining. This course starts with coverage of data warehousing (an enabling technology for data mining) and covers the entire data mining process and various data mining functionalities in detail. Students will get a chance to practice knowledge learned in the course to complete term projects related to data warehousing and/or data mining. After taking this course, students should also be able to identify useful resources to explore future developments in the area of data warehousing and data mining.

Prerequisite(s): CSCI 4850 or CSCI 8856. Not open to non-degree graduate students.

CSCI 8360  MACHINE LEARNING FOR TEXT (3 credits)

This course focuses on the fundamental techniques for extraction of various insights from text data which is ubiquitous on the Web, social media sites, emails, news articles, digital libraries, and other sources. The course topics will include concepts and techniques used by search engines to crawl, index, and rank web pages on the Web, machine learning techniques for categorization of news articles into different categories, sentiment and opinion analysis of social media chats, text summarization, and information extraction.

Prerequisite(s): Not open to non-degree graduate students.

CSCI 8366  PRINCIPLES OF SECURE SYSTEM DESIGN (3 credits)

Contemporary issues in computer security, including sources for computer security threats and appropriate reactions; basic encryption and decryption; secure encryption systems; program security, trusted operating systems; database security, network and distributed systems security, administering security; legal and ethical issues. (Cross-listed with CYBR 4360, CYBR 8366)

CSCI 8390  ADVANCED TOPICS IN DATA BASE MANAGEMENT (3 credits)

This course is an in-depth coverage of well-selected topic(s) in recent development of database management systems. Since new developments in DBMS are very diverse, when each time when this course is offered, it will focus on one or more specific topics, and the course can be taken multiple times for credit.

Prerequisite(s): CSCI 4850 or CSCI 8856. Not open to non-degree graduate students.

CSCI 8400  ADVANCED COMPUTER GRAPHICS (3 credits)

Computer graphics continues to play an important role in computer science. This course covers the mathematical foundations of three-dimensional representation and animation; ray tracing and path tracing rendering methods; using the graphical processing unit (GPU) for real time applications; and concludes with simulation of natural phenomenon.

Prerequisite(s): Bachelors degree or permission from the Graduate Program Committee. Not open to non-degree graduate students.

CSCI 8410  DISTRIBUTED SYSTEMS AND NETWORK SECURITY (3 credits)

The course aims at understanding the issues surrounding data security, integrity, confidentiality and availability in distributed systems. Further, we will discuss various network security issues, threats that exist and strategies to mitigate them. This course will cover topics in cryptography, public key infrastructure, authentication, hashing, digital signatures, ARP protection, IP and IPSEC, IP Tables, SSL/TLS, firewalls, etc. (Cross-listed with CYBR 8410)

Prerequisite(s): CSCI 8366 or equivalent(s). Not open to non-degree graduate students.

CSCI 8420  SOFTWARE ASSURANCE (3 credits)

Software assurance is a reasoned, auditable argument created to support the belief that the software will operate as expected. This course is an intersection of knowledge areas necessary to perform engineering activities or aspects of activities relevant for promoting software assurance. This course takes on a software development lifecycle perspective for the prevention of flaws. (Cross-listed with CYBR 8420)

Prerequisite(s): CSCI 8836 OR by permission of the Instructor. Not open to non-degree graduate students.

CSCI 8430  TRUSTED SYSTEM DESIGN, ANALYSIS AND DEVELOPMENT (3 credits)

This course examines in detail: the principles of a security architecture, access control, policy and the threat of malicious code; the considerations of trusted system implementation to include hardware security mechanisms, security models, security kernels, and architectural alternatives; the related assurance measures associated with trusted systems to include documentation, formal specification and verification, and testing, and approaches that extend the trusted system, into applications and databases and into networks and distributed systems.

Prerequisite(s): CSCI 8366 or equivalents, or instructor permission. Not open to non-degree graduate students.

CSCI 8446  INTRODUCTION TO PARALLEL COMPUTING (3 credits)

This course is an introduction to parallel computing, that is using multiple processors to execute algorithms. Topics discussed include: classification of parallel computers; shared-memory versus message passing; forms of parallelism; measures of performance; designing parallel algorithms; parallel programming and parallel languages; synchronization constructs; and operating systems for parallel computers. (Cross-listed with CSCI 4440)

Prerequisite(s): CSCI 4500, which may be taken concurrently, with C- or better.

CSCI 8450  ADVANCED TOPICS IN NATURAL LANGUAGE UNDERSTANDING (3 credits)

The course will provide in depth study of the topics in natural language processing and understanding, such as syntax, lexical and computational semantics, natural language ambiguities and their disambiguation, logical form construction and inference. The course will survey state-of-the-art natural language processing toolkits and knowledge bases that boost the development of modern language processing and understanding applications.

Prerequisite(s): CSCI 3320 OR CSCI 3660 OR CSCI 4450. Not open to non-degree graduate students.

CSCI 8456  PRINCIPLES OF ARTIFICIAL INTELLIGENCE (3 credits)

An introduction to artificial intelligence. The course will cover topics such as machine problem-solving, uninformed and informed searching, propositional logic, first-order logic, approximate reasoning, temporal reasoning, planning under uncertainty, and machine learning. (Cross-listed with CSCI 4450).

Prerequisite(s): CSCI 3320 with C- or better.

CSCI 8460  FUNDAMENTALS OF ROBOTICS (3 credits)

This course provides the core principles of robotics and the utilization of control and intelligence methodologies applied to the field of robotics. We will focus on the hands-on creation of software modules within the Robot Operating System (ROS) environment and explore how to integrate artificial intelligence techniques into a fully operational robot control system.

Prerequisite(s): Prior completion of undergraduate coursework in CSCI 3320 Data Structures with C- or better AND any course equivalent to this course. Basic proficiency with Python or C++ programming is recommended.

CSCI 8476  PATTERN RECOGNITION (3 credits)

Structures and problems of pattern recognition. Mathematics model of statistical pattern recognition, multivariate probability, Bay's decision theory, maximum likelihood estimation, whitening transformations. Parametric and non-parametric techniques, linear discriminant function, gradient-descent procedure, clustering and unsupervised learning, and feature selection algorithms. (Cross-listed with CSCI 4470)

Prerequisite(s): CSCI 1620 with C- or better, and MATH 2050. Recommended: MATH 4740/8746 or STAT 3800/8805.

CSCI 8480  MULTI-AGENT SYSTEMS AND GAME THEORY (3 credits)

This course covers advanced topics in the area of coordination of distributed agent-based systems with a focus on computational aspects of game theory. The main topics covered in this course include distributed constraint satisfaction, distributed constraint optimization, and competitive and cooperative game theory. (Cross-listed with MATH 8480)

Prerequisite(s): CSCI 4450 or CSCI 8456. Suggested background courses: CSCI 4480 or CSCI 8486; CSCI 8080. Not open to non-degree graduate students.

CSCI 8486  ALGORITHMS FOR ROBOTICS (3 credits)

This course provides an introduction to software techniques and algorithms for autonomously controlling robots using software programs called controllers. Students will be taught how to program and use software controllers on simulated as well as physical robots. (Cross-listed with CSCI 4480).

Prerequisite(s): CSCI 3320 with C- or better. CSCI 4450/8456 is a recommended but not essential pre-requisite.

CSCI 8500  NUMERICAL LINEAR ALGEBRA (3 credits)

Topics covered in this course include error propagation, solutions of nonlinear equations, solutions of linear and nonlinear systems by various schemes, matrix norms and conditioning, and computation of eigenvalues and eigenvectors. (Cross-listed with MATH 8500).

Prerequisite(s): MATH 1960 and MATH 2050, or permission of instructor. Familiarity with computer programming is assumed.

CSCI 8506  OPERATING SYSTEMS (3 credits)

Operating system principles. The operating system as a resource manager; I/O programming, interrupt programming and machine architecture as it relates to resource management; memory management techniques for uni-multiprogrammed systems; process description and implementation; processor management (scheduling); I/O device, controller, and channel management; file systems. Operating system implementation for large and small machines. (Cross-listed with CSCI 4500).

Prerequisite(s): CSCI 3710, CSCI 3320/8325, MATH 1950, and CSCI 4350/8356 with C- or better.

CSCI 8510  NUMERICAL DIFFERENTIAL EQUATIONS (3 credits)

Topics covered in this course include interpolation and approximations, numerical differentiation, numerical integration, and numerical solutions of ordinary and partial differential equations. (Cross-listed with MATH 8510).

Prerequisite(s): MATH 1970, MATH 2350, or permission of instructor. Familiarity with computer programming is assumed.

CSCI 8520  ADVANCED TOPICS IN OPERATIONS RESEARCH (3 credits)

Advanced treatment of a specific topic in the area of operations research not available in the regular curriculum. Topics, developed by individual faculty members, will reflect their special interests and expertise. The course may be repeated for credit as topics differ. (Cross-listed with MATH 8520).

Prerequisite(s): MATH 4300 or MATH 8306 or CSCI 4300 or CSCI 8306 or permission of the instructor.

CSCI 8530  ADVANCED OPERATING SYSTEMS (3 credits)

State-of-the art techniques for operating system structuring and implementation. Special purpose operating systems. Pragmatic aspects of operating system design, implementation and use.

CSCI 8555  COMMUNICATION NETWORKS (3 credits)

This course is designed to bring students up to the state of the art in networking technologies with a focus on Internet. It will cover the principles of networking with an emphasis on protocols, implementations and design issues. (Cross-listed with CSCI 3550)

Prerequisite(s): (CSCI 3320 or CSCI 8325 with grade of C- or better) AND (CSCI 2240 or CYBR 2250 with grade of C- or better)

CSCI 8566  NUMBER THEORY & CRYPTOGRAPHY (3 credits)

An overview of one of the many beautiful areas of mathematics and its modern application to secure communication. The course is ideal for any student who wants a taste of mathematics outside of, or in addition to, the calculus sequence. Topics to be covered include: prime numbers, congruences, perfect numbers, primitive roots, quadratic reciprocity, sums of squares, and Diophantine equations. Applications include error-correcting codes, symmetric and public key cryptography, secret sharing, and zero knowledge proofs. (Cross-listed with CSCI 4560, MATH 4560, MATH 8566).

Prerequisite(s): MATH 2230 with a C- or better or MATH 2030 with a C- or better or CSCI 2030 with a C- or better or permission of instructor

CSCI 8590  FUNDAMENTALS OF DEEP LEARNING (3 credits)

This course is an introduction to deep learning, a branch of machine learning concerned with the development and application of neural networks. Deep learning trains the machine to learn patterns that it is presented with rather than requiring the human operator to define the patterns that the machine should look for. Deep learning is behind many recent advances in artificial intelligence, such as face recognition, speech recognition and autonomous driving. This course will cover the foundations of deep learning, learning theory, basic/advanced neural networks and problem domains of many selected applications.

Prerequisite(s): CSCI 3320 or instructor permission

CSCI 8610  FAULT TOLERANT DISTRIBUTED SYSTEMS (3 credits)

This course is to study the theory and practice of designing computer systems in the presence of faulty components. Emphasizes the basics of how faults can affect systems and what is required to mask or compensate for their efforts.

Prerequisite(s): Not open to non-degree graduate students.

CSCI 8620  MOBILE COMPUTING AND WIRELESS NETWORKS (3 credits)

The objective of the course is to introduce contemporary issues in mobile computing and wireless networks. The course covers the differences between mobile computing and the traditional distributed computing paradigm, impediments of the mobile and wireless environments, problems and limitations due to such impediments, various network layers solutions, location management techniques, mobile IP, wireless LANs, wireless TCP, ad hoc networks, and sensor networks.

Prerequisite(s): CSCI 3550 or CSCI 8555. Not open to non-degree graduate students.

CSCI 8626  COMPUTER GRAPHICS (3 credits)

An introduction to the acquisition, manipulation and display of graphical information using digital techniques. Topics include discussion of the various hardware devices used for input and output, the classical algorithms and data structures used in manipulation of graphical objects, the user interface to the graphics system, and applicable standards. (Cross-listed with CSCI 4620).

Prerequisite(s): ISQA 3300 or CSCI 3320.

CSCI 8656  INTRODUCTION TO CLOUD COMPUTING (3 credits)

This course is an introduction to cloud computing. The students will learn about core concepts of cloud computing such as cloud models (IaaS, PaaS, SaaS, etc.), deployment models (public, private, hybrid), cloud infrastructures (compute, networking, storage), cloud services (VMs, serverless, object storage, cache, CDN, etc.), and big-data driven systems. This course will revisit essential topics in CS-related courses such as data structure, operating systems, and distributed systems and show how they are utilized and applied in diverse cloud computing technologies and systems including Hadoop, Spark, and distributed databases. After taking this course, students will have basic knowledge of cloud computing and hand-on experiences with diverse projects (including cloud system demos) that utilize diverse and heterogeneous cloud resources. (Cross-listed with CSCI 4650).

Prerequisite(s): Prior experience and background knowledge of networking and operating systems are preferred

CSCI 8666  AUTOMATA, COMPUTABILITY, AND FORMAL LANGUAGES (3 credits)

This course presents a sampling of several important areas of theoretical computer science. Definition of formal models of computation and important properties of such models, including finite automata and Turing machines. Definition and important properties of formal grammars and their languages. Introduction to the formal theories of computability and complexity. (Cross-listed with CSCI 4660, MATH 4660, MATH 8666).

Prerequisite(s): MATH 2030. Recommended: CSCI 3320/CSCI 8325.

CSCI 8700  SOFTWARE SPECIFICATIONS AND DESIGN (3 credits)

A continuation of the study of software engineering with an emphasis on early phases of software development, namely requirements engineering/specification and architectural design. Includes an in-depth study of practices for effective software requirements specification and architectural design, as well as formal specifications of software systems. Related topics such as metrics and support tools are also covered.

Prerequisite(s): CSCI 4830 or CSCI 8836. Not open to non-degree graduate students.

CSCI 8706  COMPILER CONSTRUCTION (3 credits)

Assemblers, interpreters and compilers. Compilation of simple expressions and statements. Analysis of regular expressions. Organization of a compiler, including compile-time and run-time symbol tables, lexical scan, syntax scan, object code generation and error diagnostics. (Cross-listed with CSCI 4700).

CSCI 8710  MODERN SOFTWARE DEVELOPMENT METHODOLOGIES (3 credits)

Designed to introduce students to advanced object technology and other modern methodologies for developing software systems. Intended for graduate students who have mastered the basic concepts and issues of software engineering. Course covers advanced object-oriented software development. The course also covers several offshoots of object technology, including: component-based software engineering, aspect-oriented software development, software product line engineering, service-oriented computing, etc.

Prerequisite(s): CSCI 4830 or CSCI 8836.

CSCI 8760  FORMAL METHODS IN SOFTWARE ENGINEERING (3 credits)

In the high consequence system domain, a primary objective of any construction technique employed is to provide sufficiently convincing evidence that the system, if put into operation, will not experience a high consequence failure or that the likelihood of such a failure falls within acceptable probabilistically defined limits. Systems for which such evidence can be provided are called high assurance systems. The objective of this course is to examine software-engineering techniques across the development life cycle that are appropriate for high assurance systems. The course will analyze the nature of the evidence provided by various techniques (e.g., does a given technique provide sufficiently strong evidence in a given setting).

Prerequisite(s): CSCI 8000 and CSCI 8836 or CSCI 4830

CSCI 8766  TOPICS IN MODELING (3 credits)

Selection of such topics as formulation and analysis of various models involving Markov chains, Markov processes (including birth and death processes), queues, cellular automata, difference and differential equations, chaotic systems and fractal geometries. (Cross-listed with CSCI 4760).

Prerequisite(s): MATH 2350 and MATH 4740 or MATH 8746.

CSCI 8790  ADVANCED TOPICS IN SOFTWARE ENGINEERING (3 credits)

The main objective of this course is (1) to introduce advanced topics in software engineering approaches and (2) to provide an overview and in-depth understanding of software development and maintenance techniques. Many well-known software implementation problems, associated programming tools, and analysis techniques are also covered. At the end of this course, the student should be able to apply the practical skills and approaches in solving non-trivial problems in diverse fields of study.

Prerequisite(s): CSCI 4830 or CSCI 8836. Not open to non-degree graduate students.

CSCI 8836  INTRODUCTION SOFTWARE ENGINEERING (3 credits)

Basic concepts and major issues of software engineering, current tools and techniques providing a basis for analyzing, designing, developing, maintaining and evaluating the system. Technical, administrative and operating issues. Privacy, security and legal issues. (Cross-listed with CSCI 4830).

CSCI 8856  DATABASE MANAGEMENT SYSTEMS (3 credits)

Basic concepts of data base management systems (DBMSs). The relational, hierarchical and network models and DBMSs which use them. Introduction to data base design. (Cross-listed with CSCI 4850).

CSCI 8876  DATABASE SEARCH AND PATTERN DISCOVERY IN BIOINFORMATICS (3 credits)

This required course for undergraduate bioinformatics majors provides foundational knowledge on database aspects used in the field and an overview of their applications in bioinformatics, biomedical informatics, and health/clinical informatics. The course begins with a brief review of key concepts in computational molecular biology related to database search/development, database management systems, the difference between primary and secondary databases, and bioinformatics-related aspects of modeling and theory in computer science. The major focus is on the multiple challenges and aspects of bio-database development, search, and pattern discovery. The course uses problem-based learning to help students develop database management skills as they apply to high throughput "-omics." data, the basics of data management, data provenance and governance, standards, and analysis through KDD-based workflows. This course will also consider the fundamentals of artificial intelligence and machine learning as they pertain to bioinformatics, from the perspective of database storage, I/O, and analysis. (Cross-listed with BIOI 4870)

Prerequisite(s): CSCI 3320 and BIOI 3500, or permission of instructor; BIOI 3500 can be taken concurrently. Prior completion of CSCI 4850 is strongly recommended but not required. Not open to non-degree graduate students.

CSCI 8910  MASTER OF SCIENCE CAPSTONE (3 credits)

The capstone course is to integrate coursework, knowledge, skills and experimental learning to enable the student to demonstrate a broad mastery of knowledge, skills, and techniques across the Master degree curriculum of Computer Science for a promise of initial employability and further career advancement. The course is designed to be in a student-centered and student-directed manner which requires the command, analysis and synthesis of knowledge and skills. Students may apply their knowledge and skill to a project which serves as an instrument of evaluation. Students are encouraged to foster an interdisciplinary research and cultivate industry alliances and cooperation in this course. This capstone course should be taken only after students have completed at least 3/4 of course requirements for the major.

Prerequisite(s): Master's degree of Computer Science with course-only option (program III). Not open to nondegree students.

CSCI 8920  ADVANCED TOPICS COMPUTER SCIENCE (3 credits)

An in-depth study, at the graduate level, of one or more topics that are not treated in other courses. May be repeated with different topics with permission of adviser.

Prerequisite(s): Permission of instructor; will vary with offering. Not open to non-degree graduate students.

CSCI 8950  GRADUATE INTERNSHIP IN COMPUTER SCIENCE (1-3 credits)

The purpose of this course is to provide students with opportunities to apply their academic studies in environments such as those found in business, industry, and other non-academic organizations. The student interns will sharpen their academic focus and develop better understanding of non-academic application areas.

Prerequisite(s): Permission of the graduate program chairperson and a minimum grade point average of 3.0 (B), with at most one grade below B, but not lower than C+ for all CS graduate classes. Not open to non-degree graduate students.

CSCI 8960  THESIS EQUIVALENT PROJECT IN COMPUTER SCIENCE (1-6 credits)

This course allows a graduate student to conduct a research project in computer science or a related area. The project is expected to place an emphasis on applied, implementations-based, or experimental research. The process for development and approval of the project must include: appointment of supervisory committee (chaired by project adviser), a proposal approved by the supervisory committee, monitoring of the project by the supervisory committee, an oral examination over the completed written product conducted by the supervisory committee, and final approval by the supervisory committee. The approved written project will be submitted to the Office of Graduate Studies by the advertised deadlines.

Prerequisite(s): Permission of Graduate Adviser. Not open to non-degree graduate students.

CSCI 8970  INDEPENDENT STUDY (1-3 credits)

Under this number a graduate student may pursue studies in an area that is not normally available in a formal course. The topics to be studied will be in a graduate area of computer science to be determined by the instructor.

Prerequisite(s): Permission of the Graduate Program Committee. Not open to non-degree graduate students.

CSCI 8980  GRADUATE SEMINAR (1 credit)

This course offers an up-to-date coverage of the contemporary and emerging concepts, models, techniques and methodologies, and/or the current research results in the fundamental areas of computer science. Topics to be covered by the course will vary in different semesters.

Prerequisite(s): Permission of the Instructor. Not open to non-degree graduate students.

CSCI 8986  TOPICS IN COMPUTER SCIENCE (3 credits)

This is a variable topic course in computer science at the senior/graduate level. Topics not normally covered in the computer science degree program, but suitable for senior/graduate-level students can be offered. (Cross-listed with CSCI 4980).

Prerequisite(s): Permission of instructor. Additional prerequisites may be required for particular topic offerings.

CSCI 8990  THESIS (1-6 credits)

A research project, designed and executed under the supervision of the chair and approval by members of the graduate student's thesis advisory committee. In this project the student will develop and perfect a number of skills including the ability to design, conduct, analyze and report the results in writing (i.e., thesis) of an original, independent scientific investigation.

Prerequisite(s): Permission of Graduate Adviser. Not open to non-degree graduate students.

CSCI 9410  ADVANCED TOPICS IN LOGIC PROGRAMMING (3 credits)

This course will examine some advanced topics in logic programming, in particular logic programming under stable model (or answer set) semantics. Answer set programming is a common name of the field. Formal syntax, semantics, and proofs of correctness for logic programs will be considered. Elements of inductive and Prolog programming will also be introduced. Each advanced topic will be followed by how it has been applied in practice. Advanced applications of logic programming will be covered in detail.

Prerequisite(s): CSCI 8000 and doctoral student standing in Information Technology or the permission of the instructor.

CSCI 9420  INTELLIGENT AGENT SYSTEMS (3 credits)

This course covers the principles of interaction between agents in multi-agent systems using game theory. Relevant topics studied in this course include competitive games, statistical Bayesian games, cooperative games, and mechanism design. Students will have to implement projects related to the material studied in the course.

Prerequisite(s): CSCI 3320 or CSCI 8325 and CSCI 4450 or CSCI 8456. Not open to non-degree graduate students.

CSCI 9710  METHODS IN SOFTWARE ENGINEERING RESEARCH (3 credits)

This course provides guidelines on how to conduct research in the field of software engineering by presenting the research methods, classic readings, and development of theories and their application to real life problems. The main emphasis of the course is to provide opportunity for in-depth study of topics such as contemporary methods for software development.

Prerequisite(s): CSCI 8836 or equivalent course and doctoral student standing in Information Technology or permission of the instructor. Not open to non-degree graduate students.

CSCI 9810  RESEARCH FOUNDATIONS IN THEORETICAL COMPUTING (3 credits)

This course offers an up-to-date coverage of the contemporary and emerging concepts, models, techniques, and methodologies, and/or the current research results in the fundamental areas of theoretic computing. The course will examine advanced research topics in computer science and engineering, including foundations of automata theory, computability, complexity analysis, computational logics and algorithmic analysis, hybrid dynamic systems theory, number theory, adaptation and learning theory, concepts and principles in computational geometry, stochastic processes, and random optimization. Each topic will be discussed with a perspective of research issues and directions. Active student participation in investigation of the research topics, survey of the current state-of-art, and identifying the future research insights is required. Students will take turn presenting their research results on specific topics. Topics to be covered by the course will vary in different semesters.

Prerequisite(s): The prerequisites of this course vary depending on the areas to be covered in the semester the course is offered. Good standing in Ph.D. program is required. Permission of the instructor may be required. Not open to non-degree graduate students.