We may earn an affiliate commission when you visit our partners.
Hristo Iliev

Welcome

In this bite-sized course you will learn what data serialization is and how to do it properly. Data serialization is crucial for various tasks. It is essential for web developers who need to transmit data over the network. It is also important for desktop applications and games where the ability to save and retrieve settings or game saves is necessary.

In any of the above cases you would like to have a fast method of preparing data for being sent and also read back on the other side. So I will introduce binary serialization and its benefits compared to the more widespread JSON or XML alternatives.

Read more

Welcome

In this bite-sized course you will learn what data serialization is and how to do it properly. Data serialization is crucial for various tasks. It is essential for web developers who need to transmit data over the network. It is also important for desktop applications and games where the ability to save and retrieve settings or game saves is necessary.

In any of the above cases you would like to have a fast method of preparing data for being sent and also read back on the other side. So I will introduce binary serialization and its benefits compared to the more widespread JSON or XML alternatives.

FlatBuffers

This library is developed by Google and is a really efficient mechanism for serializing data. It is one of the two libraries available that are really popular, and the second one is also developed by Google and is called ProtoBuf, which is used mostly for their other technology called gRPC. The FlatBuffers library is more lightweight and versatile, though, and you can use it for so much more than ProtoBuf.

I will be teaching the FlatBuffers schema language for most of this course. But a lot of the ideas taken from FlatBuffers are also applicable to ProtoBuf and gRPC communication. You will also be able to compile FlatBuffers for other languages as well and not just for C++—so you can have a C++ server and an EcmaScript client, for example.

This course is primarily taught on the Windows OS, but the knowledge gained can easily translate into other operating systems as well.

Enroll now

What's inside

Learning objectives

  • How to use serialize data
  • How to create flatbuffers
  • The difference between binary and json files
  • Writing efficient modern c++ code
  • The flatbuffers schema language in detail

Syllabus

Introduction
Promo
Welcome
FAQ
Read more
Course Overview
Setup
Software Used
Installing Visual Studio
Installing CMake
Installing Ninja
Installing Git
Project Setup
Hello, World!
Coding Standards
Dual Project Setup
Serialization
What is Data Serialization?
Simple Binary Serialization
Problems with Custom Serialization
FlatBuffers
Hello, Buffers!
FlatBuffers Dependency
FlatBuffers & CMake
Saving Buffer Data
Reading Buffer Data
Root Type
Enums
Structs vs Tables
Arrays
Optionals
Homework: Optionals
Unions
Object API
Serialize to JSON
Deserialize from JSON
Schema Updates
What now?
Bonus Materials

Save this course

Save Data Serialization in C++ using FlatBuffers to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Data Serialization in C++ using FlatBuffers with these activities:
Review C++ Fundamentals
Strengthen your understanding of C++ fundamentals, especially memory management and pointers, as FlatBuffers relies heavily on these concepts for efficient data handling.
Show steps
  • Review C++ syntax and data types.
  • Practice using pointers and references.
  • Study memory allocation and deallocation.
Data Structures and Algorithm Analysis in C++
Improve your understanding of data structures and algorithms to optimize FlatBuffers schemas for performance.
Show steps
  • Review relevant chapters on data structures like arrays, linked lists, and trees.
  • Analyze the time and space complexity of different data structures.
Effective Modern C++
Deepen your understanding of modern C++ practices to write more efficient and maintainable code when using FlatBuffers.
Show steps
  • Read selected chapters focusing on move semantics and smart pointers.
  • Implement examples from the book to solidify understanding.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Custom Serialization
Practice implementing custom binary serialization to understand the challenges that FlatBuffers aims to solve.
Show steps
  • Define a simple data structure.
  • Write functions to serialize and deserialize the data structure to a binary format.
  • Compare the performance and complexity of your custom solution with FlatBuffers.
Blog Post: FlatBuffers vs. JSON
Solidify your understanding of the benefits of FlatBuffers by creating a blog post comparing it to JSON serialization.
Show steps
  • Research the performance characteristics of FlatBuffers and JSON.
  • Write a blog post outlining the pros and cons of each approach.
  • Include benchmark results to support your claims.
Project: Game Save System
Apply your knowledge of FlatBuffers by creating a game save system that efficiently serializes and deserializes game state data.
Show steps
  • Design a FlatBuffers schema for your game save data.
  • Implement the serialization and deserialization logic in C++.
  • Test your save system with different game states.
Contribute to FlatBuffers
Deepen your understanding of FlatBuffers by contributing to the open-source project.
Show steps
  • Explore the FlatBuffers GitHub repository.
  • Identify a bug or feature request to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Data Serialization in C++ using FlatBuffers will develop knowledge and skills that may be useful to these careers:
Game Developer
A Game Developer uses programming skills to build engaging and interactive games. Data serialization is crucial in game development for saving game states, transmitting data between the client and server in multiplayer games, and efficiently managing game assets. This course helps game developers efficiently serialize data using FlatBuffers for C++, a skill invaluable in optimizing game performance. A game developer should take this course so that they can learn to quickly serialize game data for efficient and fast game loading and saving, to build networked games, and to manage game assets.
Software Engineer
Software Engineers design, develop, and maintain software systems. Data serialization is a fundamental aspect of software engineering, especially when dealing with data storage, inter-process communication, or network communication. This course helps software engineers learn about binary serialization and FlatBuffers, a method for serializing data developed by Google. With this course, software engineers can learn to efficiently handle data serialization in their projects, thereby ensuring data integrity and performance. Knowledge of serialization, especially using tools like FlatBuffers, helps them build robust and scalable applications.
Backend Developer
Backend developers focus on server-side logic, databases, and APIs that power web and mobile applications. Data serialization is a core skill for backend engineers, enabling them to transmit data between servers and clients efficiently. This course helps backend developers learn binary serialization and FlatBuffers, optimizing data transfer and storage. With the capability to serialize to and deserialize from JSON the Backend Developer can create APIs that seamlessly integrate with various front-end technologies and databases.
Data Engineer
Data Engineers are responsible for designing, building, and maintaining the infrastructure that supports data storage, processing, and analysis. Data serialization is crucial for efficiently storing and retrieving large datasets, as well as for transferring data between different systems. The course helps data engineers learn binary serialization and FlatBuffers, allowing them to optimize data pipelines and improve data processing performance. By learning schema updates, the Data Engineer can manage changes to data formats over time without disrupting existing systems.
Graphics Programmer
Graphics programmers develop software for rendering images, animations, and interactive graphics in video games, simulations, and other visual applications. Data serialization is crucial for managing and transferring graphical data efficiently. This course helps graphics programmers learn about binary serialization and FlatBuffers, which can enhance the performance of graphics rendering. With the knowledge of serialization techniques, a Graphics Programmer can optimize data transfer and storage in graphics applications.
Artificial Intelligence Engineer
Artificial Intelligence Engineers develop and deploy AI models and algorithms for various applications. Data serialization is crucial for managing large datasets used in training AI models. This course may be useful to Artificial Intelligence Engineers because it teaches binary serialization and FlatBuffers, which can optimize data handling in AI systems. The AI engineer can efficiently serialize data using FlatBuffers for C++, improving AI model training and performance.
Robotics Engineer
Robotics Engineers design, develop, and test robots and robotic systems. Data serialization is essential for robots to transmit sensor data, control signals, and other information between different components and systems. This course may be useful to Robotics Engineers because it teaches binary serialization and FlatBuffers in C++, which can be used to optimize data transfer in robotic systems. A Robotics Engineer will benefit from this course because they can use the knowledge to ensure seamless data exchange within robotic systems.
Systems Programmer
Systems programmers are responsible for developing and maintaining the core software components of operating systems and hardware platforms. Data serialization is a critical aspect of systems programming for managing data structures and communication between different parts of the system. This course may be useful to a Systems Programmer because they will learn binary serialization and FlatBuffers and optimize data handling in low-level systems. With knowledge of serialization, systems programmers can ensure efficient data management and communication.
Embedded Systems Engineer
Embedded Systems Engineers design and develop software for embedded systems used in various devices, such as IoT devices, automotive systems, and industrial controllers. Data serialization is vital in embedded systems for storing configuration data and transmitting sensor data between devices. This course may be useful because it teaches binary serialization and the use of FlatBuffers in C++, which can be essential of handling data serialization. An Embedded Systems Engineer will benefit from the course by learning how to serialize data efficiently in resource-constrained environments.
Financial Software Developer
Financial Software Developers create software solutions for financial institutions, including trading platforms, risk management systems, and banking applications. Data serialization is crucial in financial software for transmitting financial data securely and efficiently. This course may be useful to Financial Software Developers because they could serialize financial data using FlatBuffers in C++, optimizing performance and improving security. With knowledge of how to serialize, a Financial Software Developer can ensure accuracy and security of sensitive financial data.
High-Performance Computing Engineer
High Performance Computing Engineers design, develop, and optimize software for scientific simulations, data analysis, and other computationally intensive tasks. Data serialization is essential for managing large datasets and efficiently transferring data between different nodes in a high-performance computing cluster. This course may be useful to High Performance Computing Engineers because it teaches binary serialization and FlatBuffers, helping optimize data handling. A High Performance Computing Engineer will benefit from learning how to serialize and transfer data in high-performance computing environments.
Quantitative Analyst
A quantitative analyst, often working in the financial industry, develops and implements mathematical models for pricing securities, managing risk, and identifying trading opportunities. Data serialization plays a critical role in handling large financial datasets efficiently. This course may be useful to quantitative analysts, particularly with its focus on binary serialization using FlatBuffers. The ability to quickly serialize and deserialize data can significantly speed up model development and execution, enabling faster insights and decision-making.
Compiler Engineer
Compiler engineers design, develop, and maintain compilers, which translate high-level programming languages into machine code. Data serialization is important for managing intermediate representations of code and efficiently storing and retrieving compiler data. This course may be useful to compiler engineers, especially as it teaches binary serialization and FlatBuffers in C++. By efficiently managing and serializing data, compiler engineers can optimize compiler performance and reduce memory usage.
Database Developer
A database developer designs, implements, and maintains databases. Data serialization is a core concept, helping to convert data structures into a format that can be stored or transmitted and then reconstructed later. Taking this course may be useful to the database developer, who needs to find fast methods of preparing data for being sent and also read back. Learning FlatBuffers also enables them to serialize for other languages like JavaScript.
Network Engineer
Network Engineers design, implement, and manage computer networks. Data serialization is essential for transmitting data efficiently and reliably across networks. This course may be useful to Network Engineers because it teaches binary serialization and FlatBuffers, optimizing data transfer in network communications. With the knowledge gained, a Network Engineer can ensure efficient and effective data transmission across networks.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Data Serialization in C++ using FlatBuffers.
Provides in-depth coverage of modern C++ features, including move semantics, smart pointers, and lambda expressions. These features are crucial for writing efficient and safe C++ code, which is essential when working with FlatBuffers. While not directly about serialization, it provides the necessary C++ background. It is more valuable as additional reading to improve C++ skills.
Provides a solid foundation in data structures and algorithms, which are essential for understanding the performance implications of different serialization techniques. Understanding the underlying data structures will help you optimize your FlatBuffers schemas. This book is commonly used as a textbook at academic institutions.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser