Find the right nanodegree program for you.
Start Learning
The course is geared towards students who have experience in C and want to learn the fundamentals of massively parallel computing.
Taught by John Owens, a professor at UC Davis, and David Luebke, senior director of graphics research at NVIDIA, CS344 offers 30+ hours of instruction, videos and problem sets.
As we begin the new year, we decided to check in with Dave for his perspectives on parallel programming:
Dave, what is parallel programming and why is it important?
Modern computers don’t perform computations one at a time, or “serially.” Rather, they are designed to run many computations concurrently, or “in parallel.” This allows them to do much more work in a given amount of time, and deliver results considerably faster.
The past decade has seen a tectonic shift from serial to parallel computing. Once the domain of exotic supercomputers, parallel processors are now virtually ubiquitous. For example, today a purely serial program will use less than one percent of a modern PC’s computational horsepower, and less than four percent of the compute power on some high-end smartphones.
Is parallel programming gaining momentum?
Yes. The rise of the GPU (graphics processing unit) demonstrates the momentum of parallel programming. The GPU was initially developed to render millions of polygons and billions of pixels per second for games and graphics applications. To achieve that tremendous computational task, it evolved into the most powerful, most parallel processor in the PC.
Today the GPU’s massive parallelism provides the computational power behind some of the fastest supercomputers on the planet, used for groundbreaking scientific and medical research worldwide. And, with the recent introduction of NVIDIA’s Tegra K1 mobile processor, these capabilities are coming to cell phones, tablets and cars.
What are examples of applications that leverage parallel programming?
Of course, consumers use parallel computation every day to play video games, executing tens of thousands of concurrent GPU threads to draw the pixels on their screen. But today’s GPUs not only render video game frames, they also accelerate astrophysics, video transcoding, image processing, protein folding, seismic exploration, computational finance, radioastronomy, heart surgery, self-driving cars, machine learning — the list goes on and on. GPU-accelerated computing has proven to be the vanguard of a general move toward parallelism.
Why is the CS344 course relevant?
Today’s computer science students must embrace parallelism; they are inheriting a parallel world.
* * * * *
After the launch of CS344, Udacity and NVIDIA began analyzing stats about how students interact with the course. We wanted to use this information to help improve the way we deliver course material.
We found that many students are exploring the course in a non-linear manner. While most start with Unit 1 and move forward, others are starting in the middle. Some students choose to dive into the problem sets for each lesson and watch the supplementary videos only when they need help. Others choose to simply watch the videos and skip the problem sets.
This is an advantage of the Udacity model. Students can learn at their own pace and in the style that meets their needs. You don’t have to start at A to end up at Z. There is a reward, however, for students who complete the course: a CS344 certificate. In December, CS344 hit a significant milestone as a Udacity student – Ahmed Affraz – earned the 1,000th certificate.
We reached out to Ahmed, a recent graduate of Lahore University of Management Sciences in Pakistan, to ask him about his experience with CS344. In an email interview, he told us:
“One of the reasons I took this course is that my interest during my undergrad in computer science was in subjects like computer graphics, computer vision and image processing, each posing problems that can easily be made to solve in parallel. So it’s natural to develop an affinity for trying to solve your problems that way.
That’s why I wanted to learn parallel programming. And, the reason I took this course at Udacity is that nothing like it was offered at my university.
One thing about Udacity courses that makes a huge difference is that you can start a course at any time of the year and take as much time as you need to complete it.”
Ahmed added:
“I loved the way this course was taught. The problem sets were easy enough when implementing basic principles, yet hard enough if someone wants to go for perfection.
The most important thing I learned in this course wasn’t how to use CUDA or how to program GPUs. Rather, it was learning to solve problems using parallel computing techniques. So one can easily use those universal principles for any kind of parallel programming model.”
* * * * *
NVIDIA is proud to be one of Udacity’s original corporate partners. Our team is more excited than ever about online learning and its potential to bring life-changing knowledge and skills to people around the world.
Calisa Cole
Developer Relations
NVIDIA



