Chapter 3
Preliminaries

 3.1 Summary of Development Tools and Best Practices
  3.1.1 General Resources
  3.1.2 Version Control (git)
  3.1.3 Building (CMake)
  3.1.4 Testing (CTest)
  3.1.5 Merge Requests (Gitlab)
 3.2 Documentation and Tutorials
  3.2.1 Dependencies
  3.2.2 Compiling the User Guide
  3.2.3 Developers Guide
  3.2.4 Compiling the code documentation
 3.3 Compiling Tutorials
 3.4 Core Nektar++ Programming Concepts
  3.4.1 Namespaces
  3.4.2 C++ Standard Template Library (STL)
  3.4.3 typedefs
  3.4.4 Forward Declarations
  3.4.5 Templated Classes and Specialization
  3.4.6 Multiple Inheritance and the virtual Keyword
  3.4.7 Virtual Functions and Inheritance
  3.4.8 Const keyword
  3.4.9 Function pointers and bind
  3.4.10 Memory Pools and NekArray
 3.5 Design Patterns
  3.5.1 Template pattern
  3.5.2 Abstract Factory Pattern
 3.6 Software Testing Approaches
  3.6.1 Unit Tests
  3.6.2 Integration, System and Regression Tests
  3.6.3 Performance Tests
  3.6.4 Continuous Integration