This course gives an overview of Boost: a set of C++ libraries designed to cover some of the functionality that's missing from the STL. This course covers the libraries that are used for storing optional values (Boost.Optional), reading program options (Boost.ProgramOptions), storing any type of value in a generic container (Boost.Any), implementing the signal/slot paradigm (a.k.a Observer pattern) (Boost.Signals2), working with the local file system (Boost.Filesystem), and also covers an assortment of smaller libraries including Boost string algorithms, Boost.Bimap, and Boost.Units.
Have you been waiting for a cross-platform application framework for C++ that lets you do everything from creating daemons to writing elegant desktop GUIs? Wait no more. Get up to speed quickly on the Qt Framework using a real world example. This course will teach you both critical portions of the Qt Framework, and how to use the tools that come with the framework including the very powerful Qt Creator IDE. By the end of this course, you'll be comfortable building GUI front ends for the desktop as well as learning how to work with JSON data files and the Networking components of Qt. You'll also become a pro at using the signals and slots mechanism for communicating between classes and processes. This course expects you to already know the C++ programming language.
This course presents the C++ programming language for programmers who already have some experience programming in another object-oriented language such as C#, Java, or a similar language. The course focuses on the differences between C++ and other languages, specifically on C++'s lack of garbage collection and the requirement for manual memory management. The course covers the basics of C++ data types, its core data structures, and also presents some of the more popular aspects of the C++ Standard Library.
Once you know the basic of C++ syntax and what the Standard Library offers you, it’s time to establish whether you’re writing good code or not. Modern C++ is expressive, readable, fast, and secure. In most cases the faster thing to do is also the easier thing to do and the safer thing to do – no tradeoffs! In this course you’ll draw on your C++ Fundamentals knowledge to explore a number of ways to ensure your applications are implemented in Modern C++, not C-With-Classes or other old-style idioms. You’ll take advantage of the Standard Library and write code that is future proof and safe.
Good C++ developers know more than just the syntax of the language: they know the libraries that come with it, and they know when to use a particular feature. In this sequel to C++ Fundamentals, you'll learn those things. A quick overview of the Standard Library will provide you with collections, algorithms to work with collections, and string manipulation capabilities, as well as signposts to more Standard Library capabilities. Then perhaps the most important C++11 language change, lambdas, are explained and put in context. Finally exceptions, a powerful error-handling technique, are introduced and you will see their significance for resource and memory management. With the modern C++ foundations complete, the last module of this course goes back in time to the sorts of syntax and idioms you're likely to find in older code, including typedefs, function pointers, void pointers, and C-style strings and arrays. Modern C++ developers must cope with legacy code and this module will show you how.
C++ is a general purpose programming language that is used by millions of developers. It offers a powerful combination of performance and abstraction that other languages don’t have. You can use C++ to write different kinds of applications for a variety of platforms. In this course, I’ll cover basics of language syntax – declaring variables, classes, building expressions using operators and functions – and work up to templates, pointers, const, and polymorphism. I’ll be using the principles of “modern C++” as much as possible, relying on the Standard Library and using idioms like Resource Acquisition is Initialization to reduce the effort involved in memory management. Some people are scared of C++, but I’ll show you how to approach the language without fear.
C++ has a reputation for being a very difficult language to learn, and to use well. Changes to the language and the library that accompanies it have changed that. Beginners can now learn C++ and write real applications. In this course you'll learn the important parts of C++ 11 syntax, get an introduction to the most useful parts of the Standard Library, and be challenged to write applications yourself in addition to watching someone else write and explain code.
This course is about the practical application of the modern C++ language. Itâ€™s about using (and creating) modern C++ libraries. Youâ€™re going to learn how to use a modern C++ style of programming. You will see how it helps to turn C++ into a modern language thatâ€™s intuitive and elegant. This course covers the essential skills needed by any C++ developer to handle resources and write efficient classes that work well with standard containers. You will also learn all about the standard smart pointers, containers, strings, and regular expressions. Along the way, youâ€™ll pick up essential tips and tricks to get the best out of modern C++ using C++11 and beyond.
This course will show you how to build context-menu shell extensions for Windows, using the C++ programming language. COM is not a prerequisite, since basic COM elements for shell extensions programming will be introduced in the first module. In this course I'll use both pure C++ (without the help of any framework), and C++ with ATL (which is a mature industry standard framework for doing COM development in C++ on Windows). I'll introduce a couple of different techniques for building context-menu shell extensions: one based on the IExecuteCommand COM interface, and another based on the IContextMenu COM interface.
This course will introduce you to modern C++ concurrency on the Windows operating system. Unfortunately, standard or portable concurrency is still in its infancy so a comprehensive study of concurrency cannot get away from the practical and platform-specific aspects of the craft. As such, this course uses the Windows operating system as the playground to explore concurrency in C++. This course will prepare you with a deep understanding of threads and synchronization at the OS level, including modern synchronization primitives such as slim reader/writer locks and condition variables. You will learn all about the mighty Windows thread pool API and the Concurrency Runtime. Finally, you will be introduced to some of the shortcomings that plague the C++11 Thread Support Library.
Visual C++ has a bad reputation for productivity when compared with its .NET counterparts in the Visual Studio family. While I won’t argue with the fact that simple tasks can often be a little more complicated in C++, the benefits are often worthwhile. From faster and more responsive apps to dramatically reduced memory usage and more predictable resource management. These are all critical factors when producing apps for a new generation of increasingly mobile devices. In this course you’re going to discover many techniques to search, sort and generate text and XML. You’ll discover effective ways to access the web, communicate with web sockets, and access databases on Windows Azure. You’re going to learn how to master long file paths, layered windows, and how to use SQLite. You’ll discover that writing high-DPI application’s needn’t be hard and how to apply cryptography to keep the bad guys out. There’s something here for everyone!
The C++ Language and the Standard Library both changed dramatically with the release of C++ 11. Some of these features were not implemented until Visual Studio 2013, and those are presented in this course. You'll learn about variadic templates, improvements in constructing and initializing variables, and rawnstring literals. In addition a number of productivity boosting enhancements in debugging, editing, and using libraries are in this version and you will learn how to take advantage of them.
GCC 4.8 is the first version of the compiler to have complete support for all the C++ features added in the C++11 version of the standard. This course will provide you with detailed information about all of the changes made to the language since C++98/03 and their implementation in GCC.
This course provides an introduction to Cinder using C++. Cinder is a community-developed, free and open source library for professional-quality creative coding in C++. Topics ranging from the basic architecture of a Cinder application, to 2D basic drawing, handling user input, image processing basics, face detection, OpenCV integration, and animation basics are included. An elementary knowledge of C++ should be just fine to follow the course, though more advanced aspects of the language and of the STL libraries will be discussed when needed.
This course gives a practical introduction to the Windows Runtime (WinRT), the foundational technology that underpins the future of the Windows API. You'll learn what lies beneath the different language projections, how WinRT relates to COM and .NET, and how to implement COM and Windows Runtime classes with modern C++, Windows Runtime strings, and Windows Runtime components developed in Standard C++.
DirectComposition is the primary API for the Windows composition engine. Have you ever wondered what the DWM process is up to? Did you wish you could tap into some of its power? Then this course is for you. The DirectComposition API enables you to build the highest-performance native graphics applications using a "retained mode" graphics API. The composition engine retains a visual tree of bitmaps that may be rendered with "immediate mode" graphics APIs such as Direct2D or Direct3D. You get the best of both worlds and can achieve visual effects at a performance level that was never possible prior to the introduction of the DirectComposition API. This course will give you a practical tour of the API by showing you how to build a DirectX-based card game from scratch, producing animated transitions for a visually engaging user interface.
This course introduces D, a systems programming language designed to offer the same power and flexibility as C++ coupled with the convenience of features found in modern programming languages such as C# or Java. D is a native, compiled object-oriented programming language that manages to avoid some of C/C++ shortcomings such as imprecise data types or the need for manual memory management. On the other hand, D lends itself to performance-critical tasks: if needed, it supports various performance-improving approaches such as an ability to disable array bound checks. This course covers the basic features of D, such as its type system, support for error handling, the way it handles OOP as well as D's approach to concurrency.
C is a systems programming language and sits at the heart of practically every computing device imaginable. It offers unrivaled performance and supports more devices, processors, and micro-controllers than any other language. This course aims to get you up to speed with the C programming language and libraries. You will learn everything from installing popular compilers, how to compile programs at the command prompt, and how to make sense of the C programming language and libraries.
Eclipse really is a full-featured IDE. If you’re just using it as a glorified editor and compiler then you’re missing out. The debugger is extremely powerful and the time you spend learning it will most likely be repaid many times over. Knowing how to solve problems and optimize performance by modifying the Eclipse.ini can be a life-saver. However, you need to be armed with some basic knowledge. If Eclipse doesn’t do everything you need in your workflow, chances are good you can find a plug-in that will add any critical missing functionality. We’ll explore all this and more in part 2 of the Eclipse Guided Tour.
This introductory course on CUDA shows how to get started with using the CUDA platform and leverage the power of modern NVIDIA GPUs. It covers the basics of CUDA C, explains the architecture of the GPU and presents solutions to some of the common computational problems that are suitable for GPU acceleration.
Eclipse is a powerful open-source software development framework that runs on multiple platforms and is suitable for developing programs in many languages. Target applications can run on anything from the desktop or mobile device down to tiny 8 bit embedded processors. This course will focus on Java and C++ development but most of the content is applicable for developers in any language. This course is aimed at developers new to Eclipse AND for those that have already used Eclipse but haven't explored the full power of the IDE. Once you finish the course you'll be coding more and typing less.
This is the second in a series of courses exploring the essentials of COM and the Windows Runtime. In this second course, you are going to learn everything you need to know to understand and use the classic COM runtime. You will learn how to implement COM servers from scratch, including activation through class objects, registration, and class factories. You will learn techniques for reliably registering COM servers with the Kernel Transaction Manager and how to support registration-free activation. You will learn how a COM server keeps track of its lifetime requirements, and how COM clients may schedule COM servers to be unloaded. Finally, you’re going to be introduced to COM’s remoting architecture, including local and remotable interfaces, proxies and stubs, IDL and the MIDL compiler. Having completed these two courses on the essentials of COM, you be in a great position to start learning about the Windows Runtime.
This is the first in a series of courses exploring the essentials of COM and the Windows Runtime. In this first course, you are going to learn everything you need to know to use COM confidently and effectively. This course explores the history of COM. You will learn about how C++ shaped the design of COM. You will learn the essentials of compilation and linking, fundamental to the idea of dynamically linking applications and components together. By the end of this course you will have a thorough understanding of COM’s IUnknown interface, how and why it works the way it does, how to implement it, how to use it, and how to wrap it up in a safe and efficient manner with modern C++ libraries
This is an intense crash course in DirectX programming. You’re going to learn about Direct3D, DXGI, devices, swap chains, but it’s more than that. This course is about developing awesome applications for Windows. You’re going to learn how to develop applications that can run cross-platform, reaching the Windows desktop, Windows Store, and Windows Phone environments. You’re going to learn about performance and efficiency. You’re going to learn how to produce high-quality animation. Moreover, you’re going to do it all in C++.
Direct2D is a native, immediate-mode, graphics rendering library that provides uncompromising performance. Its focus is on two-dimensional rendering, providing a rich array of primitives for rendering vector graphics, bitmaps and text. It’s designed to squeeze as much out of the underlying Direct3D-based GPU as humanly possible while retaining a surprisingly enjoyable API surface. In this course, you’ll learn the fundamentals of Direct2D programming and be well on your way to building rich user experiences using the same rendering engine as Internet Explorer 10.
C is a simple yet powerful multi-purpose programming language that sits at the heart of virtually every computing device imaginable. It offers unparalleled performance and supports the widest breadth of devices and platforms. It is ideally suited to environments with strict, real-time constraints like kernel-mode and in particular to embedded systems programming. Whether you plan on learning C as a foundation for C++ or to prepare yourself for embedded programming, this course will give you a solid foundation and show you that C need not be feared.