 EECS 649 Introduction to Artificial Intelligence
 General concepts, search procedures, twoperson games, predicate calculus and automated theorem proving, nonmonotonic logic, probabilistic reasoning, rule based systems, semantic networks, frames, dynamic memory, planning, machine learning, natural language understanding, neural networks. Prerequisite: Corequisite: EECS 368. LEC.

 EECS 660 Fundamentals of Computer Algorithms
 Basic concepts and techniques in the design and analysis of computer algorithms. Models of computations. Simple lower bound theory and optimality of algorithms. Computationally hard problems and the theory of NPCompleteness. Introduction to parallel algorithms. Prerequisite: EECS 560 and either EECS 461 or MATH 526. LEC.

 EECS 662 Programming Languages
 Formal definition of programming languages including specification of syntax and semantics. Simple statements including precedence, infix, prefix, and postfix notation. Global properties of algorithmic languages including scope of declaration, storage allocation, grouping of statements, binding time of constituents, subroutines, coroutines, and tasks. Runtime representation of program and data structures. Prerequisite: EECS 368 and EECS 560. LEC.

 EECS 738 Machine Learning
 "Machine learning is the study of computer algorithms that improve automatically through experience" (Tom Mitchell). This course introduces basic concepts and algorithms in machine learning. A variety of topics such as Bayesian decision theory, dimensionality reduction, clustering, neural networks, hidden Markov models, combining multiple learners, reinforcement learning, Bayesian learning etc. will be covered. Prerequisite: Graduate standing in CS or CoE or consent of instructor. LEC.

 EECS 742 Static Analysis
 This course presents an introduction to techniques for statically analyzing programs. Converge includes theoretical analysis, definition and implementation of data flow analysis, control flow analysis, abstract interpretation, and type and effects systems. The course presents both the underlying definitions and pragmatic implementation of these systems. Prerequisite: EECS 665 or EECS 662 or equivalent. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 762 Programming Language Foundation I
 This course presents a basic introduction to the semantics of programming languages. The presentation begins with basic lambda calculus and mechanisms for evaluating lambda calculus terms. Types are introduced in the form of simply typed lambda calculus and techniques for type inference and defining type systems are presented. Finally, techniques for using lambda calculus to define, evaluate and type check common programming language constructs are presented. Prerequisite: EECS 662 or equivalent. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 741 Computer Vision
 This course gives a handson introduction to the fundamentals and applications of computer vision. Topics include: Image processing fundamentals, feature detection and matching, projective geometry and transformation, camera geometry and calibration, twoview geometry and stereo vision, structure from motion, parameter estimation and optimization, and the latest developments and applications in computer vision. Prerequisite: MATH 290 and MATH 526, or consent from the instructor. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 755 Software Modeling and Analysis
 Modern techniques for modeling and analyzing software systems. Course coverage concentrates on pragmatic, formal modeling techniques that support predictive analysis. Topics include formal modeling, static analysis, and formal analysis using model checking and theorem proving systems. Prerequisite: EECS 368 or equivalent. LEC.

 EECS 767 Information Retrieval
 This class introduces algorithms and applications for retrieving information from large document repositories, including the Web. Topics span from classic information retrieval methods for text documents and databases, to recent developments in Web search, including: text algorithms, indexing, probabilistic modeling, performance evaluation, web structures, link analysis, multimedia information retrieval, social network analysis. Prerequisite: EECS 647 or permission of instructor. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 830 Advanced Artificial Intelligence
 A detailed examination of computer programs and techniques that manifest intelligent behavior, with examples drawn from current literature. The nature of intelligence and intelligent behavior. Development of, improvement to, extension of, and generalization from artificially intelligent systems, such as theoremprovers, pattern recognizers, language analyzers, problemsolvers, question answerers, decisionmakers, planners, and learners. Prerequisite: Graduate standing in the EECS department or Cognitive Science or permission of the instructor. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 837 Data Mining
 Extracting data from data bases to data warehouses. Preprocessing of data: handling incomplete, uncertain, and vague data sets. Discretization methods. Methodology of learning from examples: rules of generalization, control strategies. Typical learning systems: ID3, AQ, C4.5, and LERS. Validation of knowledge. Visualization of knowledge bases. Data mining under uncertainty, using approaches based on probability theory, fuzzy set theory, and rough set theory. Prerequisite: Graduate standing in CS or CoE or consent of instructor. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 839 Mining Special Data
 Problems associated with mining incomplete and numerical data. The MLEM2 algorithm for rule induction directly from incomplete and numerical data. Association analysis and the Apriori algorithm. KNN and other statistical methods. Mining financial data sets. Problems associated with imbalanced data sets and temporal data. Mining medical and biological data sets. Induction of rule generations. Validation of data mining: sensitivity, specificity, and ROC analysis. Prerequisite: Graduate standing in CS or CoE or consent of instructor. LEC.

 EECS 843 Programming Language Foundation II
 This course presents advanced topics in programming language semantics. Fixed point types are presented followed by classes of polymorphism and their semantics. System F and type variables are presented along with universal and existential types. The lambda cube is introduced along with advanced forms of polymorphism. Several interpreters are developed implementing various type systems and associated type inference algorithms. Prerequisite: EECS 762. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 940 Theoretic Foundation of Data Science
 A review of statistical and mathematical principles that are utilized in data mining and machine learning research. Covered topics include asymptotic analysis of parameter estimation, sufficient statistics, model selection, information geometry, function approximation and Hilbert spaces. Prerequisite: EECS 738, EECS 837, EECS 844 or equivalent. LEC.
The class is not offered for the Spring 2020 semester.

 EECS 776 Functional Programming and Domain Specific Languages
 An introduction to functional programming. Topics include learning how to program in Haskell; IO and purity in software engineering; functional data structures and algorithms; monads and applicative functors; parsing combinators; Domain Specific Languages (DSLs) and DSL construction; advanced type systems; making assurance arguments; testing and debugging. Prerequisite: EECS 368 or equivalent or consent of instructor. LEC.
