Learn how to write efficient, maintainable C++ code for data-intensive applications in this hands-on course. Key application areas include scientific simulation software, statistical data processing, and computer graphics.

推荐体验
推荐体验
中级
Entry-level knowledge in computer programming, data structure, and algorithmics and introductory knowledge of C and C++
推荐体验
推荐体验
中级
Entry-level knowledge in computer programming, data structure, and algorithmics and introductory knowledge of C and C++
您将学到什么
Software architecture using an object-oriented and a data-oriented approach
Efficient programming using language-specific features in C++
GPU and multi-core CPU software development in C++
要了解的详细信息

添加到您的领英档案
54 项作业
了解顶级公司的员工如何掌握热门技能

该课程共有5个模块
To follow this MOOC, you should be familiar with the fundamentals of the C++ language. In this first module however, you will find a refresher on the most important concepts needed to complete the course. You will (re)discover variable types (stack variables, references, smart pointers), containers and algorithms, classes and polymorphism. If you already master these notions but your knowledge predates the C++11 standard, we still encourage you to follow this module for up-to-date recommendations on the efficient use of C++. In particular, have a look at Lesson 4 if you are not yet familiar with the notion of ranges in C++20 and later versions.
涵盖的内容
17个视频1篇阅读材料11个作业
17个视频•总计119分钟
- MOOC trailer•2分钟
- Welcome to this MOOC•4分钟
- Arrays, vectors, and initialization•8分钟
- Scope of variables and memory allocation•10分钟
- Transfer of data from and into a function•11分钟
- More about containers•11分钟
- Algorithms and lambda functions•11分钟
- Ranges: an introduction•6分钟
- Ranges: more data-oriented examples •5分钟
- Views•11分钟
- Smart pointers in C++ : basic concepts•8分钟
- Smart pointers in C++ : vectors of smart pointers•5分钟
- Structures and classes : Creation and initialization•9分钟
- Structures and classes : function objects•4分钟
- Polymorphic classes : general ideas•7分钟
- Polymorphic classes : abstract and derived classes at work•4分钟
- Let's wrap up•1分钟
1篇阅读材料•总计30分钟
- 📢 Important preliminary information: Assessments and subtitles•30分钟
11个作业•总计114分钟
- Do you need Module 1 ?•30分钟
- Arrays, Vectors, Variable Initialization•8分钟
- Scope of variables and memory allocation•5分钟
- Transfer of data from and into a function•10分钟
- Containers•10分钟
- Algorithms and lambda functions•8分钟
- Ranges•8分钟
- Views•8分钟
- Smart pointers•6分钟
- Structures and classes•6分钟
- Polymorphic classes•15分钟
Part of the work of processing data efficiently consists in reducing the amount of computations and the complexity of the execution path. A complex execution path is often implemented to express design choices in the organization of software components. In the form of a compile-time execution framework, C++ offers a way to offload this complexity to the compilation stage and keep the execution environment simple and efficient.
涵盖的内容
12个视频1篇阅读材料10个作业
12个视频•总计98分钟
- Presentation of the module•3分钟
- Introduction to templates•11分钟
- Abbreviated function templates•9分钟
- Template specialization and integer arguments•9分钟
- Constant expressions•12分钟
- Compile-time loops•6分钟
- Compile-time polymorphism using templates•10分钟
- Loop unrolling•9分钟
- Variants and visitors•8分钟
- Runtime polymorphism•11分钟
- Interface-based development•8分钟
- Let's wrap up•2分钟
1篇阅读材料•总计10分钟
- Variants and Visitors (complement)•10分钟
10个作业•总计127分钟
- Final quiz•30分钟
- Using templates•6分钟
- Using abbreviated syntax for function templates•6分钟
- Integers as template arguments•20分钟
- Which expressions can be evaluated at compile-time?•6分钟
- Compile-time polymorphism using templates•15分钟
- Loop unrolling•7分钟
- Implement the variant-visitor strategy•15分钟
- From dynamic to variant-based polymorphism•15分钟
- Extend a library with templated polymorphism•7分钟
Memory is one of the most critical resources of a computing platform. In this module, you will learn how memory is used in the C++ language and how memory access works on different types of machines. You will translate this knowledge into code that is at the same time clearly structured and efficient.
涵盖的内容
15个视频1篇阅读材料13个作业
15个视频•总计127分钟
- Presentation of the module•3分钟
- Memory organization•11分钟
- Virtual memory•9分钟
- Memory management unit•6分钟
- Memory latency•11分钟
- Latency vs bandwidth•8分钟
- Cache memory•11分钟
- Cache latency in practice•11分钟
- Data prefetching•13分钟
- Vector instructions•14分钟
- RAM vs CPU•9分钟
- Definitions: FLOPS and AI•5分钟
- Roofline performance model•10分钟
- Roofline performance model in practice•3分钟
- Let's wrap up•3分钟
1篇阅读材料•总计10分钟
- Memory size comparison•10分钟
13个作业•总计170分钟
- Final quiz•30分钟
- Memory organization•10分钟
- Virtual memory•10分钟
- Memory management unit•5分钟
- Memory latency•10分钟
- Latency vs bandwidth•15分钟
- Cache memory•10分钟
- Memory size comparison•10分钟
- Cache latency in practice•10分钟
- Data prefetching•15分钟
- Vector instructions•15分钟
- Performance metrics•15分钟
- Roofline performance model•15分钟
Learn to think about your program in a way that puts the critical hardware resource, memory, in the center of your thoughts. Apply these principles to discrete-event systems, a problem solving strategy with applications in all applied areas of science. Understand that data-oriented programming is not opposed to object-oriented programming but rather offers a way to model your objects in a way that accounts for your data structure, your algorithms, and your hardware.
涵盖的内容
8个视频9个作业
8个视频•总计40分钟
- Presentation of the module•2分钟
- Linear memory layout•6分钟
- Array of Structures vs Structure of Arrays•6分钟
- Complex Agent Based Model•6分钟
- From Object Oriented to Data Oriented•5分钟
- Scalable molecular dynamics simulation•5分钟
- Data oriented solution•8分钟
- Let's wrap up•2分钟
9个作业•总计103分钟
- Final quiz•20分钟
- Memory Layout Estimation•4分钟
- Recognizing SoA and AoS•6分钟
- Reading the example code•15分钟
- Object modeling vs. data modeling•10分钟
- Code transformation•15分钟
- Efficiency analysis•25分钟
- What data layout?•3分钟
- Implementing the example•5分钟
This module introduces you to an amazing feature available in the C++17 and onward: the ability to parallelize an algorithm with almost no effort, using C++ parallel algorithms. You will learn that you can gain a manifold speedup with simple changes by running your code on multi-core CPUs and on GPUs. You will dive once more into the working principles of computer memories to understand how to reach substantial performance improvements, and you will link the concepts of data-oriented programming to efficient paralellism.
涵盖的内容
15个视频11个作业
15个视频•总计103分钟
- Presentation of the module•6分钟
- C++ parallel algorithms•10分钟
- Running custom algorithms in parallel•6分钟
- Running custom algorithms in parallel•4分钟
- Index-based container traversal•8分钟
- Parallel Laplace equation•7分钟
- CPU threads•9分钟
- GPU threads•6分钟
- Concurrency: undefined behavior•9分钟
- Hardware principles of multi-core CPUs•6分钟
- False sharing•7分钟
- Heterogeneous platforms•7分钟
- GPU programming limitations•11分钟
- Let's wrap up•2分钟
- Thank you and farewell•3分钟
11个作业•总计140分钟
- Final quiz•30分钟
- Parallelize a C++ code•6分钟
- Choosing algorithms for parallelization•15分钟
- Parallelizing for loops•15分钟
- Complete Laplace equation program•8分钟
- Concurrency: undefined behavior•7分钟
- Hardware of multi-core systems•7分钟
- Identify problems of false sharing•10分钟
- Heterogeneous platforms - memory layout•6分钟
- Adapting codes for GPU•6分钟
- Parallel particle interactions•30分钟
位教师


授课教师



提供方

提供方

Founded in 1559, the University of Geneva (UNIGE) is one of Europe's leading universities. Devoted to research, education and dialogue, the UNIGE shares the international calling of its host city, Geneva, a centre of international and multicultural activities with a venerable cosmopolitan tradition.
人们为什么选择 Coursera 来帮助自己实现职业发展

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.
常见问题
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.
When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
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.
更多问题
提供助学金,

