Foundational Courses

CS 506/CS 606 Special Topics1: Practical Linguistics

Computer scientists and engineers who work on such varied problems as speech recognition, speech synthesis, machine translation or information retrieval need to know something about language, yet very few of them have taken courses in linguistics. Part of the problem is that many academic linguistics courses do not focus on the kinds of topics that engineers and computer scientists really need to know about. This course will acquaint students with the ways in which languages vary in their phonetics, phonology, prosody, morphology, syntax and pragmatics. We will cover practical issues such as the different kinds of text normalization problems that different languages present, and factors that can be expected to make some languages easier or harder than others for specific problems. The course will also train students to use linguistic resources, such as grammars or lexicons.

CS 506/CS 606 Special Topics: Natural Language Processing I

This course introduces Natural Language Processing, also known as Computational Linguistics. This course will be organized around specific linguistic problems and computational approaches to them, each organized into its own unit. Each unit will take approximately two and a half weeks. We will present the problem, present background in areas that are needed to understand one or more computational approaches to the problem, and finally present a computational solution. For the first two or three units, there will be an associated homework, which will be due a week after the end of the unit. Students will be required to complete a project, which will include an in-class presentation and a final report.

CS 506/CS 606 Special Topics: Signal Processing for Speech Applications

Introduces signal processing with a particular focus on applications in speech technology including speech recognition, speech synthesis, speaker id, and language id. Topics include:

  • Speech Production: Physiology; Categorization; Prosody; Perception
  • Speech Acoustics: Physics of Sound; Uniform Tube Model; Tube Concatenation
  • Cepstral Processing: mixed-phase synthesis
  • Pitch and Epoch Detection: autocorrelation-based; comb-filter; cepstrum-based; multi-band voicing
  • Speech Codecs: Filter-bank; Phase Vocoder; Sinusoidal Model; LPC + Postfilter; MELP; CELP; VQ;
  • Formant Analysis and Synthesis: All-pole modeling; Glottal Pulse Models; Tracking
  • Overlap-add methods: PSOLA; RPSOLA
  • Voice Transformation
  • Speech Enhancement / Noise Reduction
  • Multi-array / Beam Forming Algorithms
  • Speech Applications Overview: Speech Recognition; Speech Synthesis; Speech Coding; Speaker Recognition; Language Recognition

CS 532/CS 632 Analysis and Design of Algorithms

An introduction to the design and analysis of algorithms. The course covers design techniques, such as dynamic programming and greedy methods, as well as fundamentals of analyzing algorithms for correctness and time and space bounds. Topics include advanced sorting and searching methods, graph algorithms and geometric algorithms. Other areas vary from year to year and may include computational geometry, matrix manipulations, string and pattern matching, set algorithms, polynomial computations and the fast Fourier transform. Suggested prerequisites: Data structures and discrete mathematics. Prerequisites: Data structures and discrete mathematics.

CS 533/CS 633 Automata and Formal Languages

Automata theory introduces fundamental models that are used over and over again in computer science for programming languages, in compiler construction and in algorithms. These models are a valuable part of the repertoire of any computer scientist or engineer. This course introduces progressively more powerful models of computation, starting with finite automata and moving to stack and tape (Turing) machines. It also presents the regular, context-free, recursive and recursively enumerable languages and shows how they correspond to the various models of computation and to generation mechanisms such as regular expressions and grammars. The emphasis is on understanding the properties of these models, the relationships among them and how modifications such as nondeterminism and resource bounds affect them. The course includes application of these concepts to problems arising in other parts of computer science. Suggested prerequisite: Discrete mathematics.

CS 547/CS 647 Statistical Pattern Recognition

Theory and practice of statistical pattern recognition. Students will learn fundamental theory and practices that are common to a broad range of pattern recognition applications and technologies, and apply principles to real-world examples. The emphasis is on developing tools, both theoretical and practical, that provide grounding in pattern recognition problems and methods; rather than on showcasing particular technologies. The course will benefit those whose work may use any of a variety of recognition technologies in broad-ranging applications such as speech and image processing, data mining, finance. Topics include: random vectors, detection problems (binary decision problems), likelihood ratio tests, ROC curves, parametric and non-parametric density estimation, classification models, theoretical error bounds and practical error estimation through cross-validation. Maximum likelihood and Bayesian parameter estimation. Feature extraction for dimensionality reduction, and for classification.

CS 550/CS 650 Spoken Language Systems

In the not too distant future, spoken language systems will revolutionize human-computer interaction by enabling natural conversations between people and machines. In addition to telephony applications, such as voice browsing of the web, these systems also will support face-to-face communication with intelligent animated agents. These animated human-like agents will combine acoustic information with the speaker's facial cues and gestures to understand speech, and produce natural and expressive speech with accurate facial movements and expressions. This course reviews the state of the art in human language technology, and explains how key technologies are combined to produce spoken language systems. The course combines lectures by experts in the field with hands-on experience using and building spoken language systems using the CSLU Toolkit.

CS 551/CS 651 Structure of Spoken Language

Research and development of spoken-language technology is facilitated by an understanding of the acoustic and symbolic structure of speech, as well as the capabilities and limitations of current speech processing systems. This course will present an overview of the structure of speech in terms of phonetics, acoustic-phonetic patterns, and models of speech perception and production by both humans and computers. The goals are for the student to understand how speech is structured, understand and identify acoustic cues (especially in different phonetic contexts), and understand how this information may be relevant to automatic speech recognition or generation systems.

CS 552/CS652 Automatic Speech Recognition

This course will provide theoretical foundations and practical experience in computer speech recognition. Specific topics include feature extraction, dynamic time warping, hidden Markov models, vector quantization and Gaussian mixture models, Viterbi search, training with expectation maximization (EM), decision-tree based clustering, language models, finite-state formulation, and speaker adaptation. Students will implement Viterbi search and EM training for speech recognition. Prerequisites: Statistical pattern recognition or equivalent, basic Linear Algebra, and proficiency in C/C++.

CS 559/CS 659 Machine Learning

This course will provide theoretical foundations and practical experience in statistical learning methods or machine learning. Topics covered under this course are linear models for regression and classifications, decision trees, neural networks, support vector machines, and kernel methods. The course will also include a short overview of reinforcement learning and probabilistic graphical models. Pre-requisite: Probability and statistics or equivalent, a basic course in Linear Algebra and proficiency in at least one high-level programming language.

CS 560/CS 660 Artificial Intelligence

This course introduces you to declaratively representing information using rich knowledge representation schemes with formal semantics. You'll learn to reason about this information in order to draw new conclusions, make consistent assumptions, or plan new actions. This reasoning process is at the heart of building intelligent agent-based systems. The theory in this course is balanced by building working programs in the logic-based programming language Prolog.

The course surveys the foundations and applications of symbolic approaches to artificial intelligence. The approach emphasizes the formal basis of automated reasoning and includes an introduction to programming in Prolog. Fundamentals covered include search, knowledge representation, automated inference, planning, nonmonotonic reasoning, and reasoning about belief. Applications include expert systems, natural language processing and agent architectures.

CS 562/CS 662 Natural Language Processing II

The goal of this course is to give a broad but detailed introduction to the key algorithms and modeling techniques used for Natural Language Processing (NLP) today. With a few exceptions, NLP involves taking a sequence of words as input (e.g. a sentence) and returning some annotation(s) for that string. Well-known examples of this include part-of-speech tagging and syntactic parsing. Many other common tasks, e.g. shallow parsing or named-entity recognition, can be easily recast as tagging tasks; hence certain basic techniques can be widely applied within NLP. Applications such as automatic speech recogntion, machine translation, information extraction, and question answering all make use of NLP techniques. By the end of this course, you should understand how to approach common natural language problems arising in these and other applications.

EE 584 Introduction to Image Processing

This course covers basic image processing principles and techniques with a brief introduction to machine vision. Specific topics include image representation, transform methods, image filtering, multi-resolution representation, edge detection, text characterization, and motion analysis. The course demonstrates application of these methods to image enhancement, image restoration, and image compression. Selected areas in machine vision include image segmentation, elementary techniques in pattern recognition, and object representation. Application of these techniques is illustrated in numerous examples.

GEN 569 Scholarship Skills

This course will make you a better scholar, and a better professional in non-academic venues. It will make you a better writer, a better presenter, and a better reviewer. The course concentrates on your written and oral exposition skills, and also discusses effective reading. You will learn more about both the production and consumption of media used by computer scientists and biomedical engineers to communicate today.

You will learn to write conference and journal articles and theses, and get some tips on effective reading. You will learn how to be an effective reviewer for journals and conferences. You will listen to and deliver oral presentations. You will learn how to prepare yourself for a job hunt in academia or industry when you graduate.

Advanced Courses and Seminars

CS 506/CS 606 Special Topics: Seminar on Speech and Language Processing for Augmentative and Alternative Communication

This seminar introduces the field of speech and natural language processing (SNLP) as it relates to Augmentative and Alternative Communication (AAC). We have selected a set of representative papers that show how SNLP techniques have been used in AAC. The bulk of the course will consist of participant-led discussions on these papers. There will be one introductory lecture that will introduce AAC and give a brief history of mechanical and electronic technology with AAC applications. Another component of the course will be hands-on experience with AAC devices.

CS 548/CS 648 Seminar on Probabilistic Graphical Models

Probabilistic graphical models (PGMs), a generic framework for representing probabilistic dependence (or independence) between categorical and continuous variables, encompasses a large family of models including hidden Markov models, kalman filters and more. In this seminar course, we will discuss papers and book chapters that introduce graph terminology, conditional independence (Bayes Ball) test, variable elimination algorithm, junction tree algorithm for making inference over any graph, message passing algorithms and dynamic Bayesian networks. Pre-requisite: Statistical pattern recognition, and machine learning.

CS 506/606 Special Topics Problem Solving w/Large Clusters

Many real-world computational problems involve data sets that are too large to process on a single computer, or that have other characteristics--- fault-tolerance, etc.--- that require multiple computers working together. Examples include analysis of high-throughput genomic or proteomic data, data analytics over very large data sets, large-scale social network analysis, training machine learning models on "web scale" data sets, and so forth. In this course, we will explore a variety of approaches to solving these kinds of problems through a mixture of lectures and student-led discussions of the research literature in the field. We will also hear from several guest lecturers with practical experience applying these kinds of algorithms in both academia and industry. In addition to reading and discussing articles, students will become familiar with the Hadoop map-reduce environment as well as several other such systems through class assignments. There will also be a final project on the subject of the student's choice. Prerequisites: A graduate level course on machine learning or probability and statistics. Students should be comfortable coding in at least one programming language, and will find the course much easier if they are familiar with the UNIX command-line environment than if they are not.

CS 555/CS 655 Algorithms for Sequence Analysis in Biology

The goal of this course is to give a broad but detailed introduction to the key algorithms and modeling techniques used for sequence processing in both biological and linguistic applications, with an emphasis on exact and approximate sequence matching problems.

1The "Special Topics" designation is used for new courses that have been taught fewer than two times and which do not yet have a permanent course number assigned.