I'm Adam M. Smith, computer scientist, design researcher, and software
artist. Tens of people have read my
dissertation, tens of thousands have listened to my music, and tens of millions have
played with my
Artificial intelligence for design is my description for
the work I started with Michael Mateas at UC
Santa Cruz and continued with Zoran Popović at
the University of Washington. My dissertation, Mechanizing Exploratory
Game Design, built a design automation practice in the
interdisciplinary space between game design, design studies, computational
creativity, and symbolic AI. I often employ answer set
related combinatorial search/optimization tools such as model checkers and
constraint solvers) in the service of exploratorily posing and automatically
solving high-complexity analysis and synthesis problems arising in creative
design domains. As a postdoctoral researcher, I applied these ideas to deep design
automation for educational games played by millions of students around the world.
Recently, I've been researching ways of making this search-intensive automation
available to everyday programmers who are invested in domains outside of artificial intelligence.
The result, blending recent ideas from machine learning, formal
verification, processor design, and cryptography,
is a surprising new way of programming.
This idea is being developed by my new company: Quasilinear Research.
Actually, the new company is on hold for now. I've taken a job as a
Research Engineer at Microsoft. (A researcher at Microsoft but outside of
MSR? It's an experiment!)
I'm associated with the Research in
Software Engineering (RiSE) group in MSR while being embedded in an
Enterprise engineering organization. I'm on Sumit
Gulwani's team developing developing industrial strength and widely
accessible program synthesis by example systems.
In addition to the serious stuff above, I like to explore generative visual art and music,
recreational programming all the way down to the hardware/RF level, and
infinitesimal-thrust spacecraft design and orbital dynamics. I also bake bread.
"Design Spaces" approach to procedural content generation: write down what you think you want, not how to generate it.
"Quantification over Play" formulation of interactive design: explicitly sculpt the space of interaction your design affords.
"Rational Curiosity" conception of game design: don't design to optimize player fun; design to learn how to design (cf. reflective practice).
"Transient Rendering Equation" formulation of light transport for
time-resolved graphics and vision applications: light moves at a
finite speed; simulate it accordingly.
Game Design: player modeling, procedural content generation, quality assurance, formal models (or at least computational caricatures) of the design process
Artificial Intelligence: (design) knowledge representation, constraint logic programming, AI education (as in teaching AI, the topic)
Machine Learning: structured prediction, prediction on manifolds (Lie groups specifically), probabilistic graphical models
Programming Languages: probabilistic programming, domain-specific languages, metaprogramming, hardware description languages
Ultimate goal: Dramatically increase the creative resources available to
our civilization by using machines to amplify the creativity of those
facing complex design problems (particularly those involving the
self-improvement of civilization, e.g. education).
I am deeply passionate about teaching technical topics, particularly
where I can steer them to overlap with creative and aesthetic endeavors. I
regularly volunteer to give guest lectures, design new projects, and
consult on the curriculum for new classes. I provide lifetime support to my
students on selected topics and delight in hearing the challenges they
encounter in industry and grad school elsewhere. Where possible, I work to
legitimize self-teaching outside of established institutions.
Instructorships: Game AI; Scientific Computing on Android Tablets.
Teaching assistantships: introduction to computer
graphics; scientific visualization and computer animation; game engine
architecture; fundamentals of game design; game design studio; advanced
analysis of algorithms; computer literacy.
Guest lecture topics: game programming with python; the
spectrum of game engine architectures; designing a simple game framework;
image compositing; non-photorealistic rendering; programmer-oriented tools
for creativity in graphics; livecoding for music, sculpture, and poetry;
overlapping notions of time in programming languages and software
(Ideally not-so) Controversial curriculum I advocate: Bayesian
inferential calculus; geometric algebra;
procedural literacy; massively multi-language introductions to programming.
Awards: 2006 Outstanding Teaching Award (School of
Engineering); 2007 Excellence in Teaching Award for Teaching Assistants
(UCSC Grad Division)
Mike Treanor, Alex Zook, Mirjam P. Eladhari, Julian Togelius,
Gillian Smith, Michael Cook, Tommy Thompson, Brian Magerko, John Levine,
Adam M. Smith, "AI-Based Game Design Patterns,"
In Proceedings of the 10th International Conference on the Foundations
of Digital Games (FDG 2015), 2015.
Adam M. Smith, James Skorupski, James Davis "Transient Rendering," Technical Report UCSC-SOE-08-26, 2008.
Demos and Posters
Adam M. Smith, Chris Lewis, Kenneth Hullett, Gillian Smith, Anne Sullivan, "An Inclusive View of Player Modeling," In Proceedings of the 6th International Conference on the Foundations of Digital Games (FDG 2011), 2011.
Adam M. Smith, Michael Mateas, "Variations Forever: A Game of Exploring Game Design Spaces," Demonstration at the Fourth International Conference on the Foundations of Digital Games (FDG 2009), 2009.
Adam M. Smith, Mark J. Nelson, Michael Mateas, "Prototyping Games with BIPED," in Proceedings of the Fifth Artificial Intelligence for Interactive Digital Games Conference (AIIDE'09), 2009.