Natural Language Processing

This seminar provides an introduction to natural language processing, the discipline of getting computers to understand human language. We will cover core ideas and algorithms relevant to both speech processing and text processing, with emphasis on applications in human-computer natural language interaction. Students will design and complete an open-ended final project.

Algorithms

How does Mapquest find the best route between two locations? How do computers help to decode the human genome? At the heart of these and other complex computer applications are nontrivial algorithms. While algorithms must be specialized to an application, there are some standard ways of approaching algorithmic problems that tend to be useful in many applications. Among other topics, we will explore graph algorithms, greedy algorithms, divide-and-conquer, dynamic programming, and network flow.

MaGE Practicum

This course is a discussion and practicum for students currently acting as mentors in the Computer Science Megas and Gigas Educate (MaGE) peer mentoring program. Through discussion, we will draw connections between the peer mentor experience and existing research and philosophies of peer mentoring and computer science education, to develop effective practical strategies.

Software Design

Building large software systems introduces new challenges to software development. Appropriate design decisions early in the development of large software can make a major difference in developing software that is correct and maintainable. In this course, students will learn techniques and tools to help them address these problems and develop larger software projects, improving their skills in designing, writing, debugging, and testing software. Topics include design patterns, UML, designing for maintainability, software architecture, and designing concurrent and fault tolerant systems.
Subscribe to