UB - University at Buffalo, The State University of New York Computer Science and Engineering
photo of CSE grad students in class

CSE Course Offerings

Entire Catalog

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.

CSE 101 Computers: A General Introduction

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

CSE 111 Great Ideas in Computer Science

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.

Undergraduate Catalog Page

CSE 113 Introduction to Computer Programming I

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.

Undergraduate Catalog Page

CSE 115 Introduction to Computer Science for Majors I

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.

Undergraduate Catalog Page

CSE 116 Introduction to Computer Science for Majors II

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).

Undergraduate Catalog Page

CSE 191 Discrete Structures

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.

Undergraduate Catalog Page

CSE 241 Digital Systems

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.

Undergraduate Catalog Page

CSE 250 Algorithms & Data Structures

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 250 Data Structures

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.

Undergraduate Catalog Page

CSE 305 Introduction to Programming Languages

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.

Undergraduate Catalog Page

CSE 321 Real-Time and Embedded Operating Systems

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.

Undergraduate Catalog Page

CSE 331 Introduction to Algorithm Analysis and Design

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.

Undergraduate Catalog Page

CSE 341 Computer Organization

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.

Undergraduate Catalog Page

CSE 379 Introduction to Microprocessors and Microcomputers

Microprocessor architecture, machine language programming, microprocessor assemblers, assembly language programming, software development, memory and I/O interface, interrupts, microprocessor system design and microprocessor applications.

Undergraduate Catalog Page

CSE 380 Introduction to Microprocessors and Microcomputers Lab

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.

Undergraduate Catalog Page

CSE 396 Introduction to the Theory of Computation

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.

Undergraduate Catalog Page

CSE 410 Special Topics

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 411 Introduction to Computer Systems Administration

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.

Undergraduate Catalog Page

CSE 421 Introduction to Operating Systems

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.

Undergraduate Catalog Page

CSE 422 Operating Systems Internals

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.

Undergraduate Catalog Page

CSE 431 Algorithms Analysis and Design

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.

Undergraduate Catalog Page

CSE 435 Information Retrieval

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.

Undergraduate Catalog Page

CSE 442 Software Engineering

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.

Undergraduate Catalog Page

CSE 443 Language Processors Intro

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 452 Vlsi Testing

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 453 Hardware/Software Integrated Systems Design

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.

Undergraduate Catalog Page

CSE 455 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.

Undergraduate Catalog Page

http://www.cse.buffalo.edu/~jcorso/t/CSE455

CSE 456 Introduction To Visualization

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 462 Database Concepts

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.

Undergraduate Catalog Page

CSE 463 Knowledge Representation

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.

Undergraduate Catalog Page

CSE 467 Computational Linguistics

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.

Undergraduate Catalog Page

CSE 473 Introduction to Computer Vision and Image Processing

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.

Undergraduate Catalog Page

http://www.cse.buffalo.edu/courses/cse573/peter/index.html

CSE 474 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.

Undergraduate Catalog Page

CSE 484 Philosophy of Computer Science

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.

Undergraduate Catalog Page

CSE 486 Distributed Systems

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.

Undergraduate Catalog Page

CSE 487 Data Intensive Computing

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).

Undergraduate Catalog Page

CSE 489 Modern Network Concepts

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.

Undergraduate Catalog Page

CSE 490 Computer Architecture

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.

Undergraduate Catalog Page

CSE 492 Undergrad Peer Mentoring

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 493 Introduction to VLSI Electronics

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.

Undergraduate Catalog Page

CSE 495 Supervised Teaching

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 496 Internship/practicum

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 498 Undergraduate Research & Creative Activities

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 499 Independent Study

Course description is currently unavailable.

Undergraduate Catalog Page

CSE 501 Introduction to Graduate Study in Computer Science & Engineering

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.

CSE 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.

CSE 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.

CSE 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.

CSE 506 Emerging Comp Architecture

Course description is currently unavailable.

CSE 507 SOA And Web Services

May not be counted toward the 30 hours for the M.S. or the 72 hours for the Ph.D.

CSE 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.

CSE 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.

http://www.dcsl.buffalo.edu

CSE 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.

CSE 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.)

CSE 524 Realtime & Embedded Systems

Course description is currently unavailable.

CSE 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.

CSE 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.

CSE 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.

http://www.cse.buffalo.edu/courses/cse534

CSE 535 Information Retrieval

Course description is currently unavailable.

http://www.cedar.buffalo.edu/~rohini/CSE535/

CSE 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.

CSE 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).

CSE 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.)

CSE 545 Error Correcting Codes: Combinatorics, Algorithms, and Applications

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.

CSE 547 High Performance Computing 1

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.

CSE 548 High Perform Computing 2

Course description is currently unavailable.

CSE 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.

CSE 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.

http://www.cse.buffalo.edu/~jcorso/t/CSE555

CSE 556 Topics in Visualization

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.

CSE 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.

CSE 561 Design Perf Wireless Chan

Course description is currently unavailable.

CSE 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 one or more modules of a prototype database system.

CSE 563 Knowledge Representation

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.

CSE 564 Game Theory & Computer Networks

Course description is currently unavailable.

CSE 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.

CSE 566 Wireless Networks Security

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.

CSE 567 Computational Linguistics

Introduction to computational models of understanding natural languages. Syntactic and semantic parsing, generation, knowledge-representation techniques.

CSE 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.

CSE 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.

http://www.cedar.buffalo.edu/~srihari/CSE574/index.html

CSE 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.

CSE 584 Philosophy Of Computer Science

Course description is currently unavailable.

CSE 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.

CSE 587 Data Intensive Computing

Course description is currently unavailable.

CSE 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.

CSE 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.

CSE 591 System On Chip

Course description is currently unavailable.

CSE 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.

CSE 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.

http://www.cse.buffalo.edu/courses/cse596

CSE 598 Graduate Internship

For use by graduate students requiring academic credit for practical training.

CSE 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.

CSE 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.

CSE 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.

CSE 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.

CSE 620 Advanced Networking Concepts

Course description is currently unavailable.

CSE 622 Advanced Computer Systems

Course description is currently unavailable.

CSE 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.)

http://www.cedar.buffalo.edu/~srihari/CSE626/

CSE 630 Adv Wireless Netw Concept

Course description is currently unavailable.

CSE 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.

CSE 633 Parallel Algorithms

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.

CSE 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.

CSE 635 Advanced Info Retrieval

Course description is currently unavailable.

CSE 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.

http://www.cse.buffalo.edu/~chomicki/cse636-f12.html

CSE 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.)

CSE 646 Wireless Networking & Mobile Computing

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.)

CSE 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.

CSE 664 Applied Cryptography and Computer Security

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).

http://www.cse.buffalo.edu/~szhong/courses/664

CSE 666 Biometrics & 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.

http://cubs.buffalo.edu/govind/cse666_2009.php

CSE 667 Advanced Computational Linguistics

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.

CSE 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.

CSE 671 Secure Wireless Sensor Networks

Course description is currently unavailable.

CSE 672 Bayesian Vision

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.

CSE 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.

CSE 674 Advanced Machine Learning

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.

http://www.cedar.buffalo.edu/~srihari/CSE574

CSE 678 Face and Gesture Recognition

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.

CSE 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.)

CSE 681 Formal Languages 1

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.)

CSE 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.

http://www.cse.buffalo.edu/~rsridhar/cse691/

CSE 694 Topics in Algorithms - Probabilistic Analysis and Randomized Algorithms

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.

CSE 696 Computational Complexity

Nonuniform classes: Circuit classes and relations to uniform classes; parallel complexity: Alternating Turing machines, uniformity conditions, NC; Probabilistic classes; Toda's Theorem, interactive protocols.

CSE 700 Independent Study

Course description is currently unavailable.

CSE 701 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 702 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 703 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 704 Advanced Computing on High-End Computational Systems

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.

http://www.cse.buffalo.edu/faculty/miller/

CSE 705 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 706 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 707 Topics In Cognitive Sci

Course description is currently unavailable.

CSE 708 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 709 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 710 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 711 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 712 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 716 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 718 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 719 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 720 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 721 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 722 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 723 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 725 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 726 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 734 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 735 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 736 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 737 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 740 Seminars

Course description is currently unavailable.

CSE 741 Seminars

This course is a seminar. Seminar topics change every semester. Please refer to seminar instance topics and descriptions by semester.

CSE 799 Supervised Research

Course description is currently unavailable.

CSE 800 Thesis Guidance

Course description is currently unavailable.

Valid XHTML 1.0 Transitional