Today, computer algorithms control every major city infrastructure. Computer models that simulate present and future cyber and physical systems are critical in enabling research breakthroughs. They provide tools to design and test future human-made infrastructure and materials and give us scientific insights into the Earth’s complex natural systems.
“In the same way that the telescope gave us the tool to map the stars, and the microscope gave us the power to see microbes, the computer gives us new tools to understand our world as it is today — by analyzing massive amounts of data — and to create the world of tomorrow, by building models of future cities that cut across the scales from individual atoms to global infrastructure,” says Professor John Williams of the Department of Civil and Environmental Engineering (CEE). Williams uses computation to simulate materials in Earth’s subsurface using particle mechanics, and cyber-attacks on global data systems using discrete event-based simulation. “Computers allow us to model materials that have not yet been manufactured, understand the dynamics of megacities, and trace the DNA of generations of bacteria in the natural environment.”
To prepare CEE students for such computationally intensive work, the department is launching a new initiative to teach the principles of computational thinking and problem solving at the graduate and undergraduate levels.
Building on graduate students’ existing skills
To help meet this objective, doctoral students Alexandra Konings and Alison Hoyt arranged a two-day software workshop taught by volunteers from the nonprofit organization Software Carpentry. About 40 graduate students and postdocs participated in the workshop, held Jan. 28-29 with a half-day extension on Jan. 30.
“My primary motivation for the workshop was to get other students and myself to think about our programming habits and how those habits could be made most efficient,” says Konings, who submitted some of her own code — written for her research in hydrology — for review by the course instructors. “Receiving actual comments on existing code gave me a concrete way to see how to apply some of the lessons of the workshop. I received positive comments about that exercise from several of the attendees; I think they liked seeing a piece of code improved upon in specific ways without having to submit their own work to scrutiny.”
The workshop focused on programming tools to help attendees become more efficient programmers in any language: Git and GitHub, software and an online environment for managing and sharing code revisions; the Unix shell, a tool for automating repetitive tasks; and Python Notebook, a programming environment for scientific computing with parallel computing and scientific visualization features.
Aron Ahmadia, a research scientist with the U.S. Army Corps of Engineers in Virginia, and Randal Olson, a graduate student in evolutionary biology at Michigan State University, led the Software Carpentry teaching team of volunteers. “We’re enabling students to act as 21st-century scientists, to share and deal with the vast amounts of data available,” Ahmadia says. “These have changed the way science is done.”
Other Software Carpentry volunteers assisting with the workshop were Kevin Winters, a research engineer with the U.S. Army Corps of Engineers in Mississippi; Daniel Chen, a graduate student at Columbia University’s Mailman School of Public Health; Jessica McKellar, director of the Python Software Foundation; and Jose Rojas, a graduate student at Harvard University.
“The key thing I gained from the course was exposure to a number of tools that I had never used before,” says CEE graduate student Yalu Wu, who works on problems in supply chain management. “Understanding what these tools are or can be used for, and knowing where to find additional resources, is extremely beneficial.”
Reflecting the increased emphasis on computationally focused graduate education, the department also participates in the new cross-departmental doctoral program in Computational Science and Engineering, which allows students to specialize in a computation-related field through focused coursework and a doctoral thesis based on computationally intensive research.
Laying the foundation early
“The goal of 1.00 is to teach students how computers can be used to solve engineering problems, and how algorithms allow us to address new problems ranging from city dynamics using networks and graph theory on Big Data to particle mechanics and visualization,” says Williams, who leads 1.00. The course is taught using active learning, a pedagogical method that turns the classroom into a computational laboratory, where students learn a new concept and then immediately apply it to an engineering problem. Typically, a 90-minute class involves several teaching “bytes” – 10 minutes introducing a concept followed by 20 minutes of individual or team problem solving.
Subject 1.000, taught by Professor Ruben Juanes, will first be offered in fall 2014. This subject will use MATLAB to teach computer programming, numerical methods, and algorithms. “Luckily we have such a diversity in the problem domain — network science, environmental pollution, climate, structures, and others — that we can make it a very rich course,” Juanes says.
“Computation is a thread that runs through the department as an enabling tool and is more important than ever in our research and educational programs,” says Professor Markus Buehler, CEE department head. “CEE has been a leader in computational engineering since the 1960s, when Charlie Miller introduced computers to civil engineering problem solving. More recently, the advent of massively parallelized computing and cloud computing have facilitated access to computational modeling in a very wide range of fields, connecting physical infrastructure to the web, computational genomics, and the analysis of complex environmental data, and enabling the massive collection of data through sensors, cell phones, or social media, as well as facilitating the rational design of materials from the atomic level up.”
“By revamping our undergraduate computation offerings and helping our graduate students and postdocs improve their programming skills, we help ensure the department’s leadership in computation,” Buehler says.