Global Movements

The voluntary and involuntary movement of people around the globe is the focus of this course on migrations, refugees, and diasporas. Questions of borders, nativism, transnationalism, the global economy, and legality thread through this course as we consider the many social, cultural, environmental, economic, and political factors shaping decisions to leave a home or homeland. Historical and contemporary case studies, compelling theoretical texts, and geographic perspectives on these topics collectively animate our discussions.

Human Dimens/Environ Change

Using regional case studies from across the world, this course examines some of the causes and consequences of human-induced environmental changes. The course explores the fundamental relationships and processes involved in human-environmental interactions; the various impacts that humans have had over time upon soils, water, flora, fauna, landforms, and the atmosphere; and possible alternative development strategies that could create a balance between human needs and environmental sustainability

Intro. to Physical Environment

A systematic introduction to the ecological processes operating on the surface of the earth, their spatial variation and their contribution to the spatial patterning of life on earth. The course stresses interactions among the earth's energy balance, weather, ecological resources and human impacts on environmental systems.

World Regional Geography

This course surveys the major geographic regions of the world in terms of environmental features and resource distributions, economic mainstays, population characteristics, cultural processes, social relationships, and patterns of urbanization and industrial growth. In addition to these topical foci, we use various sub-fields of geography to animate different regions. This approach provides a sense of depth while we also pursue a breadth of knowledge about the world.

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.

Machine Learning

How does Neflix learn what movies a person likes? How do computers read handwritten addresses on packages, or detect faces in images? Machine learning is the practice of programming computers to learn and improve through experience, and it is becoming pervasive in technology and science. This course will cover the mathematical underpinnings, algorithms, and practices that enable a computer to learn. Topics will include supervised learning, unsupervised learning, evaluation methodology, and Bayesian probabilistic modeling.

Operating Systems

An introduction to the issues involved in orchestrating the use of computer resources. Topics include operating system evolution, file-handling systems, memory management, virtual memory, resource scheduling, multiprogramming, deadlocks, concurrent processes, protection, and design principles. Course emphasis: understanding the effects of operating system design on computer system performance. This course is programming intensive.

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.

Theory of Computation

Are there any limits to what computers can do? Does the answer to this question depend on whether you use a PC or a Mac? Is C more powerful than PASCAL? This seminar explores these questions by investigating several models of computation, illustrating the power and limitations of each of these models, and relating them to computational problems and applications. Topics include finite state automata, pushdown automata, grammars, Turing machines, the Universal Turing Machine, and computability.

Software Design & Development

Building large software systems introduces new challenges to software development. Appropriate design decisions and programming methodology can make a major difference in developing software that is correct and maintainable. In this course, students will learn techniques and tools that are used to build correct and maintainable software, improving their skills in designing, writing, debugging, and testing software. Topics include object-oriented design, testing, design patterns, software architecture, and designing concurrent and fault tolerant systems. This course is programming intensive.
Subscribe to