Project Aims to Give U.S. Programmers Edge in Global Job Market
Source Newsroom: Purdue University
Newswise — Purdue University is leading an effort to revitalize undergraduate education in computer and software engineering, reverse a trend of disinterest among American students and give them an edge in the international job market.
At the same time that fewer students are pursuing computer-related careers, industry demands on graduates are increasing, in large part because of a new approach in the design of microprocessors. These conflicting factors represent a challenge to U.S. educators, said Vijay Pai, an assistant professor of electrical and computer engineering.
"It is generally understood that there are problems in computing education on a nationwide basis," said Pai, the principal investigator of the project, funded with a $920,000, three-year grant from the National Science Foundation. "On one hand, student interest is waning in the United States compared to the days of the dot.com boom. On the other hand, systems coming out today are much more complex than they were before, so graduates need to know more in order to be prepared for the job market."
Purdue researchers will aim to improve the curriculum by strengthening education in the area of "parallel programs" needed for network servers that provide streaming video and audio and for personal computers with "multicore" chips. Nearly all personal computers sold today have chips with two or more cores, and each core is essentially its own processor. Programmers are now faced with writing parallel code, which makes their job far more difficult, Pai said.
"Our ultimate goal is to give U.S. programmers an edge, and one of the most important ways to do that is by targeting the biggest problem that's out there: multicore processors," he said.
The project, Extending a Bottom-Up Education Model to Support Concurrency from the First Year, aims to improve the curriculum for students who are learning how to design computers and software. The project is led by Pai, visiting assistant professor Cordelia M. Brown, associate professor Samuel P. Midkiff, associate professor T.N. Vijaykumar and assistant professor Yung-Hsiang Lu, all in Purdue's School of Electrical and Computer Engineering.
"We are starting with the existing curriculum, and we are moving it forward into this area of multicore," Pai said. "Traditionally, universities have taught parallel programming as an afterthought on the senior or graduate level. We teach sequential programming, and then we say, 'By the way, after three or four years of sequential programming we are going to expose you to a little bit of parallel programming just to let you know that this thing really exists.'
"Now we are looking to change that."
Pai has begun integrating lessons in parallel computing in an optional supplement to a sophomore-level programming course he teaches for a software language called C.
"While they are learning the basics of programming, they are also learning parallel programming at the same time," Pai said. "But these have been students who wanted to learn it, and the difference is that in the future it will be mandatory."
The multicore machines represent a fundamental change in computer design. Instead of racing to create the fastest microprocessor, chip makers have shifted their focus to creating chips that contain two or more processors - the equivalent of having two or more computers in the same machine - which saves energy while increasing performance. Each of the cores runs slower than a single core would, but they are more energy efficient and designed to break up computing jobs and work on separate pieces simultaneously.
This new approach is ideal for demanding multimedia jobs, such as processing video files, searching the Internet and playing computer games while doing other tasks at the same time. Many software applications, however, aren't written for chips with multiple cores.
The change in hardware poses another challenge for software designers: Programmers must be more meticulous in creating high-performance code because advances in hardware no longer improve performance without accompanying changes in software.
"For a long time, you didn't need to care about tuning your programs just right for the hardware," Pai said. "For most classes, all you had to do was write your code and if it wasn't fast enough, you just waited a few months because the hardware was going to get faster for you. That's not true anymore, and that's why we call it the 'multicore revolution,' not just yet another step."
The Purdue project is based on "concurrency," or teaching how to design software and hardware to run many applications at the same time to complete a single job.
"That's really the challenge with the multicore revolution," Pai said. "Multicore is great in terms of providing high amounts of peak performance because of the fact that you have a lot of different computational engines working on a goal. However, the problem is breaking your goal up in such a way that each of those computational engines can be working independently of one another."
The project aims to create a national template for improving undergraduate education in computer-related fields.
"Our goal is to see how computing curricula ought to be modified to get students prepared for the multicore revolution," Vijaykumar said. "The idea is for other universities to build on our modifications to suit their own curricula."
The University of Minnesota may adopt Purdue's curriculum changes for its own courses.
"The ideas in this project have real potential to get students excited about computers again," said David Lilja, a professor and head of the Department of Electrical and Computer Engineering at the University of Minnesota. "The push towards multicore processors is really highlighting the deficiencies in the ways we currently teach programming. We're very interested in introducing concurrency-related ideas into the undergraduate curriculum."
Over the three-year project, students will see an entire undergraduate curriculum of parallel programming, starting with a first-year course to be introduced at Purdue next spring.
The project involves the Discovery Learning Center at Purdue's Discovery Park, where educators will evaluate how well the curriculum changes fit into established educational models.
Related Web sites:
T.N. Vijaykumar: https://engineering.purdue.edu/ECE/People/profile?resource_id=3293
Discovery Learning Center: http://www.purdue.edu/discoverypark/learningcenter/