When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 5 modules in this course
This course will help prepare students for developing code that can process large amounts of data in parallel. It will focus on foundational aspects of concurrent programming, such as CPU/GPU architectures, multithreaded programming in C and Python, and an introduction to CUDA software/hardware.
The purpose of this foundational module is to prepare students for success within the GPU Programming Specialization. To this end, the module presents the course's overall goals and technical expectations and guides utilizing the Coursera lab environment. Students will conclude by completing an introductory C++ programming assignment to ensure they are equipped for the curriculum.
Introductory C++ Programming Assignment•30 minutes
2 discussion prompts•Total 30 minutes
GPU Interest Discussion•15 minutes
General Programming Experience Discussion•15 minutes
1 ungraded lab•Total 30 minutes
Introductory C++ Programming Lab Exercise•30 minutes
Core Principles of Parallel Programming on CPUs and GPUs
Module 2•3 hours to complete
Module details
In order to create software that process greater amounts of data at faster speeds, software operating systems, programming languages, and frameworks require strategies for accessing and modification of data in a manner that maximizes speed, while minimizing the possibility of data being in incorrect states. In this module, students will be presented canonical concurrency problems such as the Dining Philosophers. Additionally, they will learn how operating systems and programming languages handle these problems, and discuss real world big data concurrency applications.
Optional Serial Versus Parallel Programming Resources•15 minutes
2 programming assignments•Total 60 minutes
Dining Philosophers Assignment•30 minutes
Sleeping Barber Problem Assignment•30 minutes
1 discussion prompt•Total 15 minutes
Flynn's Taxonomy Discussion•15 minutes
1 ungraded lab•Total 30 minutes
Producer Consumer Laboratory Activity•30 minutes
Introduction to Parallel Programming with C and Python
Module 3•6 hours to complete
Module details
Modern programming languages allow developers to create software with complex logic for manipulation of data in parallel, taking advantage of the multiple CPU cores in most computers. Students will develop simple software, written in the C++ and Python 3 programming languages, that process data sets concurrently.
In order to write effective GPU-accelerated software, a developer must first understand the underlying hardware architecture and the software ecosystem that enables it. In this module, students will be presented with the key hardware architectures of NVidia GPUs. Additionally, they will learn about the CUDA software layers, the installation and compilation process, and the core differences between the Runtime and Driver APIs.
GUI CLI Tools for Identifying Installed GPU Hardware•3 minutes
Nvidia GPU Architectures•4 minutes
CUDA Linux Installation•4 minutes
CUDA Help Lab and Assignment Walkthrough•3 minutes
CUDA Software Layers•4 minutes
CUDA Code Compilation•3 minutes
CUDA Runtime Driver APIs•3 minutes
CUDA Driver and Runtime APIs Lab and Assignment Walkthrough•8 minutes
1 reading•Total 10 minutes
Nvidia GTC Keynote Presentation•10 minutes
1 assignment•Total 30 minutes
Nvidia Software and Hardware Quiz•30 minutes
2 programming assignments•Total 75 minutes
NVCC Help Command Assignment•15 minutes
CUDA Software Layers and Compilation•60 minutes
1 discussion prompt•Total 10 minutes
GUI/UI Tools for Identifying Installed GPU Hardware Discussion•10 minutes
1 ungraded lab•Total 30 minutes
CUDA Compilation Lab•30 minutes
Introduction to GPU Programming
Module 5•4 hours to complete
Module details
The purpose of this module is to transition from theory to practice by introducing the fundamentals of GPU programming. Students will learn the essential CUDA software keywords and syntax required for writing device code. They will also be guided through best practices for structuring both simple and complex projects, applying these concepts in hands-on assignments within common development environments.
The mission of The Johns Hopkins University is to educate its students and cultivate their capacity for life-long learning, to foster independent and original research, and to bring the benefits of discovery to the world.
Yes, but you will need to update code files to the labs and assignments. For modules 4 and 5 you will need to have an Nvidia GPU installed on your machine. The in-browser environment for labs and assignments is built to allow for all required programming.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.