CSE Home >
The CSE graduate program has offered these courses over the last five years. Many courses are offered every year, but some are offered irregularly. Click the "More »" links to see more details and histories of course offerings.
Introduces computers and applications software. Areas of study include computers and their societal impact; history; hardware; problem solving; buying computers and software; and application packages, such as word processing, spreadsheets, and database systems. Admitted computer science and computer engineering majors should not enroll in this course.
Undergraduate Catalog Page
Designed to satisfy the mathematics core requirements. Students study algorithmic problem-solving techniques and gain an appreciation for some of the most interesting and significant results of computer science, as well as its intellectual and social significance. The course has both a mathematical and a laboratory component. Topics may include algorithm design, introduction to programming, structured programming, software tools, software engineering, text manipulation, numerical computation, transistors, very large-scale integrated circuits, machine architecture, language translation, operating systems, and artificial intelligence. Admitted computer science and computer engineering majors should not enroll in this course sequence.
Introduction to computers and computer programming intended for nonmajors. Currently required for some School of Management majors and appropriate for others seeking a practical introduction to computer programming. Topics include the use of data types and variables, programming control constructs supported by modern languages, input/output, basic concepts of object-oriented programming (such as classes, objects, encapsulation, information hiding, and code reuse), as well as graphical user interfaces. No previous computer experience assumed. Not suitable for intended computer science or computer engineering majors except those who have absolutely no experience using a computer. Admitted computer science and computer engineering students should not take this course.
Provides the fundamentals of the field to computer science and computer engineering majors, introducing students to algorithm design and implementation in a modern, high-level programming language. Emphasizes problem solving by abstraction. Topics include object-oriented design using a formal modeling language; fundamental object-oriented principles such as classes, objects, interfaces, inheritance and polymorphism; simple event-driven programming; data types; variables; expressions; basic imperative programming techniques, including assignment, input/output, subprograms, parameters, sequencing, selection and iteration; the use of aggregate data structures, such as arrays or more general collections; simple design patterns.
Continuation of CSE 115. Heavily emphasizes abstract data types (ADTs) and object-oriented methodology, and expects students not only to understand ADTs but also to design and implement robust ADTs using a modern object-oriented programming language. Further emphasizes object-oriented techniques, which support sound software engineering, such as encapsulation, polymorphism and inheritance as well as the use of more complex design patterns. Essential topics integrated in this framework include the use of recursion; linked data structures, including lists, stacks, queues, binary trees, and other advanced data structures; and algorithms for searching and sorting; exceptions and exception handling, event-driven programming. Introduces the analysis of algorithm complexity (0-notation).
Foundational material for further studies in computer science. Topics include logic, proofs, sets, functions, relations, recursion, recurrence relations, mathematical induction, graphs, trees, and some basic counting theory. CSE 191 is required for computer science and computer engineering majors.
A course in digital principles which includes an introduction to machine dependent programming. Topics covered include: fundamentals of digital logic, computer arithmetic & Boolean algebra, minimization techniques, basic components of digital circuits such as logic gates and flip-flops, information representation, design of combinational and sequential circuits, memory devices and programmable logic devices, CPU organization, arithmetic logic unit and control unit design, assembly language programming.
Course description is currently unavailable.
Provides a rigorous analysis of the design, implementation, and properties of advanced data structures. Topics include order notation and time-space analysis and tradeoffs in a list, tree and graph algorithms, and hashing. Surveys library implementations of basic data structures in a high-level language. Advanced data structure implementations are studied in detail. Illustrates the importance of choosing appropriate data structures when solving a problem by programming projects in a high-level language different from the language of CSE 115 and CSE 116; also covers instruction in this language. CSE 191 may also be used as a corequisite.
Examines the various components of programming languages so students will understand the choices that have been made by programming language designers, and how those choices affect how procedures may be expressed and how data are conceptualized. Topics generally include the nature of variables, types, expressions, control structures, subprograms, concurrency, and exceptions; syntax and semantics. Discusses different programming paradigms, such as imperative, functional, logic, procedural and object-oriented.
Addresses some of the fundamental challenges in the design, implementation, and validation of these real-time and embedded systems. Topics include resource management, concurrency, secure coding practices, memory management, timeline design and analysis using metrics and schedulability tests, hardware interfacing, device driver programming, memory maps and boot kernels, firmware and ROM-resident system code, communications and networking, and debugging live systems. These concepts will be reinforced through C programming assignments using the RTLinux operating system.
Introduces methods for algorithm design, paradigms such as divide and conquer, greedy, and dynamic programming, and techniques for algorithm analysis, such as asymptotic notations, estimates and recursions. Topics include sorting, searching, scheduling, string matching, graph algorithms, computational geometry, and more.
Basic hardware and software issues of computer organization. Topics include computer abstractions and technology, performance evaluation, instruction set architecture, arithmetic logic unit design, advanced computer arithmetic, datapath and control unit design, pipelining, memory hierarchy, input-output.
Microprocessor architecture, machine language programming, microprocessor assemblers, assembly language programming, software development, memory and I/O interface, interrupts, microprocessor system design and microprocessor applications.
A microprocessor system and its application in embedded devices. This course is the laboratory component to CSE 379. Topics include: microprocessor architecture; memory organization; assembly language programming; microprocessor assemblers; software development; use of microprocessor boards; memory and I/O interfaces; programming peripherals; interrupt system programming; microprocessor system design and applications.
Covers machine models and formal specifications of the classes of computational problems they can solve. The central concepts are the Turing machine and the classes of decidable and computably enumerable languages. The Halting Problem and other natural problems are shown to be undecidable by Turing machines, implying that they are undecidable by high-level programming languages or any other known computational model. Finite automata, which are Turing machines without external memory, are shown to correspond to the class of regular languages. The course also covers regular expressions, time and space complexity of Turing machines, reducibility between problems, and NP-completeness.
Teaches how to administer a network of computer workstations using an Operating System such as UNIX. Topics include managing user accounts, system backups, installing and configuring the operating system, setting up a computer network, shell programming, and computer security.
Covers the principles and techniques in the design of operating systems. Describes concepts of operating systems in terms of functions, structure, and implementation, particularly emphasizing multiprogramming. Topics include process coordination, deadlocks, memory management, device management, file systems, scheduling policies for CPU, and network and distributed operating systems. Illustrates concepts with examples from existing operating systems.
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.
Introduces basic elements of the design and analysis of algorithms. Topics include asymptotic notations and analysis, divide and conquer, greedy algorithms, dynamic programming, fundamental graph algorithms, NP-completeness, approximation algorithms, and network flows. For each topic, beside in-depth coverage, we discuss one or more representative problems and their algorithms. In addition to the design and analysis of algorithms, students are expected to gain substantial discrete mathematics problem solving skills essential for computer scientists and engineers.
This course will focus on text-based information retrieval (IR) techniques, more popularly known as search engines. Various IR models such as the Boolean model, vector space model, probabilistic model will be studied. Efficient indexing techniques for large document collections as well as specialized collections will be examined. Various query expansion techniques such as local context analysis will be introduced. Finally, the course will also discuss search engines for the web, and the use of link analysis to determine document/page relevance. Students will work on written assignments, as well as hands-on programming projects to gain expertise in this area.
Examines in detail the software development process. Topics include software life-cycle models; architectural and design approaches; various techniques for systematic software testing; coding and documentation strategies; project management; customer relations; the social, ethical, and legal aspects of computing; and the impact of economic, environmental, safety, manufacturability, and sustainability factors on design. Students in this course participate in a real-world project from conception to implementation.
Software designs produced in the prerequisite CSE 442 Software Engineering course are carried here to a complete hardware realization. Bringing skills learned from previous hardware and software-oriented courses, students form multidisciplinary workgroups and are given tools, parts, goals, and constraints, all of which define the integrated design setting. These workgroups identify, formulate, and solve the hardware and software problems posed by their project, and defend their realization concepts at key intervals during the project build-out. Projects are tested, and a report analyzing the level of satisfaction of design and performance specifications submitted. Each group prepares a "rollout" presentation, which includes a demonstration of their project in operation. This is a required course for CEN majors.
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.
Discusses basic concepts of modern database management systems. Topics include: data models, query languages, database design, integrity constraints, indexing, query evaluation, and transaction management. Students implement small projects using modern DBMS.
Introduces the field of knowledge representation and reasoning, the branch of artificial intelligence concerned with the techniques for representing and reasoning about the information to be used by an AI program. Topics typically include: the knowledge-representation hypothesis; propositional and first-order logic; model finding; resolution; syntactic proof theory; direct and refutation methods; relevance logic; truth maintenance and belief revision; commonsense reasoning; ontologies. Other topics that may be included as time permits are: modal logics; non-monotonic, defeasible, and default logics; logics of knowledge and belief; frames; description logics; vague and uncertain beliefs; logics of actions and time.
Introduces computational models for understanding natural languages. Covers topics including, but not limited to, syntactic and semantic parsing, generation, and knowledge representation techniques. Cross-listed with LIN 467.
Introduces those areas of artificial intelligence that relate to fundamental issues and techniques of computer vision and image processing. Emphasizes physical, mathematical, and image-processing aspects of vision. Topics include image formation, edge detection, segmentation, convolution, image-enhancement techniques, extraction of features (such as color, texture, and shape), object detection, 3-D vision, and computer system architectures and applications.
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.
Introduces philosophical issues in computer science. Examines the nature of computer science (e.g., whether it is a science or a branch of engineering, whether it is the study of physical computers or abstract computing); the nature of computation, algorithms, and software, and their implementation in computer programs; the nature of computer programs (e.g., whether they are theories, models, or simulations; whether they can or should be patented or copyrighted; whether they can be verified). Also briefly explores the philosophy of artificial intelligence and issues in computer ethics. Offered irregularly. Cross listed with PHI 484.
Addresses some of the fundamental challenges in the design, implementation and deployment of large-scale distributed systems. Concepts covered include concurrency, synchronization, connection establishment, event handling, inter process communication, storage management, and service registration, discovery, and lookup. Also covers issues related to distributed objects such as life cycle management, mobility, security, naming, location, evolution, and autonomy. Analyses and implements possible solutions using objects, processes, services, components and frameworks. Offered irregularly.
Overview of information technology in large-scale commercial and scientific systems, emphasizing state of the art computing in realizing various services and the frameworks supporting these services. Concepts covered include: enterprise modeling, process modeling, process automation and streamlining, workflow management, messaging, persistent message queues, transaction monitoring, document exchange, application servers, service definition (web services, web services definition language: WSDL), connection and resource reservation protocols (TCP, grid computing), integration technologies and architectures (Java 2 Enterprise Edition: J2EE, extensible Markup Language: XML, and Globus toolkit).
Introduces basic elements of modern computer and telecommunications networks. Discusses a hybrid five-layer reference model resembling the popular TCP/IP model. In each layer, the course introduces the state-of-the-art hardware and software technologies. These include, for example, fiber-optic and wireless/mobile/cellular communications at the physical layer, to network security in the application layer. Offered once a year.
Examines system architecture with 32- and 64-bit microprocessors. Topics include the design of high-performance computer systems, such as workstations and multiprocessor systems using recent advanced microprocessor. Considers the internal architecture of recent microprocessors, followed by vector processing, memory hierarchy design, and communication subsystems for I/O and interprocessor communication.
Introduces VLSI electronics. VLSI is the integration of a large number of logic gates on a single semiconductor chip. Applications of VLSI include memory, microprocessors, and signal processing. Topics include digital system design; VLSI systems; CMOS circuits; use of CAD tools in the layout of full-custom and semi-custom integrated circuits. Project required. Emphasizes designing a working chip and understanding various steps in design. Typical projects: ALU, games, controllers.
This course gives necessary information about graduate studies in CSE for incoming Ph.D. students. Registration and attendance are required for all new Ph.D. students. Topics include: academic integrity, the nature of research, good teaching and TA skills, resources available for graduate study in computer science.
MS students should not take CSE 501.
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.
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.
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.
This course is used for newly-designed courses which are being developed by faculty members, usually in a new area of research.
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.
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.
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.)
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.
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.
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.
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.
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).
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.)
Error correcting codes (or just codes) are systematic ways of introducing redundancy into data so that the original information can be recovered even when the data is corrupted. Codes are used ubiquitously in communication systems and data storage. The study of error correcting codes (or coding theory) started with the seminal works of Shannon and Hamming in the late 1940s and has been an active cross-disciplinary research area since then. This course will discuss the theoretical aspects of codes and will focus mostly on the worst-case noise model pioneered by Hamming. However, we will discuss quite a few results on the stochastic noise model pioneered by Shannon. The course will roughly cover three parts: (i) combinatorial aspects of codes, i.e. the limit of what can and cannot be achieved with codes; (ii) computationally efficient algorithms for using codes; and (ii) application of codes in theoretical computer science. Major developments in coding theory since the 1990s will be emphasized.
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.
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.
Introduction to relevant topics and concepts in visualization, including computer graphics, visual data representation, physical and human vision models, numerical representation of knowledge and concept, animation techniques, pattern analysis, and computational methods. Tools and techniques for practical visualization. Elements of related fields including computer graphics, human perception, computer vision, imaging science, multimedia, human‐computer interaction, computational science, and information theory. Covers examples from a variety of scientific, medical, interactive multimedia, and artistic applications. Hands‐on exercises and projects.
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.
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 one or more modules of a prototype database system.
This course is an introduction to the issues and techniques of representing knowledge and belief in a computer system. Of course, a representation is useless unless it can be used for some purpose. The main purpose of items of knowledge and belief is reasoning about and with them. Thus, the field is often called "Knowledge Representation and Reasoning", or "KRR". It is our belief that formal logic provides the basic foundation to KRR. So this course may be considered a course in computational logic. However, there are many systems of logic. The most well-known logics were designed to form the foundations of mathematics, rather than the foundations of human-like representation and reasoning. So this course examines several systems of logic, how they are defined, how reasoning procedures can be implemented for them, and how they can be used for human-like reasoning problems. This course provides a basic grounding in KRR for people interested in: Artificial Intelligence; Cognitive Science; Computational Linguistics; Database Systems; Logic Programming; Philosophy of Mind and of Language; and applications areas that employ formal representations of ontologies.
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.
Wireless networking has become increasingly popular these days. Wireless networks have adopted many security mechanisms from the wired world. But wireless networks face larger amount of inherent limitations than the wired world. Threats like intercepting and unauthorized access to wireless traffic are common. More mature solutions to the security problems demand the need of understanding the current technologies and the security flaws. This course covers the basics of wireless networks security from both modes of operation -- the infrastructure mode and the ad hoc mode.
Introduction to computational models of understanding natural languages. Syntactic and semantic parsing, generation, knowledge-representation techniques.
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.
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.
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.
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.
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.
Very large scale integration (VLSI) design principles, CMOS gates, layout, simulation, CAD tools, semi-custom integrated circuit chip design, project required.
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.
For use by graduate students requiring academic credit for practical training.
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.
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.
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.
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.
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.)
This course is a continuation of CSE 531. Algorithms for solving problems in graph theory, computational geometry; approximation algorithms etc.
The course will focus on the design, implementation, and analysis of a parallel solution to an interesting problem on a state-of-the-art high-end computing system. The students will learn how to program contemporary shared-memory, distributed-memory, and GPGPU-based high-end computing systems. The course will also cover the design and analysis of fundamental parallel algorithms. Time and space complexity of solutions to problems from areas that include computational geometry, image analysis, and graph theory will be considered. Architectures include the PRAM, mesh, pyramid, mesh-of-trees, and hypercube.
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.
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.
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.)
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.)
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.
As a crucial part of computer security, cryptography has become increasingly important. However, due to the mathematically complex nature of cryptography, misunderstandings, misuses, and abuses of cryptographic techniques are very common. There is a huge gap between the theory of cryptography and its application. In this course, we study cryptography in a rigorous manner. Our focus is correct application of cryptographic techniques in practical scenarios, rather than the mathematical foundations of these techniques. We stress careful design and analysis of secure systems using existing building blocks. Topics to be covered include private communications (DES, AES, ECB, CBC, RSA, Rabin), identification and authentication techniques (passwords, certificates, SSH, Kerberos), secure protocols (digital cash, Internet auction, electronic voting).
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.
This course aims to provide students with an overview of the key areas which make up the field called Computational Linguistics, an understanding of the major challenges of the field as well as the major application areas for language processing techniques, and the skills to implement fundamental language processing algorithms.
This course expands upon the content covered in CSE/LIN 567.
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.
The course takes an in-depth look at various Bayesian methods in computer and medical vision. Through the language of Bayesian inference, the course will present a coherent view of the approaches to various key problems such as detecting objects in images, segmenting object boundaries, and recognizing objects. The course is roughly partitioned into two halves: modeling and inference. In the first half, it will cover both classical models such as weak membrane models and Markov random fields as well as more recent models such as conditional random fields, latent Dirichlet allocation, and topic models. In the second half, it will focus on inference algorithms. Methods include PDE boundary evolution algorithms such as region competition, discrete optimization methods such as graph-cuts and graph-shifts, and stochastic optimization methods such as data-driven Markov chain Monte Carlo. An emphasis will be placed on both the theoretical aspects of this field as well as the practical application of the models and inference algorithms.
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.
Machine Learning techniques are a systematic approach to designing information processing systems, such as those for classification and regression, wherein significant uncertainty exists in the data. In the machine learning approach, input-output relationships are learnt from representative samples. This course will build upon basic techniques covered in the pre-requisite courses and cover advanced topics to include: graphical models (including Bayesian networks), mixture models and expectation maximization, approximate inference, sampling methods, continuous latent variables, sequential data, and combining models.
Face and gesture recognition is an advanced technology that utilizes the intrinsic physiological or behavioral traits of individuals for machine-based automatic and reliable identification. It attracts much attention due to the increasing demand for the security, privacy, and health care-related human-centered applications. This course covers the state-of-the-art face and gesture recognition technologies, including face/human detection, face/body tracking, face recognition, head/body pose estimation, expression recognition, body language recognition, gait analysis, hand/body/eye gesture, action/activity analysis, and so forth. Multimodal, multimodality, and soft-biometric frameworks will also be discussed. Fundamental knowledge covered by the course includes pattern recognition, feature extraction, classifier, probabilistic models, image processing, and machine learning. Tools and techniques for practical face and gesture recognition system design as well as hands-on exercises and projects will be provided.
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.)
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.)
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.
Probabilistic analysis and randomized algorithms have become an indispensible tool in virtually all areas of Computer Science, ranging from combinatorial optimization, machine learning, data streaming, approximation algorithms analysis and designs, complexity theory, coding theory, to communication networks and secured protocols. This course has two major objectives: (a) it introduces key concepts, tools and techniques from probability theory which are often employed in solving many Computer Science problems, and (b) it presents many examples from three major themes: computational learning theory, randomized/probabilistic algorithms, and combinatorial constructions and existential proofs.
In addition to the probabilistic paradigm, students are expected to gain substantial discrete mathematics problem solving skills essential for computer scientists and engineers.
This course was formerly called CSE 594.
Nonuniform classes: Circuit classes and relations to uniform classes; parallel complexity: Alternating Turing machines, uniformity conditions, NC; Probabilistic classes; Toda's Theorem, interactive protocols.
This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.
Students will provide an efficient solution to a problem of their choosing on a high-end computational system of their choosing. Numerous high-end systems are available to the students, including those listed in the Topics section. This course is a course in advanced techniques on such systems. The students should have previous knowledge in terms of programming high-end systems. It is common for students to have previously taken CSE531 (parallel and sequential algorithms) and CSE633 (parallel computing), though this seminar can be taken by permission if the student has sufficient background.