Academics

Course Catalog

GRAD > CS

Computer Science

  • CS 612  Algorithms in Bioinformatics

    Description:
    The course will introduce students to bioinformatics - the area concerning the development and application of computational methods to address key problems in biology. It will introduce the students to a variety of methods and skills required to conduct research in this popular field. The emphasis of the course is algorithmic methods in structural bioinformatics with a focus on various computational methods to simulate, analyze, and model protein structure, dynamic, and fuction.   More Info

    Offered in:
    • TBA
  • CS 615  User Interface Design

    Description:
    An introduction to user interface design, which encompasses design of the user interface and the functional design of the whole system. Students read and critique papers and articles, evaluate and critique existing user interfaces, and design interfaces of their own. Working in small groups, students use either interface prototyping tools or conventional rapid prototyping systems to construct an experimental interface.   More Info

    Offered in:
  • CS 620  Theory of Computation

    Description:
    Functions computable by programs. Recursive functions and Turing machines; simulation and diagonalization. Universality and unsolvable problems. Kleene's hierarchy and the recursion theorem. Gregorczyk's hierarchy and Ackermann's function. Abstract complexity. Formal languages and classes of automata. Inherently difficult combinatorial problems.   More Info

    Offered in:
    • TBA
  • CS 622  Theory of Formal Languages

    Description:
    This course treats languages from an abstract point of view as defined by formal grammars and by families of abstract machines. The Chomsky hierarchy and associated automata are covered. Emphasis is placed on context-free languages. Careful mathematical definition and proof are stressed throughout. This course does not involve programming. This course is of special interest to students interested in linguistics and in the theory of programming language compilers.   More Info

    Offered in:
  • CS 624  Analysis of Algorithms

    Description:
    Basic techniques for designing algorithms: divide and conquer, the greedy method, dynamic programming, etc. Applications to searching and sorting algorithms. Complexity of parsing. The fast Fourier transform and its applications (evaluation of polynomials and arithmetical problems). Lower bound theory. NP-hard and NP-complete problems. Probabilistic estimates of algorithms.   More Info

    Offered in:
  • CS 630  Database Management Systems

    Description:
    Databases and database management systems. The entity/relationship model. The relational model. Relational algebra. The query language SQL. The object-relational model and SQL3. Embedded SQL in programs and dynamic SQL. Database administration: creating views and integrity constraints, handling data security. Functional dependencies. Normalization.   More Info

    Offered in:
  • CS 634  Architecture of Database Systems

    Description:
    Indexing and query optimization in database systems. Writing programs to update a database. ACID properties. Concurrency theory: serializability, 2-phase locking, deadlock detection. Transactional Recovery: REDO and UNDO logging, different checkpoint approaches, media recovery. Examples of recovery utility use in INGRES, ORACLE and DB2. Transactional performance: the TPC-A benchmark, analysis of bottlenecks, and cost-performance considerations. Distributed database systems. Two-phase commit. Database parallelism.   More Info

    Offered in:
    • TBA
  • CS 636  Database Application Development

    Description:
    A study of database applications, that is, software systems that solve a particular real-world problem and hold their data in a relational database. The systems under study also have a realistic user interface. Students work in small groups on a real-world project specified and implemented during the term. Topics include system specification from user needs, analysis of data flow and work flow, object design, database design, client-server techniques, and rapid prototyping systems.   More Info

    Offered in:
  • CS 637  Database-Backed Websites

    Description:
    The design and implementation of database-backed websites. Static sites, dynamic sites, and sites that act as interfaces to relational database systems, providing for web-based collaboration through scalable online communities. Students install and maintain their own web servers, extend existing tool sets, and build their own sites from scratch in a series of intensive programming projects.   More Info

    Offered in:
  • CS 638  Applied Machine Learning

    Description:
    This course presents the practical side of machine learning for applications, such as pattern recognition from images or building predictive classifiers. Topics will include linear models for regression, decision trees, rule based classification, support vector machines, Bayesian networks, and clustering. The emphasis of the course will be on the hands-on application of machine learning to a variety of problems. This course does not assume any prior exposure to machine learning theory or practice.   More Info

    Offered in:
    • TBA
  • CS 639  XML and Semi-Structured Data on the Web

    Description:
    The eXtensible Markup Language (XML) smooths Web programming by providing a clear separation of presentation from structure in documents. This course surveys XML and semi-structure data technologies with the goal of understanding the problems and solutions arising from combining data from multiple sites and on-line databases. Students will learn the fundamentals of XML, the stylesheet and transformating language XSLT, the schema definition language X-Schema, tools that support Java-based XML programming, and some specialized applications such as Wireless Application Protocol. Focus is on manipulation of XML for data exchange, resource discovery, and the building of interactive web applications.   More Info

    Offered in:
    • TBA
  • CS 641  Computer Architecture

    Description:
    An examination of the designs for hierarchical memory systems including caches and virtual memory systems, pipeline design techniques, characteristics of RISC/CISC machines, multi-computer systems including multiprocessors and loosely-coupled computer systems, the micro engine and micro programmed machines, vector and array processors, and the cost/performance trade-offs in all of the above designs. Prerequisites: CS310 or permission of the instructor.   More Info

    Offered in:
    • TBA
  • CS 644  Operating Systems

    Description:
    Structure and dynamics of operating system software. Operating systems as event driven software: interrupt processing and asynchronous operation. Memory management, scheduling, concurrency, consideration, device drivers. UNIX as a major example.   More Info

    Offered in:
    • TBA
  • CS 646  Computer Communications Networks

    Description:
    Need for computer networks. Architectures of networks. Architectures of systems. ISO Reference Model. Standardization efforts. Specification of protocols. Example of protocols and networks.   More Info

    Offered in:
  • CS 647  Multimedia Systems

    Description:
    Multimedia applications are ubiquitous, evidenced by their vast presence on the Internet. This course covers fundamentals in the design and development of multimedia systems and applications. Three key elements are discussed: multimedia computing, multimedia databases, and multimedia networking. The topics include, but are not limited to, multimedia processing/compression/representations, multimedia content management and retrieval, and multimedia content streaming and distribution. Students are expected to work in groups to complete a semester-long project which can be a research investigation or the software development of a system prototype.   More Info

    Offered in:
    • TBA
  • CS 648  Wireless Networks and Mobile Computing

    Description:
    Wireless communications, wireless networking, mobility management technologies, and protocols for wireless LANs and WANs are surveyed. Selected mobile computing models and mobile applications development environments are evaluated. A wireless networks laboratory provides a realistic mobile/wireless computing environment. Students are expected to form groups to complete a semester project involving an investigation and the development of a prototype.   More Info

    Offered in:
  • CS 649  Concurrent and Distributed Systems

    Description:
    This course covers a series of design principles and implementation techniques for concurrent and distributed systems. Topics range from basic object-oriented techniques in thread programming and TCP/UDP socket programming to advanced design strategies for I/O, caching, transactional messaging, remoting middleware and embedded networking. Students will design and implement several representative concurrent and distributed systems such as web browsers, web servers, instant messaging systems, peer-to-peer overlay systems, distributed event notification systems and sensor networking systems. They will implement these systems with several programming languages including general purpose languages such as Java to concurrency-oriented languages such as Erlang.   More Info

    Offered in:
    • TBA
  • CS 651  Compiler

    Description:
    Compiler organization and construction. Programming projects involve scanning input, analyzing program structure, error checking, code translation and interpreting, code generation and optimization. These projects result in a compiler for a reasonably large subset of ALGOL, Pascal, or similar procedural language.   More Info

    Offered in:
  • CS 670  Artificial Intelligence

    Description:
    A broad technical introduction to the techniques that enable computers to behave intelligently: problem solving and game playing, knowledge representation and reasoning, planning and decision making, learning, perception and interpretation. The application of these techniques to real-world systems, with some programming in LISP.   More Info

    Offered in:
    • TBA
  • CS 671  Machine Learning

    Description:
    Machine Learning is a foundational discipline for data mining and artificial intelligence which explores the limits and capacities of automated learning of abstract concepts. The course will focus on the probably approximately correct (PAC) learning model and will cover topics like the Vapnik-Chervonenkis dimension, the weak and strong learning paradigms, inherent unpredictability, reducibility in PAC learning, and learning finite automata.   More Info

    Offered in:
  • CS 672  Neural Networks

    Description:
    An introduction to artificial neural networks. Topics include a survey of natural neural network models, perceptrons and their limitations, multi-layer networks and back propagation, Hebbian learning, unsupervised competitive learning, relations to automata and computability theory, adaptive resonance theory, applications of connectionist models of computing to various domains, including pattern recognition and databases.   More Info

    Offered in:
    • TBA
  • CS 675  Computer Vision

    Description:
    This course provides both theoretical knowledge and practical experience with fundamental and advanced Computer Vision algorithms. Topics range from basic image processing techniques such as image convolution and region and edge detection to more complex vision algorithms for contour detection, depth perception, dynamic vision, and object recognition. Students will implement vision algorithms in the JAVA programming language. The performance of these programs is evaluated, and the advantages and disadvantages of individual approaches are discussed. The final project is the development by students of their own computer vision program solving a given problem.   More Info

    Offered in:
    • TBA
  • CS 680  Object-Oriented Design and Programming

    Description:
    Object-oriented techniques for the design and development of software. Students will develop a series of moderate sized programs in C++ and Java and then design and implement a more substantial project in small teams.   More Info

    Offered in:
  • CS 681  Object-Oriented Software Development

    Description:
    This course, CS 682, and CS 683 form an integrated one-year sequence. In these courses students work in small teams, each team taking the full year to create a useful, complete, medium-sized software system for real customers. There is a strong emphasis on process: each project makes systematic use of an object-oriented development methodology based on UML models and incremental development. This course is offered every spring semester.   More Info

    Offered in:
  • CS 682  Software Development Laboratory I

    Description:
    First half of a two-semester laboratory course in which students, working in small groups, specify, design, implement, and document a large software project. Prerequisite: CS 680 is a co-requesite. This course is offered every fall semester.   More Info

    Offered in:
  • CS 683  Software Development Laboratory II

    Description:
    A continuation of CS 682. This course is offered every spring semester and must be taken during the semester following CS 681 and CS 682.   More Info

    Offered in:
  • CS 696  Independent Study

    Description:
    A student must find a faculty sponsor for his or her independent study and arrange study under that person, normally about a computer science topic not covered by the department's courses.   More Info

    Offered in:
  • CS 697  Special Topics

    Description:
    Topics of current interest in the field, according to student and faculty areas of specialization. Course content varies according to the topic and will be announced prior to registration.   More Info

    Offered in:
  • CS 698  Practicum in CS

    Description:
    This course is intended to enhance student industrial work by combining it with closely related academic studies of the domain of application of computer skills and of related computer concepts, skills and methodologies. It will enhance academic studies by providing a focus and a context for learning of new concepts and skills. It will help to prepare the student for the transition from an academic program to eventual employment in the computer industry. This course is not open to graduate students in the Ph.D track.   More Info

    Offered in:
  • CS 699  Research for MS Thesis

    Description:
    A one-semester supervised practicum course to help students complete the required thesis, which must be a substantial piece of research on some aspect of computer science. The master's thesis may take the form of a theoretical paper or a report on a piece of software.   More Info

    Offered in:
  • CS 720  Logical Foundations of Computer Science

    Description:
    The course treats the logical foundations of computer science in a mathematically rigorous way but with emphasis on the applications of logic in computer science. Topics include the syntax and semantics of predicate logic, formal systems for predicate logic, many-sorted logic, and logic programming. Additional topics may include equational logic, algebraic specification, term rewriting, program verification, nonstandard logic, and databases. Students are expected to demonstrate an understanding of theoretical material and the ability to apply it.   More Info

    Offered in:
    • TBA
  • CS 724  Topics in Algorithm Theory and Design

    Description:
    An examination of current topics in algorithm analysis and design: complexity classes, abstract complexity theory, generating functions. Topics may include genetic algorithms, string matching algorithms, and circuit complexity.   More Info

    Offered in:
    • TBA
  • CS 738  Data Mining

    Description:
    Data mining is the process of secondary analysis to search for unsuspected relationships that are of interest or value for decision making. It aims at discovering association rules, episode rules, sequential rules, and other knowledge embedded in data and is concerned with efficient data structures and algorithms that have good scaling properties. The course presents essential aspects of data mining as a part of our current offering in databases; it includes a data mining project and prepares students to program applications that use data mining techniques.   More Info

    Offered in:
    • TBA
  • CS 739  Spatial Data Mining

    Description:
    This course treats a specific advanced topic of current research interest in the area of handling spatial, temporal, and spatio-temporal data. Major topics include data mining and machine learning techniques on clustering, association analysis, and classification. In addition, students will learn how to use popular data mining tools and how to implement applications in geosciences. The class will expose students to interdisciplinary research on spatial data mining and current industrial practices in handling spatio-temporal data.   More Info

    Offered in:
    • TBA
  • CS 752  Parallel Programming

    Description:
    This course introduces the issues involved in parallel programming systems, including ease of programming, match between programming language and problem domain, and efficiency of the generated code. It explores and compares several parallel programming paradigms and investigates algorithms for scheduling parallel programs and for automatic parallelization of serial programs.   More Info

    Offered in:
  • CS 899  PhD Dissertation Research

    Description:
    Research, conducted under faculty supervision, which leads to the presentation of a doctoral dissertation. This course carries variable credit and can be taken more than once.   More Info

    Offered in: