Computational thinking is a way of solving problems, designing systems,
and understanding human behavior based on concepts fundamental to computer
science. It involves thinking in multiple layers of abstraction at once
and gives us the power to scale beyond our imagination.

Humans are good at solving some problems, while computers are good at
solving others. This session will explore how humans and computers can
work together to solve problems neither could handle separately.

Reasoning about programs is a fundamental aspect of computational thinking.
Research at both Carnegie Mellon and Microsoft is focusing on how to use
type theory and program logics to reason about programs. Carnegie Mellon
has a distinguished history of developing improved type theories and program
logics for these purposes and Microsoft Research is studying how to apply
them in the Singularity project to build more dependable computational
systems. Discussion will focus on our current research efforts in this
area and how they complement each other.

Auction design and game-theoretic issues are playing an increasing role
in how we model computational problems and how we use and think about
computation today. This session will highlight some of the work going
on at Carnegie Mellon and Microsoft Research on these topics.

2:30 pm - 4:15 pm

Interdisciplinary Computational Education Roundtable

Computing expertise is now necessary to solve hard problems
in most disciplines. What are the specific computational challenges facing
computing in other disciplines? How do educators prepare students for
those challenges?