# Courses Catalog

### Graduate Course

**5014:
RESEARCH METHODS IN COMPUTER SCIENCE**

Preparation for research in computer science. Technical communication skills. Design and evaluation of experiments. The research process. (3H,3C)

Provide students with knowledge of the tools and models for the non-determinism inherent in computer systems, sets, combinatorics, and probability. Specific studies of queueing systems, fault tolerance, information coding, and data security are also examined.

Formal models for computational processes and their meaning. Formal languages, automata, and computability. Semantics of programming languages. Properties of programs. Techniques of abstraction and specification. Co: 5024. (3H,3C). I.

**5044: Object-Oriented Programming with Java (MIT only)
**

This course covers the basic concepts of object-oriented programming and their relationships to the principles of software engineering. Emphasis is placed on the programming structures of interfaces, classes, objects, inheritance, and polymorphism and how these structures aid in the development of extensible software systems. Practical experience is gained in the design, construction, and debugging of systems in a strongly-typed object oriented language such as Java. This course provides the programming skills needed for developing software in other courses, and provides the context for more advanced modules that deal with software engineering and project management. (3H, 3C).

**5104:
COMPUTABILITY AND FORMAL LANGUAGES **

Formal theory of computability, the halting problem, models of computation, and Church's thesis, and formal languages. X-grade allowed. Pre: 5034; (3H,3C). II.

Methods for constructing and analyzing algorithms. Measures of computational complexity, determination of efficient algorithms for a variety of problems such as searching, sorting and pattern matching. Geometric algorithms, mathematical algorithms, and theory of NP-completeness.

Issues in the design and functioning of operating systems. Emphasis on synchronization of concurrent activity in both centralized and distributed systems. Deadlock, scheduling, performance analysis, operating system design, and memory systems including distributed file systems. Pre: 3204, 5034; (3H,3C). II.

**5214:
MODELING AND EVALUATION OF COMPUTER SYSTEMS**

An overview of modeling, simulation, and performance evaluation of computer systems, i.e., operating systems, database management systems, office automation systems, etc. Fundamentals of modeling, the life cycle of a simulation study, workload characterization, random number and variate generation, procurement, measurement principles, software and hardware monitors, capacity planning, system and program tuning, and analytic modeling. (3H,3C).II.

An in-depth treatment of systems simulation and simulation programming languages (SPLs). Input data modeling, simulation model formulation and representation, conceptual frameworks for modeling, a comparative study of some SPLs, principles of SPL design, statistical analysis of simulation output data, credibility assessment stages, model development environments. Pre: 5204 and STAT 4105 or 4714 or 4705; (3H,3C). I.

**5244:
INTERNET SOFTWARE (MIT Only)**

This course covers the languages and technologies needed to develop software for the Internet and world-wide web. Advanced Java technologies for distributed computation, component-based systems, interoperability with legacy systems, and database access are presented. Principles and technologies for agent-based systems and electronic commerce are also studied.

**5304:
TRANSLATOR DESIGN AND CONSTRUCTION**

Fundamental theory of parsing and translation and practical applications of this theory. Lexical analysis, parsing techniques based on top-down (LL, Recursive Descent) and bottom-up (LR, Precedence), code generation, code optimization techniques, and runtime systems. Pre: 4114 or 5034; (3H,3C). II.

In-depth investigation of the principles of programming systems, not necessarily restricted to programming languages, both from the point of view of the user implementor. Algorithms of implementation, syntax and semantic specification systems, block structures and scope, data abstraction and aggregates, exception handling, concurrency, and applicative/functional/data-flow languages. Pre: 4114; (3H,3C). II.

**5465-5466 (MATH 5465-5466): NUMERICAL ANALYSIS**

A survey of the construction, analysis, and implementation of numerical algorithms in linear algebra, nonlinear equations and optimization, approximation by polynomials, quadrature, and ordinary differential equations. Pre: 4525 or equivalent and a high-level programming language; (3H,3C). 5465: I; 5466: II.

**5474
(MATH 5474): FINITE DIFFERENCE METHODS FOR PARTIAL DIFFERENTIAL EQUATIONS**

Finite difference methods for initial and boundary value problems for partial differential equations. Consistency, stability, convergence, dispersion, and dissipation. Methods for linear and nonlinear elliptic and parabolic equations, first- and second-order hyperbolic equations, and nonlinear conservation laws. Pre: 3414 and 4525 or Equivalent and a high-level programming language; (3H,3C). I.

**5484
(MATH 5484): FINITE ELEMENT METHODS FOR PARTIAL DIFFERENTIAL EQUATIONS
**

Weak formulations of boundary-value problems for elliptic partial differential equations. Finite element spaces. Approximation theory for finite element spaces. Error estimates. Effects of numerical integration and curved boundaries. Nonconforming methods. Concrete examples of the application of the finite element method. Efficient implementation strategies. Time dependent problems. Pre: 3414 and 4525 or Equivalent, and a high-level programming language; (3H,3C). II.

**5485,
5486 (MATH 5485, 5486): NUMERICAL ANALYSIS AND SOFTWARE**

Presentation and analysis of numerical methods for solving common mathematical and physical problems. Methods of solving large sparse linear systems of equations, algebraic eigenvalue problems, and linear least squares problems. Convergence, error analysis. Hardware and software influences. Efficiency, accuracy, and reliability of software. Robust computer codes. Cross-listed with Math 5485. (3H,3C). Pre: MATH 4445 and MATH 4446; (3H,3C). I,II.

**5504
(EE 5504): COMPUTER ARCHITECTURE** *(formerly 5515)*

Advanced computer architectures, focusing on multiprocessor systems and the principles of their design. Parallel computer models, program and network properties, principles of scalable designs. Case studies and example applications of pipeline processors, interconnection networks, SIMD and MIMD processors. Pre: EE 4504 or CS 4504; (3H,3C). I,II.

Basic techniques in data analytics including the preparation and manipulation of data for analysis and the creation of data files from multiple and dissimilar sources. The data mining and knowledge discovery process. Overview of data mining algorithms in classsification, clustering, association analysis, probabilistic modeling, and matrix decompositions. Detailed study of classification methods including tree-based methods, Bayesian methods, logistic regression, ensemble, bagging and boosting methods, neural network methods, use of support vectors and Bayesian networks. Detailed study of clustering methods including k-means, hierarchical and self-organizating map methods. Cross-listed with STAT 5525. (3H,3C).

Techniques in unsupervised and visualized learning in high dimension spaces. Theoretical, probabilistic, and applied aspects of data analytics. Methods include generalized linear models in high dimensional spaces, regularization, lasso and related methods, principal component regression (pca), tree methods, and random forests. Clustering methods including k-means, hierarchical clustering, biclustering, and model-based clustering will be throughly examined. Distance-based learning methods include multi dimensional scaling, the self organizing map, graphical/network models, and isomap. Supervised learning will consist of discriminant analyses, supervised pca, support vector machines, and kernel methods. Cross-listed as Stat 5526. (3H, 3C) Cross-listed with STAT 5526. (3H,3C).

**5560: Fundamentals of Information Security
**

Principles of information security and relevant mathematical concepts. Classical ciphers, relevant abstract algebra and number theory, symmetric-key ciphers, cipher modes of operation, and asymmetric-key ciphers. Cryptographic hash functions and message authentication codes. Elliptic curve cryptography and cryptosystems. Applications and standards relevant to network and computer security. Pre: Graduate Standing. (3H, 3C)

**5565****
(EE 5565): NETWORK ARCHITECTURE AND PROTOCOLS** *(formerly 5516)*

Principles and concepts of networking and protocols, with emphasis on data link, network, and transport protocols. Contemporary and emerging networks and protocols to illustrate concepts and to provide insight into practical networks including the Internet. Quantitative and qualitative comparisons of network architectures and protocols.

**5566: NETWORK ARCHITECTURE AND PROTOCOLS II
**

Performance evaluation, design, and management of networks. Use of queuing and other analytical methods, simulation, and experimental methods to evaluate and design networks and protocols. Network management architectures and protocols. Pre: 5565. (3H, 3C).

**5604:
INFORMATION STORAGE AND RETRIEVAL**

Analyzing, indexing, representing, storing, searching, retrieving, processing and presenting information and documents using fully automatic systems. The information may be in the form of text, hypertext, multimedia, or hypermedia. The systems are based on various models, e.g., Boolean logic, fuzzy logic, probability theory, etc., and they are implemented using inverted files, relational thesauri, special hardware, and other approaches. Evaluation of the systems' efficiency and effectiveness. Pre: Graduate standing; (3H,3C). I.

**5614:
DATABASE MANAGEMENT SYSTEMS**

Emphasizes concepts, data models, mechanisms, and language aspects concerned with definition, organization, and manipulation of data at a logical level. Concentrates on relational model, plus some semantic, logic-based, object-oriented, and knowledge-based modeling. Functional dependency and normalization of relations. Relational algebra, relational calculus, mapping languages, graphical languages.

Study of the principles and tools applicable to the methodical construction and controlled evolution of complex software systems. Tools for all phases of the life cycle are presented; particular attention focuses on the design, testing, and maintenance phases. Attention to measurement models of the software process and product which allow quantitative assessment of cost, reliability, and complexity of software systems. Pre: 5034; (3H,3C). I.

**5714
(ISE 5714): USABILITY ENGINEERING**

Design and evaluation of effective user interfaces, beginning with principles for designing the product. Development process for user interaction separate from interactive software development. Development process includes iterative life cycle management, systems analysis, design, usability specifications, design representation techniques, prototyping, formative user-based evaluation. Integrative and cross-disciplinary approach with main emphasis on usability methods and the user interaction development process. Pre: Graduate standing; (3H,3C). II. Alternate years.

**5724:
MODELS AND THEORIES OF HUMAN-COMPUTER INTERACTION**

Survey of models and theories of users and their use of computer equipment; conditions of application for various approaches. Task analysis, task modeling, representations and notations. Pre: Graduate standing; (3H,3C). I.

**5734:
COMPUTER-SUPPORTED COOPERATIVE WORK**

Review and critique of state-of-the-art computing systems supporting cooperative work. Introduction to toolkits, software architectures and implementation issues relevant to development of systems for cooperative work. Analysis of group interactions and concerns in collaborative activities such as writing, design, meetings, communication, and decision-making. Pre: Graduate standing; (3H,3C). II. Alternate years.

**5744:
SOFTWARE DESIGN AND QUALITY (MIT Only)**

This course focuses attention on critical aspects of the software lifecycle that have significant influence on the overall quality of the software system including: (1) techniques and approaches to software design, (2) quantitative measurement and assessment of the system during implementation, testing, and maintenance, and (3) the role of verification and validation in assuring software quality.

Survey of software architectures to build user interfaces, particularly focused on graphical user interfaces. Includes the design and implementation of user interfaces, the use of object-oriented application frameworks, software architecture for command undo, document management, layout managers, customized components, and separation of concerns in user interface software architectures. Discussion of research and advanced topics in User Interface Software. (3H,3C).

**5804:
INTRODUCTION TO ARTIFICIAL INTELLIGENCE**

A graduate level overview of the areas of knowledge representation, machine vision, natural language processing, search, logic and deduction, problem solving, planning, and robotics. Pre: Knowledge of data structures; (3H,3C). I.

Pass/fail only. (3H,3C).

Variable credit course.

Pass/fail only. (1H,1C).

Pass/fail only. Variable credit course.

Variable credit course.

**6104:
ADVANCED TOPICS IN THEORY OF COMPUTATION**

This course treats a specific, advanced topic of current research interest in the area of theory of computation. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5104 or 5114; (3H,3C). I. Even years.

**6204:
ADVANCED TOPICS IN SYSTEMS**

This course treats a specific advanced topic of current research interest in the area of systems. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5204 or 5214; (3H,3C). II. Even years.

**6304:
ADVANCED TOPICS IN LANGUAGES AND TRANSLATION**

This course treats a specific advanced topic of current research interest in the area of languages and translation. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5304 or 5314; (3H,3C). I. Even years.

**6404:
ADVANCED TOPICS IN MATHEMATICAL SOFTWARE**

This course treats a specific advanced topic of current research interest in the area of mathematical software. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5485; (3H,3C). II. Odd years.

**6504:
ADVANCED TOPICS IN COMPUTER ARCHITECTURE **

This course treats a specific advanced topic of current research interest in the area of architecture. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5515 or 5516; (3H,3C). II. Odd years.

This course examines and explores recent advances in multimedia networking technologies. Major topics include multimedia compression and standards, quality of service (QoS) support mechanisms and protocols, performance analysis, network calculus, IP multicasting, Internet multimedia applications, and multimedia transport over wireless networks. Pre: 5565. (3H,3C) I.

**6570: Advanced Foundations of Networking **

This course covers mathematical foundations that are necessary for theoretical study of networking. It focuses on algorithms and optimization techniques that are most commonly used to solve complex problems in networking. Major topics include complexity theory with applications to networking problems, design and proof of approximation algorithms, design of meta-heuristic algorithms, formulation techniques for network optimization, linear and non-linear optimization techniques with applications to networking, design of distributed algorithms with proof of convergence for networks systems. Pre: 5565. (3H, 3C).

**6604:
ADVANCED TOPICS IN DATA AND INFORMATION**

This course treats a specific advanced topic of current research interest in the area of data and information. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5604 or 5614; (3H,3C). II. Even years.

**6704:
ADVANCED TOPICS IN SOFTWARE ENGINEERING **

This course treats a specific advanced topic of current research interest in the area of software engineering. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5704 or 5714; (3H,3C). I. Odd years.

**6724:
ADVANCED TOPICS IN HUMAN-COMPUTER INTERACTION**

Addresses a specific advanced topic of current research interest in the area of human-computer interaction (HCI). Research monographs and papers from the current literature will be used as a source of material too new yet to be in a textbook. Student participation in a seminar-style format. Each offering of this course will address a different subtopic area of HCI. May be repeated for credit. Pre: 5714 or 5724 or 5734; (3H,3C). I.

**6804:
ADVANCED TOPICS IN INTELLIGENT SYSTEMS **

This course treats a specific advanced topic of current research interest in the area of intelligent systems. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. Pre: 5804 or 5814; (3H,3C). I. Odd years.

**7994:
RESEARCH AND DISSERTATION **

Variable credit course.

### Advanced Undergraduate Courses (CS)

The following 4000-level courses may be taken for graduate credit:

**4104:
DATA AND ALGORITHM ANALYSIS**

This course emphasizes the understanding of data structures and algorithms from an analytical perspective rather than from an implementation standpoint. The concepts developed allow discussion of the efficiency of an algorithm and the comparison of two or more algorithms with respect to space and run-time requirements. Analytical methods are used to describe theoretical bounds as well as practical ones. In general, this course addresses the constraints that affect problem solvability. Pre: 2604 and MATH 3134 or MATH 3124. (3H,3C). I.

**4114:
INTRODUCTION TO FORMAL LANGUAGES AND AUTOMATA THEORY**

The course presents a study of formal languages and the correspondence between language classes and the automata that recognize them. Formal definitions of grammars and acceptors, deterministic and nondeterministic systems, grammar ambiguity, finite state and push-down automata, and normal forms will be discussed. Pre: MATH 3134 or MATH 3034. (3H,3C). II.

Theoretical analysis of the computational process; fundamental concepts such as abstract programs, classes of computational machines and their equivalence, recursive function theory, unsolvable problems, Church's thesis, Kleene's theorem, program equivalence, and generability, acceptability, decidability will be covered. Pre: MATH 3134 or MATH 3034. (3H,3C). I.

Hardware and software techniques for the display of graphical information. 2D and 3D geometry and transformations, clipping and windowing, software systems. Interactive graphics, shading, hidden surface elimination, perspective depth. Modeling and realism. Pre: 2604 and MATH 3134 or MATH 3034. (3H,3C). I,II.

Overview of discrete-event digital computer simulation and modeling. Fundamentals of model development, Monte Carlo simulation, the life cycle of a simulation study, input and output data analysis, world views and time control, random number and variate generation, credibility assessment of simulation results, simulation languages, applications of simulation using the General Purpose Simulation System (GPSS). Pre: 1706 and STAT 4714 or 4105 or 4705. (3H,3C). I.

**4224:
PERFORMANCE EVALUATION OF COMPUTER SYSTEMS**

Overview of techniques for measuring, improving, and tuning the performance of computer systems. Procurement, workload characterization, measurement principles, the representation of measurement data, software and hardware monitors, capacity planning, bottleneck detection, system and program tuning, simulation and analytic models and their applications, case studies. Pre: 3204 and STAT 4714 or 4105 or 4705. (3H,3C). II.

**4234:
PARALLEL AND DISTRIBUTED COMPUTATION**

Survey of parallel computer architectures, including interconnection networks and synchronization techniques. Algorithms and programming languages for parallel computers. Applications. Interprocess communications, communication protocols, communication network architectures, and distributed programming interfaces. Performance implications. Pre: 3204. (3H,3C). II.

**4304:
COMPILER DESIGN AND IMPLEMENTATION**

This course includes the theory, the design, and the implementation of a large language translator system. Lexical analysis, syntactic analysis, code generation, and optimization are emphasized. Pre: 3204. (3H,3C). II.

**4504
(EE 4504): COMPUTER ORGANIZATION **

Information representation and transfer; instructions and data access methods; the control unit and microprogramming; memories; input/output and interrupts; secondary storage; the von Neumann SISD organization; high level language machines; the RISC concept; special purpose processors including operating system, file, text, floating point, communication, etc. Multicomputers; multiprocessors; concurrent processing support; Pipeline machines, processor arrays, database machines; the data flow/data directed approach; computer networks. Pre: CS 3204 and EE 2504. (3H,3C). I,II.

**4570
(ECE 4570): Wireless Networks and Mobile Systems **

Multidiscriplinary, project-oriented design course that considers all acpects of wireless and mobile systems including wireless networks and link protocols, mobile networking including support for the Internet Protocol suite, mobile middleware, and mobile applications. Students complete multiple experiments and design projects. Pre: ECE 4564 or CS 4254 (3H, 3C). II.

**4604:
INTRODUCTION TO DATA BASE MANAGEMENT SYSTEMS**

Emphasis on introduction of the basic data base models, corresponding logical and physical data structures, comparisons of models, logical data design, and data base usage. Terminology, historical evolution, relationships, implementation, data base personnel, future trends, applications, performance considerations, data integrity. Pre: 2604 and senior standing with a major or minor in CS. (3H,3C). II.

Introduction to the basic principles of software engineering. Issues in the software life cycle. Emphasis on methods for software design and testing. Project management and quality assurance. Significant software project required. Pre: 3204. (2H,3L,3C). I.

**4804:
INTRODUCTION TO ARTIFICIAL INTELLIGENCE**

Overview of the areas of problem solving, game playing, and computer vision. Search trees and/or graphs, game trees, block world vision, syntactic pattern recognition, object matching, natural language, and robotics. Pre: 2604 and senior standing with a major or minor in CS. (3H,3C). I.