Last Update: 15 May 2007

Note: NEW or UPDATED material is highlighted

The course descriptions listed below were accurate when this Handbook went to press. However, course contents are subject to change, and new courses are added from time to time. In addition, you should be aware that some of these courses are only offered on an irregular basis.

  • 501 Introduction to Graduate Study in Computer Science & Engineering: This course gives necessary information about graduate studies in CSE for incoming students. Registration and attendance are required for all new graduate students. Topics include: academic integrity, the nature of research, good teaching and TA skills, resources available for research, departmental computer systems, relevant departmental, University, and U.S. regulations and forms,and planning an academic program.

  • 503 Computer Science for Non-Majors I: This course introduces students to algorithm design and implementation in a modern, high-level, programming language (currently, Java). It emphasizes problem-solving by abstraction. There will also be a brief coverage of the social and ethical aspects of computing. Topics include data types, variables, expressions, basic imperative programming techniques including assignment, input/output, subprograms, parameters, selection, iteration, Boolean type, and expressions, and the use of aggregate data structures including arrays and records. Students will also have an introduction to the basics of abstract data types and object-oriented design, as well as the mathematics of computer science such as Boolean algebra, basic number theory, etc. May not be counted toward the 30 hours for the M.S. or the 72 hours for the Ph.D.

    Prerequisite: Some previous experience with computers.

  • 504 Computer Science for Non-Majors II: This course is a continuation of CSE 503, in which heavy emphasis is placed on abstract data types (ADTs) and object-oriented methodology, where the student will be expected not only to understand ADTs, but also to design and implement robust ADTs using a modern, object-oriented, programming language. Topics such as encapsulation, polymorphism, templates, and inheritance will be emphasized. Essential topics to be integrated in this framework include the use of recursion; pointers; dynamic memory management; linked structures including linked lists, binary trees, stacks, queues, and other advanced data structures; and algorithms, including advanced searching and sorting algorithms. The analysis of algorithm complexity ("big O" notation) will be introduced. May not be counted toward the 30 hours for the M.S. or the 72 hours for the Ph.D.

    Prerequisite: An introductory computer science course, such as CSE 503 or CSE113, or CSE115, that includes programming in a high-level language such as C++ or Java.

  • 505 Fundamentals of Programming Languages: This course surveys concepts, constructs, and foundations of a variety of programming languages. Main topics are lambda-calculi, type systems, data and procedural abstraction, programming paradigms (object-oriented, functional, and logic), and formal semantics (denotational, operational and axiomatic). Languages of interest include C, C++, Java, Lisp, ML, Smalltalk, and Prolog. Programming projects are designed to deepen understanding of languages. Language-specific details are covered in the recitations which are closely coordinated with the lectures.

    Prerequisite: Graduate standing in Computer Science and Engineering or graduate standing with equivalent background, including working knowledge of a modern high-level language, data structures, recursive programming techniques, and discrete mathematics.

  • 507 Object Oriented Applications and Systems Design (for non-Majors): This course is designed to present to non-CSE graduate students concepts in object-oriented programming, systems, and applications. Major topics include: basic design and programming principles, control and data abstraction, the notion of class and object, software reuse, inheritance and composition, polymorphism, abstract class and virtual functions, component programming, standard libraries, and migratory applications. The course will include case studies of object-oriented applications which may be drawn from a variety of disciplines. All the topics will be supported by practical design and programming projects using object-oriented languages, such as C++ and Java, and also visual environments. This course may not be counted towards the 30 hours for an M.S. in Computer Science or towards the 72 hours for a Ph.D. in Computer Science. (Offered irregularly.)

  • 510 Special Topics: This course is used for newly-designed courses which are being developed by faculty members, usually in a new area of research.

  • The topics and prerequisites will be announced when this course is offered.

  • 512 Operating Systems Internals: This course uses an operating system (such as UNIX) as an example to teach the internal workings of Operating Systems. The material presented is more practical than the other Operating Systems related classes. The laboratory component of this course provides programming projects involving modifications to an operating system kernel (such as UNIX) on computers dedicated to use for this course. Topics covered include building the Operating System kernel, the system call interface, process management, kernel services provided for processes, the I/O system, the internal workings of the file system, device drivers, and the kernel support of Interprocess Communications.

    Prerequisite: CSE421/521 or Permission of Instructor.

  • 515 Introduction to Parallel Computing: General introduction to parallel computing, with an emphasis on different approaches to programming a variety of shared-memory, distributed-memory, SIMD, and MIMD parallel machines. Fundamental issues about parallel architectures, languages, and algorithms are included. The concepts will be supported by programming projects.

    Prerequisite: CSE 505 or equivalent.

  • 516 E-Commerce Technology: The course explains the main technologies that are used to design and implement e-commerce applications. We address a wide variety of both standard and emerging technologies such as: recommender systems, web metrics, data mining for e-commerce, software agents, reputation systems, digital design, cryptography and digital signatures, payment mechanisms, auctions and negotiation, search engines, mobile e-commerce, privacy, and security. (Offered irregularly.)

    Prerequisites: Java programming skills.

  • 519 Object-Oriented Techniques: Object-oriented techniques present a new way of modeling, designing and implementing software program. This course introduces the fundamental concepts of object-oriented: objects, classes, associations, inheritance, data abstraction, encapsulation and visibility. Students will learn to apply the techniques to the entire software development life cycle. The concept will be illustrated by programming projects. (Offered irregularly.)

  • 520 Digital System Design and Analysis: This course studies the fundamental issues in designing and analyzing modern single-processor computer systems, in particular, the design philosophy of RISC vs. CISC, cache architecture and instruction pipelining. Topics include: performance and cost, instruction set design, processor implementation techniques, computer arithmetic, cache memory design, pipelining design and input/output.

  • 521 Introduction to Operating Systems: Concepts of operating systems described in terms of function, structure, and implementation; particular emphasis on multiprogramming. Example concepts are: concurrent programming, virtual memory, scheduling policies for CPU and secondary storage, deadlocks, file systems, and protection. Concepts will be illustrated with examples from existing operating systems.

    Prerequisite: Basic knowledge of assembly-language programming and computer organization.

  • 522 Software Requirements Engineering: Success of the software engineering paradigm is predicated on the development of a quality software requirements document. This course reviews the software life cycle and the role of the software requirements document in the software engineering process. The components of a software requirements document are defined, presented, reviewed and critiqued in class. Students are provided the opportunity to engineer a requirements document for a system defined in class or an actual system required by business, industry or government. (Offered irregularly.)

    Prerequisite: consent of the instructor.

  • 523 Quality Software Design: Production and maintenance of long-term, large-scale programming projects. Topics covered include analysis of software requirements for project specifications, abstraction and modularity in software design, programming style, software reliability and performance evaluation. Students will be required to design, manage and implement a medium-sized project. (Offered irregularly.)

    Prerequisite: knowledge of at least one structured language.

  • 525 Software Testing (Offered irregularly.)

  • 526 Image Processing: Modern computer techniques for processing of images. Topics discussed are related to image data compression for transmission of image data, image restoration and enhancement and image analysis. The course demonstrates the applications of computer techniques in this relatively new field.

  • 527 Modern Computer Systems: Computer system architecture, architecture support of compilers, computing system processor design of memory and peripherals, operating system structures and hardware interfacing. C and assembly language programming on SPARC RISC processors. Standard calling conventions and stack frame usage. Operating system services. Directly programmed interfaces, interrupt services interfaces and data acquisition systems. Custom interface design for a standard bus.

    Prerequisite: CSE341 or CSE380.

  • 530 Computer Communications: An introduction to communication networks for computer and telecommunication applications. Review of stochastic processes and introductory queuing theory. Local area networks (such as Ethernet, Token Ring, and FDDI), wide area networks (such as SNA, and Internet), ISDN and SONET are considered. Focus is on the data link control, network and transport layers of the OSI protocol suite.

  • 531 Analysis of Algorithms: The design and analysis of algorithms. Time and space complexity of algorithms. Big-O notation. Analysis of recursive procedures. Algorithms for solving problems from graph theory, computational geometry. NP-completeness. Approximation algorithms. Parallel algorithms, etc.

    Prerequisite: Data Structures (CSE250), Calculus II, and a course that requires formal proofs.

  • 534 Multimedia Systems: This is an overview course covering the various aspects of Multimedia Systems. Topics include video representation, compression and transmission, multimedia databases, synchronization, multimedia networks and operating systems.

  • 536 Computational Biology: This course is designed for CSE and Bioinformatics graduate students. Computational Biology studies the problems arising from Biology using algorithmic techniques. Typical problems include: sequencing and alignment of DNA and protein sequences; construction and comparison of evolutionary trees. These problems are of central importance in Biology. The course provides insights that will help students gain a comprehensive understanding of computational problems in Biology, and techniques for designing efficient algorithms for solving these problems. Prerequisite: Basic understanding of programming, or molecular biology and genetics.
  • 537 - 538 Introduction to Numerical Analysis I-II: Computer representation of numbers. Computer arithmetic and analysis of rounding errors; real and complex arithmetic. Computer convergence and study of algorithms. Solution of nonlinear equations, iterative methods for the solution of linear systems. Ill-conditioned problems. Elementary approximation theory. Interpolation, quadrature, ordinary and partial differential equations, the eigen problem.

    Prerequisite: 2 years of college mathematics, including linear algebra. Currently only offered when cross-listed with Math 537-538.

  • 539 Software Engineering Tools and Building Blocks: This course addresses the selection of the most effective operating system, computer language tools and software building blocks to be incorporated into a software engineering project. To facilitate this, operating system concepts are reviewed and modern operating systems categorized in terms of functional capabilities. The evolution of computer languages and associated methodologies are analyzed in terms of cost effectiveness, software productivity and quality. Actual software projects are discussed to illustrate application of the concepts to real world situations. The student is required to investigate and report on a modern methodology and/or real world application. (Offered irregularly.)

    Prerequisite: graduate standing in engineering or computer science. Experience in programming with at least one higher-level language such as FORTRAN, C, BASIC, COBOL., etc.

  • 541 Introduction to VLSI Systems: Very-large-scale integration involves the integration of a very large number of components on a single semiconductor chip. This course will introduce the basic concepts involved in the design of digital circuits using electronic switches (FETs), logic design of the various components of a computing system, design methodologies for system design, computer-aided design tools and the algorithms involved in their design. This course is not geared towards the electronics of the fabrication technologies and device physics, but will emphasize the algorithmic aspects relevant to the design of VLSI systems.

    Prerequisite: CSE 590.

  • 542 Software Engineering Concepts: This course introduces the terminology and concepts of software engineering. Following a discussion of how software engineering evolved in response to early practices of the computer industry, the concepts of well-engineered software, the software process and the management process model are presented. Additional topics include software requirements definition, software design, verification and validation, and software management. Graduate students are required to investigate and report on a topic relevant to the course. (Same as ECE 442).

    Prerequisite: experience in writing computer programs in at least one higher level language such as C/C++ and Java.

  • 543 Introduction to Language Processors: Theory, design, and implementation of a translator for a high-level programming language will be discussed. Topics include: lexical analysis, context-free grammars, parsing,LR-parsers, type checking, storage allocation, code generation and optimization, and error recovery; compiler construction tools LEX and YACC. These topics will be supported by programming projects. (Offered irregularly.)

    Prerequisite: A working knowledge of C and a basic knowledge of assembly-language programming and computer organization.

  • 547 High Performance Computing I: The first semester of a two semester course sequence that will introduce students to the fundamental concepts of scientific computing, with particular attention given to algorithms that are well-suited to high performance computer architectures. The first semester will concentrate on computational linear algebra, including iterative and direct methods for solving linear systems and for eigenvalue problems, and the use of BLAS and other public domain libraries.

    Cross listed with COR 501/CE 620/MTH 667/MAE 609/PHY 515.

  • 548 High Performance Computing II: The second semester of a two semester course sequence that will introduce students to the fundamental concepts of scientific computing, with particular attention given to algorithms that are well-suited to high performance computer architectures. The second semester will concentrate on scientific computing in applications, including stochastic methods, FFTs, and finite element and finite difference methods.

    Cross listed with COR 502/CE 621/MTH 668/MAE 610/PHY 516.

  • 551 Program Development and Verification: Introduction to the simultaneous development and verification of correct programs. The first part of the course will contain lectures in formal logic and program semantics. The second part will involve actual examples of program development. The emphasis is theoretical; there is little or no actual running of programs. (Offered irregularly.)

    Prerequisite: Some familiarity with formal logic, preferably including predicate logic.

  • 552 VLSI (Very Large Scale Integration) Testing: A sequel to CSE 497/597, Introduction to VLSI Electronics, the project work for this course includes testing of the chip fabricated in 497/597. Lectures include MOS transistor fundamentals, automatic test pattern generation, design for testability, built-in test techniques, design simulation at switch and gate levels, fault simulation at behavioral levels, software tools and equipment for testing, semi-custom VLSI chips, wafer scale integration, and analog circuit test and diagnosis.

    Prerequisite: CSE497/597 or permission of instructor.

  • 553 Software Development Project Management: Methods for managing technically-oriented software development projects. Topics covered include software organization, cost estimating, scheduling and reporting, configuration management, quality assurance, productivity tools, reviews, audits, testing, and documentation. (Offered irregularly.)

  • 555 Introduction to Pattern Recognition: Foundations of pattern recognition algorithms and machines, including statistical and structural methods. Data structures for pattern representation, feature discovery and selection, classification vs. description, parametric and non-parametric classification, supervised and unsupervised learning, use of contextual evidence, clustering, recognition with strings, and small sample-size problems. programming projects.

  • Prerequisite: 2 years of college mathematics, including probability theory.

  • 560 Data Models and Query Languages: The course focuses on the issues of data models and query languages that are relevant for building present-day database applications. The following topics are addressed: Entity-Relationship data model, relational data model, relational query languages, object data models, constraints and triggers, XML and Web databases, the basics of indexing and query optimization.

    Prerequisite: Java programming skills, knowledge of fundamental data structures and algorithms, knowledge of discrete math concepts.

  • 561 Design and Performance Analysis of Computer Systems: Introduces performance analysis techniques for the application of high performance computer system design. Advanced topics in computer architecture and computer communications are examined via simulation and analytical modeling. Develops mathematical tools based on stochastic processes, discrete mathematics, combinatorics and queuing theory to study the behavior of computer systems.

  • 562 Database Systems: The basic design principles of systems managing very large databases will be discussed. Topics will include: database design, data models, integrity constraints, query languages, database file organization, indexing, query processing and optimization, transaction processing. Students will implement their own prototype database system.

    Prerequisites: Solid background in programming and data structures. Significant programming experience in C, C++, or Java.

  • 563 Knowledge Representation: An introduction to the issues and techniques of representing knowledge and belief in a computer system; syntax and semantics of various representational formalisms including predicate logic, semantic networks, and frames. Classic papers will be read and current research issues discussed.

    Prerequisite: Knowledge of a high-level programming language (such as Lisp) and CSE 305:

    Cross listed with CSE463.

  • 565 Computer Security: This course is intended to give an in-depth understanding of computer system security. Security encomp asses hacker challenges, malicious break-ins and insider threats. Topics include: Basic Encryption and Decryption - Rivest-Shamir-Adelman (RSA) Encryption, El Gamal and Digital Signature Algorithms, Hash Algorithms, Kerberos; Program Security - Virus, Trojan Horse, Malicious Code, Covert Channels; Design of Trusted OS; Network Security - Firewalls, Tripwires; Intrusion Detection - Audit Trail-Based Schemes, Concurrent Intrusion Detection.

    Prerequisite: CSE531; permission of instructor.

  • 567 Computational Linguistics: Introduction to computational models of understanding natural languages. Syntactic and semantic parsing, generation, knowledge-representation techniques.

    Prerequisite: Knowledge of a high-level programming language (such as Lisp) and CSE 305:

    Cross listed with CSE467.

  • 573 Introduction to Computer Vision and Image Processing: This course is an introduction to those areas of Artificial Intelligence that deal with fundamental issues and techniques of computer vision and image processing. The emphasis is on physical, mathematical, and information-processing aspects of the vision. Topics to be covered include image formation, edge detection and segmentation, convolution, image enhancement techniques, extraction of features such as color, texture, and shape, object detection, 3-D vision, and computer vision system architectures and applications.

    Prerequisite: CSE 305 or permission of instructor. Cross listed with CSE 473.

  • 574 Introduction to Machine Learning: Involves teaching computer programs to improve their performance through guided training and unguided experience. Takes both symbolic and numerical approaches. Topics include concept learning, decision trees, neural nets, latent variable models, probabilistic inference, time series models, Bayesian learning, sampling methods, computational learning theory, support vector machines, and reinforcement learning.

    Prerequisite: CSE 250 and any of EAS 305/308, STA 401/421, MTH 309; or permission of instructor.

  • 575 Introduction to Cognitive Science: An introduction to cognitive science, an interdisciplinary approach to the computational study of human cognition. Methodology, assumptions, and research problems of cognitive science and such cognitive-science disciplines as anthropology, artificial intelligence, linguistics, neurosciences, philosophy, psychology, etc. Emphasis will be placed on joint efforts of these disciplines in investigating issues in the nature of the mind, intelligence, language, perception, memory, etc. Students will be encouraged to participate in colloquia sponsored by the Center for Cognitive Science.

    Prerequisite: permission of instructor. Cross listed with APY526, CDS575, LIN 575, PHI575, PSY575.

  • 576 Fault Diagnosis: An introduction to modeling of digital computer reliability, availability and maintainability. Fault diagnosis and detection of combinational and sequential logic circuits. Totally self-checking checkers. Design for testability. Random testing and compressed data testing. Techniques for system level fault diagnosis.

    Prerequisite: ECE 476 or permission of instructor.

  • 586 Large-scale Distributed Systems: This course addresses some of the fundamental challenges in the design, implementation and deployment of large scale distributed systems including connection establishment, event handling, interprocess communication, storage management, static and dynamic component configuration, concurrency and synchronization. It will also cover issues related to distributed objects such as mobility, security, naming, location, evolution, autonomy and negotiations. Possible solutions will be analyzed and expressed using objects, processes, services, components and frameworks at various levels of granularity. This course focuses on practical solutions using the latest server-side and middleware technology.

    Prerequisites: CSE505/CSE305 or equivalent; Good foundation in problem solving, design representation, and object-oriented design methodology and application.

  • 588 Pattern Recognition and Scene Analysis: Statistical pattern recognition: Bayes decision theory, parameter estimation, non-parametric techniques, linear discriminant functions, and clustering. Syntactic pattern recognition. Neural networks. Applications of pattern recognition to remote sensing, seismic wave interpretation, visual inspection, medical data analysis, and character and speech recognition.

    Prerequisite: graduate standing.

  • 589 Modern Networking Concepts: This course introduces basic elements of modern computer and telecommunication networks. a hybrid five-layer reference model resembling the popular TCP/IP model and the OSI's seven- layer model will be discussed. In each layer, the state-of-the-art hardware and software technologies are introduced. These include, for example, fiber-optic and mobile/cellular communications in the physical layer; wavelength/time division multiple access protocols in the data link layer; traffic shaping and policing in the network layer; ATM adaptation layer protocols in the transport layer, and finally, network security and multimedia communications in the application layer.

    Prerequisite: CSE/MTH 192, CSE 250, and CSE 341.

  • 590 Computer Architecture: This course will provide an in-depth understanding of the inner workings of modern digital computer systems and trade-offs present at the hardware-software interface. Topics include: computer abstractions and technology, cost and performance analysis, instruction set architecture, computer arithmetic, datapath and controller design, pipelining, memory systems, input-output systems, and interrupts and exceptions. Projects requiring the use of software tools like the SPIM simulator for MIPS R2000/R3000 RISC processors and the Verilog hardware description language will be given to help crystallize concepts presented in class.

    Prerequisite: Introductory digital logic design.

  • 593 Introduction to VLSI Electronics: Very large scale integration (VLSI) design principles, CMOS gates, layout, simulation, CAD tools, semi-custom integrated circuit chip design, project required.

    Prerequisite: permission of instructor. Cross-listed with CSE493.

  • 596 Introduction to the Theory of Computation: Turing machines, RAMs, decidable and computably enumerable sets, partial computable functions; Church-Turing thesis; undecidable problems, diagonalization, Recursion Theorem, Rice's Theorem, Kleene Normal Form Theorem. Time and space complexity bounds, complexity classes, Savitch's Theorem, NL = coNL. NP-completeness, Cook-Levin Theorem, polynomial hierarchy, complete problems for other complexity classes.

    Prerequisite: Discrete mathematics and/or courses in mathematics that involve proofs of theorems. Undergraduate course in finite automata theory is recommended.

  • 598 Graduate Internship: For use by graduate students requiring academic credit for practical training.

  • 600 Project Guidance: MS degree project guidance. Credit Hours: 0-3.

    Prerequisites: permission of instructor.

  • 601 Data Mining and Bioinformatics: This course focuses on data mining and data warehousing techniques and their applications in bioinformatics. The course explains the broad scope of bioinformatics, discusses the theory and practice of computational methods and software, and provides insight that will help students gain a comprehensive understanding of the bioinformatics field. Major topics include biological data storage, retrieval, and modeling; data mining literature for biology; distributed and parallel biological databases; visualization tools for biological data analysis; statistical methods for gene expression analysis; molecular sequence analysis; protein-protein interaction analysis; identification and classification of genes and regulatory elements; and biological information integration, interoperability, and bio-ontology.
  • 603 Parallel & Distributed Processing: This course is meant for anyone interested in the design and use of advanced computer systems of today and the future. The course will cover principles of modern parallel and distributed systems embodied in several current systems. There will be programming assignments involving the use of these parallel systems for application problem solving using one or more parallel programming environments (PVM, MPI, Java). Course coverage includes: introduction to parallel computing, basic communication operations, performance and scalability analysis of parallel systems, parallel algorithms for dense matrix computations, sorting, and searching, load balancing, applications of parallel processing in different application domains, architectures of shared-memory multiprocessors and scalable multiprocessors, interconnection network design, and fault tolerance in parallel systems.

    Prerequisite: Introductory computer architecture and algorithms knowledge useful.

  • 604 Fault Tolerant Computing: Basic frameworks of fault tolerance, dynamic and hybrid redundancy. Practical fault tolerant systems. Intermittent fault models, concurrent testing, built-in testing, recovery block scheme and rollback recovery. Fault tolerant multiprocessors. Performance evaluation of fault tolerant systems.

    Prerequisite: graduate standing and permission of instructor.

  • 605 Advanced Concepts in Programming Languages: This course will discuss advanced concepts in the design and implementation of programming languages. It is the second in a two-course graduate-level sequence on programming languages - the first being CSE 505. Advanced language concepts will be drawn from type systems, object-oriented, functional, and logic programming languages. the course will also cover integration of two or more programming paradigms as well as implementation issues underlying these paradigms. In-depth understanding of these concepts will be gained through programming projects.

    Prerequisite: CSE 505 or equivalent.

  • 606 Parallel Architecture: The organization of parallel computer systems. Different parallel architectures, such as SIMD and MIMD parallel computers, shared-memory and distributed-memory computers, as well as dataflow architectures, will be discussed. Concepts will be illustrated by discussing some existing systems.

    Prerequisite: CSE 590 or equivalent, CSE 515.

  • 616 Multiagent Systems: Multiagent systems is the study, construction, and application of systems in which several interacting software (or software and human) agents pursue some set of goals or some set of tasks. The course covers agent architectures; multiagent problem-solving and planning; multiagent commuication; multiagent search, multiagent learning; reasoning about actions, plans, beliefs and knowledge; coordination; cooperation and competition; teamwork; and multiagent decision-making. Application examples are presented in e-commerce, scheduling, robotics, control, information retrieval, manufacturing and logistics. (Offered irregularly.) Prerequisite: Introductory 500 level AI course.

  • 620 Advanced Network Concepts:

  • 622 Computer Systems Theory: Theoretical results in performance evaluation of computer systems introduced through synthetic and analytic models of system structure; techniques for verifying properties of concurrent processes; issues in multiprogramming operating system mechanism such as naming and binding, protection, reliability, and recovery.

    Prerequisite: CSE 590 and CSE 521.

  • 626 Data Mining: Introduction to data mining and knowledge discovery in databases: the identification of valid, novel, potentially useful, and ultimately understandable patterns in large data repositories. Studies its principles, algorithms, implementations, and applications. (Offered irregularly.)

    Prerequisite: CSE 562.

  • 632 Analysis of Algorithms II: This course is a continuation of CSE 531. Algorithms for solving problems in graph theory, computational geometry; approximation algorithms etc.

    Prerequisite: CSE 531.

  • 633 Parallel Algorithms: The design and analysis of parallel algorithms. Time and space complexity of problems from graph theory, computational geometry, combinatorial algorithms, and image processing. Models of computation include pram, mesh, pyramid, mesh-of-trees, hypercube, etc.

    Prerequisite: CSE 531 and CSE 590.

  • 634 Advanced Topics in Multimedia Systems: An introduction to 3D imaging and graphics, image understanding paradigms, mathematical morphology, object representation and manipulation techniques using hierarchical and heterarchical representations. Specialized architectures for 3D image processing.

    Prerequisite: permission of instructor.

  • 635 Multimedia Information Retrieval: This course will cover both traditional, text-based information retrieval (IR) techniques, as well as newer techniques for multimedia information retrieval. Although text-based IR is a well-established field, the area of multimedia IR is an emerging discipline. Techniques for automatically analyzing/extracting content from other modalities such as images, video and speech will be explored. In each case, we will discuss content-analysis techniques as well as indexing and retrieval techniques will be examined. Various case studies will be presented. The latter part of the course will focus on techniques for combining information obtained from various media sources in both the indexing and retrieval stages. This includes multimodal query formulation/ decomposition, relevance judgment/feedback, evaluation techniques, as well as convenient user interfaces for multimedia querying.

    Prerequisite: basic college mathematics (calculus, linear algebra, etc.). a graduate-level course in Artificial Intelligence; preliminary image processing and/or computer vision knowledge (e.g. edge detection, pixel grouping, etc.), and NLP basics (e.g., syntax, semantics) would be helpful, but not essential.

  • 636 Data Integration: This course surveys selected theoretical and practical issues arising in data integration. Data integration has been recognized as a research topic of great practical importance. The availability of integrated data from multiple, independent, heterogenous, data sources is crucial for many applications. Data integration requires combining and matching information in different sources and resolving a variety of conflicts. XML is becoming a de facto data-integration standard. With the number of data sources growing very quickly, data integration is bound to become even more important in the future.

    Prerequisite: CSE 562 or equivalent.

  • 641 Algorithmic Aspects of VLSI: Algorithms for a variety of computational problems that arise in the physical design, synthesis, and logic design, simulation, and testing of very large scale integrated (VLSI) circuits will be discussed. These algorithms are used in the design of computer aided design (CAD) tools for VLSI circuits.

    Prerequisite: CSE 531 or permission of the instructor.

  • 642 Techniques of Artificial Intelligence: A second graduate course in AI covering programming techniques for AI and surveying AI topics not covered in other graduate-level courses. Topics will vary according to instructor and student interests. (Offered irregularly.)

    Prerequisite: Depends on the topic; typically CSE 563 or 567 or 573 or 574.

  • 643 Parallel Compilers: Implementation of programming languages on parallel machines: programming constructs for implicit and explicit parallelism, dependency analysis, partitioning, optimization, and code generation for parallel machines.

    Prerequisite: CSE 515 and CSE 543.

  • 646 Computer Networks: In Part I, we will discuss issues in point-to-point communication where the communicating devices are directly connected. In Part II, we assume that the communicating devices may or may not be directly connected and are part of a network of devices. We will discuss architectural issues in this context, as well as issues pertaining to routing data, congestion control, communication protocols involved, etc. In Part III, we assume that application programs running on various devices are communicating among themselves. Protocol design and architectural issues will be the primary focus of this part. (Offered irregularly.)

  • 651 Semantics of Programming Languages: This is an advanced course in the semantics of programming languages and the mathematical theory of program correctness. Various program semantics, notably operational and denotational, are studied and compared. Then formal systems for a number of programming languages are studied and, on the basis of the semantics, their soundness and completeness proved. (Offered irregularly.)

    Prerequisite: CSE 551 or a strong background in mathematics, including some formal logic.

  • 655 Introduction to Pattern Recognition: Foundations of pattern recognition algorithms and machines, including statistical and structural methods. Data structures for pattern representation, feature discovery and selection, classification vs. description, parametric and non-parametric classification, supervised and unsupervised learning, the use of contextual evidence, clustering, and small sample-size problems. Programming projects will include handling of pictorial and textual patterns.

    Prerequisite: 2 years of college mathematics, including probability theory.

  • 661 Document Analysis and Recognition: Application of techniques of pattern recognition, image analysis and natural-language understanding to the task of automatic reading of text. Topics: Reading theories, segmentation of text, character and word recognition, string matching. Some examples of concentration areas: machine-printed document analysis, recognition of off-line (previously recorded) text on paper.

    Prerequisite: CSE 572 and CSE 655, or permission of instructor.

  • 663 Advanced Topics in Knowledge Representation: A second graduate course in knowledge representation and reasoning covering such topics as automated theorem proving, semantic network implementation, etc., and surveying knowledge representation and reasoning topics not covered in other graduate-level courses. Topics will vary according to instructor and student interests.

    Prerequisites: CSE563 or CSE572 or CSE/LIN 567 or permission of instructor; graduate standing.

  • 666 Introduction to Image Analysis: Survey of techniques for computer processing and analysis of images produced by modern scanning devices. Representation of 2- and 3-dimensional images, orthogonal transformations, boundary detection, segmentation, computational geometry and topology, shape characterization, time-varying images, description of spatial organization. Topics will be illustrated by programming projects in computer vision and computed tomography.

    Prerequisite: Linear algebra. CSE 655 will be helpful.

  • 667 Advanced Topics in Computational Linguistics: A second graduate course in computational linguistics covering such topics as parsing, computational semantics, discourse processing, etc., and surveying computational-linguistics topics not covered in other graduate-level courses. Topics will vary according to instructor and student interests.

    Prerequisites: CSE/LIN 567 or permission of instructor; graduate standing.

  • 668 Animate Vision Principles for 3D Image Sequences: Conventional approaches to computer vision based on complete reconstruction of the contents of arbitrary single images have met with limited success. More recently, elements of biological vision systems such as goal-directed sensing behaviors, reliance on image sequences and motion, and the importance of stereopsis have been applied to machine vision systems with considerable success. In this course the design of computer vision systems in light of animate vision principles is developed.

    Prerequisite: CSE573 Introduction to Computer Vision and Image Processing.

  • 673 Computational Vision: Examines the task of making computers ``see,'' including: image formation, low-level processes for extracting the basic properties of images, image analysis, computational theories of human/machine perception, geometric reconstruction, scene analysis, and model-based vision systems.

    Prerequisite: None (CSE 573 is not required).

  • 674 Computer Learning and Human Information Processing: Techniques of computer learning programs. Perception, the human visual and auditory systems, neural information processing, pattern recognition and attention, memory, representation of knowledge, language, learning and cognitive development, problem solving and decision making, and the processes of thought. (Offered irregularly.)

    Prerequisite: CSE 574.

  • UPDATED course number:
    680 Computational Geometry: This course introduces students to the essentials of Computational Geometry and presents an in-depth study of the fundamental techniques used in this field. Topics to be covered include geometric searching, convex hulls, proximity computations, intersections, graph drawing, and other special topics. Applications to problems from other fields such as Computer Graphics, Computer Vision, Software Engineering, Databases, Robotics, and Geographical Information Systems will also be discussed. (Formerly, CSE 581.)

    Prerequisite: UPDATED CSE 531, or instructor's permission

  • 681 - 682 Formal Languages I-II: Languages and their representation; regular, context-free, context-sensitive, and type-0 grammars; characterization by automata used as recognizers; complexity issues in formal languages; decision problems; LR(k) grammars; biologically motivated formal language theory. (Offered irregularly.)

    Prerequisite: CSE 596.

  • 691 Advanced VLSI Design: Advanced techniques in VLSI design, design for performance, physical design automation, synthesis, analog and mixed-mode design techniques, field programmable gate arrays, technology and architectural issues in VLSI, special purpose VLSI design.

    Prerequisite: CSE 497/597 or equivalent.

  • UPDATED course number:
    694 Graph and Combinatorial Algorithms: Basic topics in graph and combinatorial theory. Design and analysis of serial and parallel algorithms in these areas. Enumeration, generating functions, inclusion-exclusion partitions, connectivity and distance, planarity, sorting, tree construction and searching, network flow matching problems, NP-completeness, etc. (Formerly, CSE 594.)

    Prerequisite: CSE 531.

  • 695 Theory of Computation: Models of computation, basic recursive function theory, general computational complexity theory, models of feasible computation, exponentially and super-exponentially difficult problems, complete problems including NP-complete problems, polynomial time reduction of problems. (Offered irregularly.)

    Prerequisite: CSE 596.

  • 696 Computational Complexity: Modes of computation; complexity classes and complexity measures; compression, speedup, relations between standard classes, hierarchy results; nondeterminism and NP-completeness; relative computability, polynomial hierarchy, NP-hardness; parallel and circuit complexity; probabilistic complexity.

    Prerequisite: CSE 596.

  • 697 - 698 Recursive Function Theory I-II: Models of algorithms, universal programming systems, abstract program structure, algorithmic unsolvability, recursively enumerable sets (creative, simple, hypersimple, maximal), reducibility and degrees of unsolvability, Post's Problem, arithmetical hierarchy, limiting recursion, recursive operators, recursion theorems and self-reference in machines, priority arguments, abstract dynamic complexity measures, ordinary and operator speed-up theorems, union and honesty theorems, abstract program size measures, tradeoffs between complexity and size of programs, subrecursive programming systems, learning and inductive inference machines, research topics.

    Prerequisite: CSE 596 or permission of the instructor.

  • 699 Supervised Teaching: May not be counted toward the 30 hours for the M.S. or the 72 hours for the Ph.D.

    Prerequisite: Assignment as Teaching Assistant.

  • 700 Independent Study (1-3 credits):

    Prerequisite: Permission of instructor.

  • 701 - 798 Computer Science Seminars:

    Prerequisite: Permission of instructor.

  • 799 Supervised Research (1-3 credits):

    Prerequisite: Permission of instructor.

  • 800 Thesis Guidance (1-12 credits):

    Prerequisite: Permission of instructor.

Send comments: webmaster@cse.Buffalo.EDU