К содержимому
learnspaceYOUR NEXT CHAPTER
ПРОСТРАНСТВО ОБУЧЕНИЯ
ГлавнаяКаталог курсовМоё обучениеCoursera

Знания без границ

Учитесь у лучших университетов и компаний мира.

Открыть Coursera
Интеграция
Пространство университета
Моё пространствоСтраница курса
↵
ЯЛичный кабинетСтудент
© 2026 LearnSpaceКаждый день — возможность узнать больше.Помощь
Data-Oriented C++ in Scientific Programming · LearnSpace
Назад в каталог
courseraПрограммирование

Data-Oriented C++ in Scientific Programming

Курс от University of Geneva
Средний≈ 19.8 чАнглийский
О курсеНавыкиПрограммаПреподаватели

О курсе

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. You’ll begin by exploring how modern C++ supports high-efficiency programming and review the principles of a central piece of hardware in data-intensive applications: computer memory. Next, the course shifts to software design. You’ll examine performance shortcomings of traditional object-oriented programming and dive into data-oriented perspective, which improves performance by structuring code around the data itself. You’ll learn how this paradigm overcomes bottlenecks and leads to more scalable, high-performance solutions. Finally, you’ll apply these principles to modern multi-threaded systems. Through hands-on experience you will learn to use C++'s built-in parallel features to target both multi-core CPUs and GPUs.

Навыки, которые вы освоите

Data-oriented programmingMemory ManagementData AccessPerformance TestingMicroarchitectureHardware ArchitectureSystem ProgrammingObject Oriented Design

Программа курса

5 модулей · 124 учебных материалов

01Refresher: Basics of modern C++ and class-based polymorphism29 материалов

Welcome to Data-Oriented C++ in Scientific Programming

MOOC trailerВидеоWelcome to this MOOCВидео📢 Important preliminary information: Assessments and subtitlesЧтениеDo you need Module 1 ?

Учитесь у экспертов

Jonas Latt

Senior Lecturer

Bastien Chopard

Full Professor

Jean-Luc Falcone

Research Associate

Data-Oriented C++ in Scientific Programming
В каталоге вашей программы

Инвестируйте в себя

Новые знания — в удобное для вас время.

Начать на Coursera

Обучение откроется на Coursera
в новой вкладке

Обучение на Coursera

≈ 19.8 ч

5 модулей

Язык: Английский

Субтитры: Арабский, Французский, Итальянский, Корейский, Индонезийский, Испанский, Японский, Казахский

Часть программы вашего университета
Задание

Variables and Containers

Arrays, vectors, and initializationВидеоArrays, Vectors, Variable InitializationЗаданиеScope of variables and memory allocationВидеоScope of variables and memory allocationЗаданиеTransfer of data from and into a functionВидеоTransfer of data from and into a functionЗаданиеMore about containersВидеоContainersЗадание

Algorithms, ranges, and views

Algorithms and lambda functionsВидеоAlgorithms and lambda functionsЗаданиеRanges: an introductionВидеоRanges: more data-oriented examples ВидеоRangesЗаданиеViewsВидеоViewsЗадание

Pointers, classes, and polymorphism

Smart pointers in C++ : basic conceptsВидеоSmart pointers in C++ : vectors of smart pointersВидеоSmart pointersЗаданиеStructures and classes : Creation and initializationВидеоStructures and classes : function objectsВидеоStructures and classesЗаданиеPolymorphic classes : general ideasВидеоPolymorphic classes : abstract and derived classes at workВидеоPolymorphic classesЗадание

Wrapping up

Let's wrap upВидео
02Compile-time code execution23 материалов

C++ templates

Presentation of the moduleВидеоIntroduction to templatesВидеоUsing templatesЗаданиеAbbreviated function templatesВидеоUsing abbreviated syntax for function templatesЗаданиеTemplate specialization and integer argumentsВидеоIntegers as template argumentsЗадание

Constant expressions

Constant expressionsВидеоWhich expressions can be evaluated at compile-time?ЗаданиеCompile-time loopsВидеоCompile-time polymorphism using templatesВидеоCompile-time polymorphism using templatesЗаданиеLoop unrollingВидео

Variant-based polymorphism

Variants and visitorsВидеоVariants and Visitors (complement)ЧтениеImplement the variant-visitor strategyЗаданиеRuntime polymorphismВидеоFrom dynamic to variant-based polymorphismЗаданиеInterface-based developmentВидео

Wrapping up

Let's wrap upВидеоFinal quizЗадание
03Memory29 материалов

Organization of computer memory

Presentation of the moduleВидеоMemory organizationВидеоMemory organizationЗаданиеVirtual memoryВидеоVirtual memoryЗаданиеMemory management unitВидеоMemory management unitЗадание

Latency and bandwidth

Memory latencyВидеоMemory latencyЗаданиеLatency vs bandwidthВидеоLatency vs bandwidthЗадание

Cache memory

Cache memoryВидеоCache memoryЗаданиеMemory size comparisonЧтениеMemory size comparisonЗаданиеCache latency in practiceВидеоCache latency in practiceЗаданиеData prefetchingВидео

Efficient use of memory

Vector instructionsВидеоVector instructionsЗаданиеRAM vs CPUВидеоDefinitions: FLOPS and AIВидеоPerformance metricsЗаданиеRoofline performance modelВидеоRoofline performance model in practice

Wrapping up

Let's wrap upВидеоFinal quizЗадание
04Data-oriented design17 материалов

Chosing the memory layout

Presentation of the moduleВидеоLinear memory layoutВидеоMemory Layout EstimationЗаданиеArray of Structures vs Structure of ArraysВидеоRecognizing SoA and AoSЗаданиеReading the example codeЗадание

Object Oriented vs Data Oriented Programming

Complex Agent Based ModelВидеоFrom Object Oriented to Data OrientedВидеоObject modeling vs. data modelingЗаданиеCode transformationЗаданиеEfficiency analysisЗадание

Data Oriented Programming Application

Scalable molecular dynamics simulationВидеоWhat data layout?ЗаданиеData oriented solutionВидеоImplementing the exampleЗадание

Wrapping up

Let's wrap upВидеоFinal quizЗадание
05Using Parallel algorithms26 материалов

Introduction to C++ parallel algorithms

Presentation of the moduleВидеоC++ parallel algorithmsВидеоParallelize a C++ codeЗаданиеRunning custom algorithms in parallelВидеоRunning custom algorithms in parallelВидеоChoosing algorithms for parallelizationЗадание

Indices

Index-based container traversalВидеоParallelizing for loopsЗаданиеParallel Laplace equationВидеоComplete Laplace equation programЗадание

Principles and cost of concurrency

CPU threadsВидеоGPU threadsВидеоConcurrency: undefined behaviorЗаданиеConcurrency: undefined behaviorВидеоHardware of multi-core systemsЗаданиеHardware principles of multi-core CPUsВидео

Parallel algorithms on GPU

Heterogeneous platformsВидеоHeterogeneous platforms - memory layoutЗаданиеGPU programming limitationsВидеоAdapting codes for GPUЗаданиеParallel particle interactionsЗадание

Wrapping up

Let's wrap upВидеоFinal quizЗаданиеThank you and farewellВидео
Loop unrollingЗадание
Extend a library with templated polymorphismЗадание
Data prefetchingЗадание
Видео
Roofline performance modelЗадание
False sharingВидео
Identify problems of false sharingЗадание