Generated Topic Graph

cluster_fh2021 WS2023/24: Group Project - Tasks cluster_linux Linux cluster_linux_kernel Linux Kernel Driver Development cluster_linux_ssh SSH: Secure Shell cluster_linux_ssh_exercises Exercises: SSH cluster_linux_basics Linux Basics cluster_linux_basics_intro Introduction: Concepts and Terminology cluster_linux_basics_archiving_compression Archiving and Compression cluster_linux_basics_shell The Shell (Bash - “Bourne Again Shell”) cluster_linux_basics_shell_exercises The Shell - Exercises cluster_linux_basics_shell_exercises_ls Exercises: The ls Command cluster_linux_basics_shell_exercises_cp_mv_mkdir_rm Exercises: Create/Copy/Move/Remove cluster_linux_basics_permissions File System Permissions cluster_linux_basics_permissions_exercises Exercises: File System Permissions cluster_linux_basics_io_redir_pipes I/O Redirection And Pipes cluster_linux_basics_exercises Exercises/Exams: Linux Basics cluster_linux_basics_text_tools Tools: Inspecting Text Files cluster_linux_toolchain Toolchain, And Cross Development cluster_linux_toolchain_exercises Exercises: Toolchain cluster_linux_toolchain_raspi Case Study: Raspberry Toolchain cluster_linux_toolchain_cross Cross Development cluster_linux_hardware Linux Hardware Interfaces cluster_linux_hardware_can CAN Bus With Linux And Python cluster_linux_sysprog Linux Systems Programming cluster_linux_sysprog_blocking_io Blocking I/O: What Is That? cluster_linux_sysprog_fileio File I/O cluster_linux_sysprog_scheduling Scheduling cluster_linux_sysprog_posix_threads POSIX Threads cluster_linux_sysprog_intro_hw Introductory Live Hacking, Hardware-Wise (sysfs GPIO) cluster_linux_sysprog_process Processes cluster_linux_sysprog_basics Linux Systems Programming: Basics cluster_clean_code Is Software A Craft? Software Is A Craft! ⟶ Clean Code cluster_clean_code_features Features cluster_clean_code_bugs Bugs cluster_clean_code_refactoring Refactoring cluster_unittest Unit Testing With googletest cluster_cmake CMake cluster_cmake_intro CMake: Introduction cluster_cmake_advanced CMake: Advanced Topics cluster_cmake_advanced_language The Language cluster_ecproposal Graph cluster_ecproposal_ec2 Embedded Computing 2 cluster_ecproposal_ec2_python Python cluster_ecproposal_ec1 Embedded Computing 1 cluster_ecproposal_ec1_linux Linux cluster_ecproposal_ec1_mt Multithreading cluster_ecproposal_ec1_cxx C++ cluster_ece19 ECE19: Exercises and Custom Topics cluster_python Python Programming cluster_python_basics Python: The Language Fundamentals cluster_python_exercises Exercises cluster_python_exercises_legacy Exercises (Legacy) cluster_python_exercises_csv CSV and Databases cluster_python_exercises_sensors Sensors, And Data Acquisition (Exercise Series) cluster_python_exercises_herdt Exercises (External) cluster_python_exercises_userdb User Database (Exercise Series) cluster_python_advanced Python: More Language Features cluster_python_advanced_oo Object Oriented Programming cluster_python_advanced_multithreading Multithreading cluster_python_db Databases cluster_python_misc Python: Miscellaneous Topics cluster_python_misc_ai Machine Learning, Artificial Intelligence cluster_python_misc_pandas Pandas cluster_python_drafts Python: Draft Topics cluster_python_swdev Python: Project/Package Management cluster_python_swdev_pytest PyTest cluster_cxx11 The New C++ (11-…) cluster_cxx11_functions_functions Functions, Functions cluster_cxx11_smart_pointers Smart Pointers (std::unique_ptr, std::shared_ptr) cluster_cxx11_embedded_problems Embedded Problems? Code Bloat? Type Erasure? Solutions? cluster_cxx11_miscellaneous Miscellaneous cluster_cxx11_new_language_features New Language Features cluster_cxx11_new_language_features_lambda Lambda cluster_cxx11_new_language_features_coroutines Coroutines cluster_cxx11_new_language_features_concepts Concepts cluster_cxx11_new_language_features_move_pf Move Semantics, Rvalue References cluster_cxx11_new_language_features_ranges Ranges cluster_cxx11_new_language_features_brace_initialization Brace Initialization (Uniform Initialization) cluster_cxx11_multithreading Multithreading cluster_cxx11_introduction Introduction cluster_cxx11_exercises Exercises cluster_cxx03 C++ cluster_cxx03_inheritance_oo Inheritance And Object Oriented Design cluster_cxx03_functions_and_methods Functions and Methods cluster_cxx03_data_encapsulation Data Encapsulation cluster_cxx03_stl Standard Template Library cluster_cxx03_stl_associative_containers Associative Containers cluster_cxx03_stl_algorithm Algorithms cluster_cxx03_stl_sequential_containers Sequential Containers cluster_cxx03_stl_allocator Allocators cluster_cxx03_stl_exercises STL: Exercises cluster_cxx03_stl_exercises_reverse_string Exercise: Reverse A String cluster_cxx03_templates C++ Template Basics cluster_cxx03_exceptions Exceptions cluster_cxx03_standard_library_miscellanea The Standard Library: Miscellaneous Topics cluster_cxx03_exercises_userdb Exercises: User Database cluster_cxx03_exercises_misc Exercises: Miscellaneous cluster_cxx03_dynamic_memory Dynamic Memory Allocation, Resource Management cluster_c The C Programming Language cluster_c_program_sanity Program Sanity cluster_c_pointers_and_arrays Pointers and Arrays cluster_c_functions_and_program_structure Functions and Program Structure cluster_c_types_operators_expressions Types, Operators, Expressions cluster_c_introduction Introduction cluster_c_structures Structures cluster_c_performance Performance cluster_c_program_flow Program Flow cluster_c_profiling Profiling cluster_c_memory Memory cluster_c_advanced_language_features Advanced Language Features cluster_project_xxx I2S Audio for a Kontron SMARC Module cluster_cxx C++: Miscellaneous Live-Hacking cluster_cxx_exercises C++ Exercises cluster_cxx_exercises_stl C++ Exercises: Standard Template Library cluster_cxx_exercises_stl_sensor_repository Exercises: Sensor Repository (std::map) cluster_cxx_exercises_design_patterns Exercises: Design Patterns cluster_cxx_exercises_design_patterns_solutions Solutions cluster_cxx_exercises_fh_sensor_first_try FH Sensor OO (First Try) cluster_cxx_design_patterns Design Patterns With C++ fh2021_mqtt_tkinter Python MQTT Subscriber fh2021_sensor_w1 (DONE) Onewire Sensor fh2021_sensor_interface (DONE) Sensor Interface fh2021_sensor_w1->fh2021_sensor_interface fh2021_boiling_pot_display Boiling Pot: Display, And Status Reporting fh2021_boiling_pot (DONE) Boiling Pot (The Beginning) fh2021_boiling_pot_display->fh2021_boiling_pot fh2021_display_infrastructure Display Interface/Infrastructure fh2021_boiling_pot_display->fh2021_display_infrastructure fh2021_boiling_pot->fh2021_sensor_interface fh2021_switch_interface (DONE) Switch Interface fh2021_boiling_pot->fh2021_switch_interface fh2021_pwm_display Temperature Display: LED Via A PWM Controller fh2021_display_infrastructure->fh2021_pwm_display fh2021_display_infrastructure->fh2021_switch_interface fh2021_boiling_pot_full_integration Boiling Pot: Full Integration (Display And IoT) fh2021_boiling_pot_full_integration->fh2021_boiling_pot_display fh2021_boiling_pot_full_integration->fh2021_display_infrastructure fh2021_boiling_pot_basic_integration Boiling Pot: Basic Integration fh2021_boiling_pot_full_integration->fh2021_boiling_pot_basic_integration fh2021_datalogger_mqtt_sink Data Logger: MQTT Sink fh2021_boiling_pot_full_integration->fh2021_datalogger_mqtt_sink fh2021_boiling_pot_basic_integration->fh2021_sensor_w1 fh2021_boiling_pot_basic_integration->fh2021_boiling_pot fh2021_sysfs_gpio_switch SysFS GPIO Switch fh2021_boiling_pot_basic_integration->fh2021_sysfs_gpio_switch fh2021_datalogger (DONE) Data Logger fh2021_datalogger_mqtt_sink->fh2021_datalogger fh2021_datalogger_integration Data Logger: Integration fh2021_datalogger_integration->fh2021_datalogger_mqtt_sink fh2021_datalogger_integration->fh2021_datalogger fh2021_datalogger_csv_sink Data Logger: CSV Sink fh2021_datalogger_integration->fh2021_datalogger_csv_sink fh2021_datalogger_csv_sink->fh2021_datalogger fh2021_libgpiod_switch libgpiod Switch fh2021_libgpiod_switch->fh2021_switch_interface fh2021_sysfs_gpio_switch->fh2021_switch_interface linux_kernel_mutex_coding Coding: Fix Race Condition (Mutex) linux_kernel_multiple_devices Coding: Multiple Devices linux_kernel_mutex_coding->linux_kernel_multiple_devices linux_kernel_mutex Mutex (and RT Mutex) linux_kernel_mutex_coding->linux_kernel_mutex linux_kernel_cdev_refactoring Coding: Refactoring linux_kernel_multiple_devices->linux_kernel_cdev_refactoring linux_kernel_process_vs_atomic Process vs.Atomic Context linux_kernel_mutex->linux_kernel_process_vs_atomic linux_kernel_usermem Accessing Userspace Memory linux_kernel_workqueue Workqueue linux_kernel_usermem->linux_kernel_workqueue linux_kernel_workqueue->linux_kernel_process_vs_atomic linux_kernel_timer_coding Coding: Timed Event linux_kernel_workqueue->linux_kernel_timer_coding linux_kernel_modules_hello_world Module Loading, Hello World linux_kernel_fedora_module_build Fedora: Building External Kernel Modules linux_kernel_modules_hello_world->linux_kernel_fedora_module_build linux_kernel_fedora_kernel_build Fedora: Building the Kernel linux_kernel_fedora_module_build->linux_kernel_fedora_kernel_build linux_kernel_cdev_auto Modern Character Devices linux_kernel_cdev_manual Character Device Basics linux_kernel_cdev_auto->linux_kernel_cdev_manual linux_kernel_cdev_manual->linux_kernel_modules_hello_world linux_kernel_interrupt Interrupts linux_kernel_interrupt->linux_kernel_process_vs_atomic linux_kernel_kmalloc Dynamic Memory: kmalloc() linux_kernel_kmalloc->linux_kernel_process_vs_atomic linux_kernel_spinlock Spinlock (vs. Mutex) linux_kernel_spinlock->linux_kernel_process_vs_atomic linux_kernel_iomemory IO Memory linux_kernel_iomemory->linux_kernel_modules_hello_world linux_kernel_interrupt_coding Coding: Raspi GPIO Interrupts linux_kernel_interrupt_coding->linux_kernel_mutex_coding linux_kernel_interrupt_coding->linux_kernel_interrupt linux_kernel_raspi_kernel_build Raspberry Pi: Building the Kernel linux_kernel_interrupt_coding->linux_kernel_raspi_kernel_build linux_kernel_cdev_first_functionality Coding: First Functionality linux_kernel_cdev_refactoring->linux_kernel_cdev_first_functionality linux_kernel_cdev_first_functionality->linux_kernel_kmalloc linux_kernel_list Doubly Linked Lists linux_kernel_cdev_first_functionality->linux_kernel_list linux_kernel_cdev_file_operations File Operations on Character Devices linux_kernel_cdev_first_functionality->linux_kernel_cdev_file_operations linux_kernel_pci PCI linux_kernel_pci->linux_kernel_interrupt linux_kernel_pci->linux_kernel_iomemory linux_kernel_dma DMA linux_kernel_pci->linux_kernel_dma linux_kernel_dma->linux_kernel_kmalloc linux_kernel_spinlock_coding Coding: Fix Sleep While Atomic linux_kernel_spinlock_coding->linux_kernel_spinlock linux_kernel_spinlock_coding->linux_kernel_interrupt_coding linux_kernel_cdev_file_operations->linux_kernel_cdev_auto linux_kernel_stub_sysprog_dup dup(), fork(), and Reference Counting (Stub) linux_kernel_cdev_file_operations->linux_kernel_stub_sysprog_dup linux_kernel_timer Timer Management linux_kernel_timer->linux_kernel_process_vs_atomic linux_kernel_timer_coding->linux_kernel_spinlock_coding linux_kernel_timer_coding->linux_kernel_timer linux_kernel_netdev Network Devices linux_kernel_netdev->linux_kernel_interrupt linux_kernel_netdev->linux_kernel_dma linux_kernel_waitqueue Waiting for Something linux_kernel_waitqueue->linux_kernel_usermem linux_kernel_waitqueue->linux_kernel_cdev_file_operations linux_ssh_key_pair SSH: Public Key Authentication linux_ssh_basics SSH: Basics linux_ssh_key_pair->linux_ssh_basics linux_basics_intro_login Login? What Is That? linux_ssh_key_pair->linux_basics_intro_login linux_ssh_scp SSH: Secure Copy (scp) linux_ssh_scp->linux_ssh_basics linux_ssh_basics->linux_basics_intro_login linux_ssh_links SSH: Links linux_ssh_portforwarding SSH: Port Forwarding linux_ssh_portforwarding->linux_ssh_basics linux_ssh_sshfs SSH File System (sshfs) linux_ssh_sshfs->linux_ssh_basics linux_ssh_exercises_copy_file Exercise: Copy a File To Remote Machine, And Verify linux_ssh_exercises_copy_file->linux_ssh_key_pair linux_ssh_exercises_copy_file->linux_ssh_scp linux_ssh_exercises_copy_file->linux_ssh_basics linux_ssh_exercises_pubkey Exercise: Create SSH Key Pair linux_ssh_exercises_copy_file->linux_ssh_exercises_pubkey linux_ssh_exercises_pubkey->linux_ssh_key_pair linux_ssh_exercises_copy_tree Exercise: Copy a Tree To Remote Machine (And Adjust Permissions) linux_ssh_exercises_copy_tree->linux_ssh_key_pair linux_ssh_exercises_copy_tree->linux_ssh_scp linux_ssh_exercises_copy_tree->linux_ssh_basics linux_ssh_exercises_copy_tree->linux_ssh_exercises_copy_file linux_ssh_exercises_copy_tree->linux_ssh_exercises_pubkey linux_basics_intro_process_tree Process Hierarchy (Parent, Child Process) linux_basics_intro_login->linux_basics_intro_process_tree linux_basics_intro_environment Environment (Variables) linux_basics_intro_process Processes, Scheduling, Address Spaces linux_basics_intro_environment->linux_basics_intro_process linux_basics_intro_overview Overview linux_basics_intro_process->linux_basics_intro_overview linux_basics_intro_demo_everything_is_a_file Everything Is A File (Live Demo) linux_basics_intro_demo_everything_is_a_file->linux_basics_intro_overview linux_sysprog_blocking_io_blocking_io_file Blocking I/O (On A File): What is That? linux_basics_intro_demo_everything_is_a_file->linux_sysprog_blocking_io_blocking_io_file linux_basics_intro_process_tree->linux_basics_intro_process linux_basics_intro_wsl Windows Subsystem for Linux (WSL) linux_basics_intro_wsl->linux_basics_intro_overview linux_basics_intro_fh_moodle_quiz Quiz: Linux Basics linux_basics_intro_fh_moodle_quiz->linux_basics_intro_process linux_basics_intro_fh_moodle_quiz->linux_basics_intro_overview linux_basics_intro_fh_moodle_quiz->linux_basics_intro_demo_everything_is_a_file linux_basics_intro_fh_moodle_quiz->linux_sysprog_blocking_io_blocking_io_file linux_basics_archiving_compression_tar tar linux_basics_archiving_compression_gzip gzip linux_basics_archiving_compression_tar->linux_basics_archiving_compression_gzip linux_basics_shell_commandline Commandline linux_basics_archiving_compression_tar->linux_basics_shell_commandline linux_basics_archiving_compression_overview Archiving and Compression linux_basics_archiving_compression_overview->linux_basics_shell_commandline linux_basics_archiving_compression_gzip->linux_basics_archiving_compression_overview linux_basics_archiving_compression_gzip->linux_basics_shell_commandline linux_basics_archiving_compression_exercises Exercises: Archiving And Compression linux_basics_archiving_compression_exercises->linux_basics_archiving_compression_tar linux_basics_archiving_compression_exercises->linux_basics_archiving_compression_gzip linux_basics_shell_file_dir_create_rm Creating And Removing Files and Directories linux_basics_shell_paths Absolute and Relative Paths linux_basics_shell_file_dir_create_rm->linux_basics_shell_paths linux_basics_shell_cwd Current Working Directory linux_basics_shell_file_dir_create_rm->linux_basics_shell_cwd linux_basics_shell_ls Directory Listings: The ls Command linux_basics_shell_ls->linux_basics_intro_overview linux_basics_shell_ls->linux_basics_shell_paths linux_basics_shell_ls->linux_basics_shell_cwd linux_basics_shell_special_paths Special Paths linux_basics_shell_ls->linux_basics_shell_special_paths linux_basics_shell_paths->linux_basics_shell_commandline linux_basics_shell_cwd->linux_basics_intro_process linux_basics_shell_cwd->linux_basics_shell_paths linux_basics_shell_cwd->linux_basics_shell_commandline linux_basics_shell_cp Copying: cp linux_basics_shell_cp->linux_basics_shell_file_dir_create_rm linux_basics_shell_cp->linux_basics_shell_paths linux_basics_shell_commandline->linux_basics_intro_overview linux_basics_shell_fh_moodle_quiz FH/Moodle Quiz: Shell linux_basics_shell_fh_moodle_quiz->linux_basics_shell_paths linux_basics_shell_configfiles Shell Configuration File: ~/.bashrc linux_basics_shell_configfiles->linux_basics_intro_environment linux_basics_shell_special_paths->linux_basics_shell_paths linux_basics_shell_links Symbolic Links, Hard Links linux_basics_shell_links->linux_basics_shell_ls linux_basics_shell_mv Moving and Renaming: mv linux_basics_shell_mv->linux_basics_shell_file_dir_create_rm linux_basics_shell_mv->linux_basics_shell_paths linux_basics_shell_mv->linux_basics_shell_cp linux_basics_shell_exercises_ls_etc_passwd_size Exercise: Size of /etc/passwd linux_basics_shell_exercises_ls_etc_passwd_size->linux_basics_shell_ls linux_basics_shell_exercises_ls_home_permissions Exercise: Permissions of Home Directory linux_basics_shell_exercises_ls_home_permissions->linux_basics_shell_ls linux_basics_shell_exercises_ls_dev_types Exercise: File Types in /dev linux_basics_shell_exercises_ls_dev_types->linux_basics_shell_ls linux_basics_shell_exercises_cp_mv_mkdir_rm_rm_rf Exercise: Funny Stuff linux_basics_shell_exercises_cp_mv_mkdir_rm_rm_rf->linux_basics_shell_file_dir_create_rm linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files Exercise: Create Files (I/O Redirection) linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files->linux_basics_shell_file_dir_create_rm linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files->linux_basics_shell_paths linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files->linux_basics_shell_cwd linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r Exercise: mkdir linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files->linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r->linux_basics_shell_file_dir_create_rm linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r->linux_basics_shell_cwd linux_basics_shell_exercises_cp_mv_mkdir_rm_copy_tree Exercise: Copy Directory Tree linux_basics_shell_exercises_cp_mv_mkdir_rm_copy_tree->linux_basics_shell_cp linux_basics_shell_exercises_cp_mv_mkdir_rm_verify_hierarchy Exercise: Verify, Repeat linux_basics_shell_exercises_cp_mv_mkdir_rm_copy_tree->linux_basics_shell_exercises_cp_mv_mkdir_rm_verify_hierarchy linux_basics_shell_exercises_cp_mv_mkdir_rm_verify_hierarchy->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files linux_basics_shell_exercises_cp_mv_mkdir_rm_verify_hierarchy->linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_copy_files Exercise: Copy Files linux_basics_shell_exercises_cp_mv_mkdir_rm_verify_hierarchy->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_copy_files linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_move_files Exercise: Move Files linux_basics_shell_exercises_cp_mv_mkdir_rm_verify_hierarchy->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_move_files linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_copy_files->linux_basics_shell_file_dir_create_rm linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_copy_files->linux_basics_shell_cp linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_copy_files->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_copy_files->linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_move_files->linux_basics_shell_ls linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_move_files->linux_basics_shell_cp linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_move_files->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_move_files->linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r linux_basics_shell_exercises_cp_mv_mkdir_rm_rm_tree Exercise: Remove Directory Tree linux_basics_shell_exercises_cp_mv_mkdir_rm_rm_tree->linux_basics_shell_file_dir_create_rm linux_basics_shell_exercises_cp_mv_mkdir_rm_rm_tree->linux_basics_shell_exercises_cp_mv_mkdir_rm_copy_tree linux_basics_permissions_basics Permissions: Mode, User and Group Ownership linux_basics_permissions_basics->linux_basics_shell_ls linux_basics_permissions_sticky Ugly Hack: Sticky Bit linux_basics_permissions_sticky->linux_basics_permissions_basics linux_basics_permissions_umasks Default Permissions: umask linux_basics_permissions_umasks->linux_basics_shell_file_dir_create_rm linux_basics_permissions_umasks->linux_basics_permissions_basics linux_basics_permissions_setuid SetUID Programs: passwd, sudo, … linux_basics_permissions_setuid->linux_basics_permissions_basics linux_basics_permissions_setuid_livedemo SetUID: Live Demo linux_basics_permissions_setuid_livedemo->linux_basics_permissions_setuid linux_basics_permissions_fh_moodle_quiz_nocheat FH/Moodle Quiz: Permissions linux_basics_permissions_fh_moodle_quiz_nocheat->linux_basics_permissions_basics linux_basics_permissions_fh_moodle_quiz FH/Moodle Quiz: Permissions linux_basics_permissions_fh_moodle_quiz->linux_basics_permissions_basics linux_basics_permissions_exercises_private_directory Exercise: Create Private Directory linux_basics_permissions_exercises_private_directory->linux_basics_permissions_basics linux_basics_permissions_exercises_credentials Exercise: Determine Your User Credentials linux_basics_permissions_exercises_private_directory->linux_basics_permissions_exercises_credentials linux_basics_permissions_exercises_credentials->linux_basics_intro_login linux_basics_permissions_exercises_credentials->linux_basics_permissions_basics linux_basics_permissions_exercises_private_directory_question Question: Private Directory linux_basics_permissions_exercises_private_directory_question->linux_basics_permissions_basics linux_basics_permissions_exercises_private_directory_question->linux_basics_permissions_exercises_private_directory linux_basics_permissions_exercises_public_directory_question Question: Public Directory linux_basics_permissions_exercises_public_directory Exercise: Create Public Directory linux_basics_permissions_exercises_public_directory_question->linux_basics_permissions_exercises_public_directory linux_basics_permissions_exercises_public_directory->linux_basics_permissions_basics linux_basics_permissions_exercises_public_directory->linux_basics_permissions_exercises_credentials linux_basics_permissions_exercises_shared_file Exercise: Create Group-Shared File linux_basics_permissions_exercises_shared_file->linux_basics_permissions_basics linux_basics_permissions_exercises_shared_file->linux_basics_permissions_exercises_credentials linux_basics_io_redir_pipes_exercises Exercises: IO-Redirection, Pipes linux_basics_io_redir_pipes_io_redir I/O Redirection linux_basics_io_redir_pipes_exercises->linux_basics_io_redir_pipes_io_redir linux_basics_io_redir_pipes_io_redir_swap_stdout_stderr I/O Redirection: Swap stdout And stderr linux_basics_io_redir_pipes_exercises->linux_basics_io_redir_pipes_io_redir_swap_stdout_stderr linux_basics_io_redir_pipes_pipes Pipes linux_basics_io_redir_pipes_exercises->linux_basics_io_redir_pipes_pipes linux_basics_io_redir_pipes_io_redir->linux_basics_shell_commandline linux_basics_io_redir_pipes_io_redir_swap_stdout_stderr->linux_basics_io_redir_pipes_io_redir linux_basics_io_redir_pipes_pipes->linux_basics_shell_commandline linux_basics_io_redir_pipes_pipes->linux_basics_io_redir_pipes_io_redir linux_basics_exercises_FH_SS2022_EXAM_01_G2 Exam (ECE/SS2022/G2): Do A Lot With Files And Directories linux_basics_exercises_FH_SS2022_EXAM_01_G2->linux_basics_shell_ls linux_basics_exercises_FH_SS2022_EXAM_01_G2->linux_basics_shell_cp linux_basics_exercises_FH_SS2022_EXAM_01_G2->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files linux_basics_exercises_FH_SS2022_EXAM_01_G2->linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r linux_basics_exercises_FH_SS2022_EXAM_01_G1 Exam (ECE/SS2022/G1): Do A Lot With Files And Directories linux_basics_exercises_FH_SS2022_EXAM_01_G1->linux_basics_shell_ls linux_basics_exercises_FH_SS2022_EXAM_01_G1->linux_basics_shell_cp linux_basics_exercises_FH_SS2022_EXAM_01_G1->linux_basics_shell_exercises_cp_mv_mkdir_rm_echo_create_files linux_basics_exercises_FH_SS2022_EXAM_01_G1->linux_basics_shell_exercises_cp_mv_mkdir_rm_mkdir_p_rm_r linux_basics_text_tools_head_tail head And tail linux_basics_text_tools_cat cat linux_basics_text_tools_head_tail->linux_basics_text_tools_cat linux_basics_text_tools_overview Overview linux_basics_text_tools_cat->linux_basics_text_tools_overview linux_basics_text_tools_less less linux_basics_text_tools_less->linux_basics_text_tools_head_tail linux_basics_text_tools_grep grep linux_basics_text_tools_grep->linux_basics_text_tools_less linux_basics_text_tools_find find linux_basics_text_tools_find->linux_basics_text_tools_grep linux_basics_text_tools_cut cut linux_basics_text_tools_cut->linux_basics_text_tools_head_tail linux_basics_text_tools_overview->linux_basics_shell_commandline linux_basics_text_tools_exercises Exercises: Inspecting Text Files linux_basics_text_tools_exercises->linux_basics_text_tools_head_tail linux_basics_text_tools_exercises->linux_basics_text_tools_cat linux_basics_text_tools_exercises->linux_basics_text_tools_less linux_basics_text_tools_exercises->linux_basics_text_tools_grep linux_basics_text_tools_exercises->linux_basics_text_tools_find linux_basics_text_tools_exercises->linux_basics_text_tools_cut linux_basics_text_tools_exercises->linux_basics_text_tools_overview linux_toolchain_basics Toolchain: Basics linux_toolchain_basics->linux_basics_shell_file_dir_create_rm linux_toolchain_separate_compilation Zooming In: Separate Compilation, and Linking Statically linux_toolchain_separate_compilation->linux_toolchain_basics linux_toolchain_static_library Object Code Archives/Static Libraries linux_toolchain_static_library->linux_toolchain_separate_compilation linux_toolchain_cmake_cross CMake: Cross Build linux_toolchain_cmake_local CMake: Local Build linux_toolchain_cmake_cross->linux_toolchain_cmake_local linux_toolchain_cmake_local->linux_toolchain_static_library linux_toolchain_shared_library Shared Libraries (Shared Objects) linux_toolchain_shared_library->linux_basics_intro_environment linux_toolchain_shared_library->linux_toolchain_static_library linux_toolchain_exercises_fh_moodle_quiz Quiz: Toolchain linux_toolchain_exercises_fh_moodle_quiz->linux_toolchain_basics linux_toolchain_exercises_fh_moodle_quiz->linux_toolchain_separate_compilation linux_toolchain_exercises_native_build Exercise: Build Software Package (Native) linux_toolchain_exercises_native_build->linux_toolchain_static_library linux_toolchain_exercises_cross_build Exercise: Build Software Package (Cross, Raspberry) linux_toolchain_exercises_cross_build->linux_toolchain_static_library linux_toolchain_raspi_toolchain_setup Cross Toolchain Setup linux_toolchain_exercises_cross_build->linux_toolchain_raspi_toolchain_setup linux_toolchain_exercises_raspberry_toolchain Exercise: Install And Check Raspberry Toolchain linux_toolchain_exercises_raspberry_toolchain->linux_toolchain_basics linux_toolchain_cross_basics Cross Development linux_toolchain_exercises_raspberry_toolchain->linux_toolchain_cross_basics linux_toolchain_raspi_toolchain_setup->linux_toolchain_cross_basics linux_toolchain_raspi_docker_fedora_wsl Building A Toolchain On Fedora For Ubuntu 18.04 (WSL) linux_toolchain_raspi_details Building A Cross Toolchain For The Raspberry Pi, Using crosstool-ng linux_toolchain_raspi_docker_fedora_wsl->linux_toolchain_raspi_details linux_toolchain_raspi_details->linux_ssh_scp linux_toolchain_raspi_details->linux_ssh_basics linux_toolchain_raspi_details->linux_basics_intro_environment linux_toolchain_raspi_details->linux_basics_archiving_compression_tar linux_toolchain_raspi_details->linux_toolchain_cross_basics linux_toolchain_raspi_linaro_pi Linaro Toolchain For The Pi (Defunct) linux_toolchain_raspi_linaro_pi->linux_ssh_scp linux_toolchain_raspi_linaro_pi->linux_ssh_basics linux_toolchain_raspi_linaro_pi->linux_basics_intro_environment linux_toolchain_raspi_linaro_pi->linux_basics_archiving_compression_tar linux_toolchain_raspi_linaro_pi->linux_toolchain_cross_basics linux_toolchain_cross_basics->linux_toolchain_basics linux_hardware_pwm PWM Userspace Interface (using PCA9685) linux_hardware_w1 Linux and OneWire (using DS18B20 Temperature Sensor as Slave) linux_hardware_i2c Linux and I2C (using LM73 Temperature Sensor as Slave) linux_hardware_brushless_motor Controlling a Brushless Motor With Raspberry Pi linux_hardware_brushless_motor->linux_hardware_pwm linux_hardware_can_interfaces CAN Interfaces linux_hardware_can_intro CAN/Linux Basics linux_hardware_can_interfaces->linux_hardware_can_intro linux_hardware_can_programming Programming linux_hardware_can_programming->linux_hardware_can_interfaces linux_hardware_can_programming->linux_hardware_can_intro linux_hardware_can_hardware Hardware, Kernel linux_sysprog_ipc Sysprog: POSIX IPC linux_sysprog_signals Sysprog: Signals linux_sysprog_events Sysprog: Events linux_sysprog_blocking_io_blocking_io Blocking I/O: What is That? (“Everything is a file”) linux_sysprog_blocking_io_blocking_io_file->linux_sysprog_blocking_io_blocking_io linux_sysprog_blocking_io_blocking_io_network Blocking I/O: On A Network Socket linux_sysprog_blocking_io_blocking_io_network->linux_sysprog_blocking_io_blocking_io linux_sysprog_fileio_basics File I/O: Basics linux_sysprog_blocking_io_blocking_io_network->linux_sysprog_fileio_basics linux_sysprog_blocking_io_blocking_io->linux_sysprog_fileio_basics linux_sysprog_blocking_io_blocking_io_timer Blocking I/O: On A Timer? WTF? linux_sysprog_blocking_io_blocking_io_timer->linux_sysprog_blocking_io_blocking_io linux_sysprog_blocking_io_blocking_io_timer->linux_sysprog_fileio_basics linux_sysprog_fileio_basics->linux_basics_permissions_basics linux_sysprog_basics_groupnode Linux Systems Programming: Basics linux_sysprog_fileio_basics->linux_sysprog_basics_groupnode linux_sysprog_fileio_example_O_EXCL O_EXCL: Creating A File, But Failing If It Already Exists linux_sysprog_fileio_example_O_EXCL->linux_basics_permissions_basics linux_sysprog_fileio_example_O_EXCL->linux_sysprog_fileio_basics linux_sysprog_fileio_example_O_CREAT O_CREAT: Creating A File linux_sysprog_fileio_example_O_EXCL->linux_sysprog_fileio_example_O_CREAT linux_sysprog_fileio_example_O_CREAT->linux_basics_permissions_basics linux_sysprog_fileio_example_O_CREAT->linux_sysprog_fileio_basics linux_sysprog_fileio_example_O_WRONLY O_WRONLY: Writing A File (Which Must Exist) linux_sysprog_fileio_example_O_CREAT->linux_sysprog_fileio_example_O_WRONLY linux_sysprog_fileio_duplicate Duplicating (Whats Going On?) linux_sysprog_fileio_duplicate->linux_sysprog_fileio_basics linux_sysprog_fileio_basics_exercise_hole Exercise: Create File With Hole linux_sysprog_fileio_basics_exercise_hole->linux_sysprog_fileio_basics linux_sysprog_fileio_example_O_WRONLY->linux_basics_permissions_basics linux_sysprog_fileio_example_O_WRONLY->linux_sysprog_fileio_basics linux_sysprog_fileio_example_O_RDONLY O_RDONLY: Reading a File linux_sysprog_fileio_example_O_WRONLY->linux_sysprog_fileio_example_O_RDONLY linux_sysprog_fileio_example_O_RDONLY->linux_basics_permissions_basics linux_sysprog_fileio_example_O_RDONLY->linux_sysprog_fileio_basics linux_sysprog_fileio_basics_exercise_copy Exercise: Copy A File linux_sysprog_fileio_basics_exercise_copy->linux_basics_permissions_basics linux_sysprog_fileio_basics_exercise_copy->linux_sysprog_fileio_basics linux_sysprog_basics_errorhandling Error Handling linux_sysprog_fileio_basics_exercise_copy->linux_sysprog_basics_errorhandling linux_sysprog_fileio_misc Miscellaneous linux_sysprog_fileio_misc->linux_sysprog_fileio_basics linux_sysprog_fileio_exercise_w1_sensor Exercise: Read Temperature From Onewire Sensor linux_sysprog_fileio_exercise_w1_sensor->linux_basics_permissions_basics linux_sysprog_fileio_exercise_w1_sensor->linux_sysprog_fileio_basics linux_sysprog_fileio_exercise_w1_sensor->linux_sysprog_basics_errorhandling linux_sysprog_fileio_fileio_group File I/O linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_basics linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_duplicate linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_basics_exercise_hole linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_example_O_WRONLY linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_example_O_RDONLY linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_basics_exercise_copy linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_misc linux_sysprog_scheduling_basics Scheduling (and Multitasking) linux_sysprog_scheduling_basics->linux_sysprog_blocking_io_blocking_io linux_sysprog_scheduling_realtime Realtime linux_sysprog_scheduling_realtime->linux_sysprog_blocking_io_blocking_io linux_sysprog_scheduling_wakeup_latency Wakeup Latency, CPU Frequency (Gotcha) linux_sysprog_scheduling_realtime->linux_sysprog_scheduling_wakeup_latency linux_sysprog_scheduling_wakeup_latency->linux_sysprog_blocking_io_blocking_io linux_sysprog_scheduling_wakeup_latency->linux_sysprog_scheduling_basics linux_sysprog_scheduling_exam_questions Scheduling: Exam Questions linux_sysprog_scheduling_exam_questions->linux_sysprog_scheduling_realtime linux_sysprog_scheduling_exam_questions->linux_sysprog_scheduling_wakeup_latency linux_sysprog_scheduling_processes_and_threads Tasks? Processes? Threads? linux_sysprog_scheduling_exam_questions->linux_sysprog_scheduling_processes_and_threads linux_sysprog_scheduling_processes_and_threads->linux_sysprog_scheduling_basics linux_sysprog_scheduling_realtime_api Realtime API linux_sysprog_scheduling_realtime_api->linux_sysprog_scheduling_realtime linux_sysprog_posix_threads_mutex Synchronization linux_sysprog_scheduling_realtime_api->linux_sysprog_posix_threads_mutex linux_sysprog_posix_threads_lifecycle Thread Life Cycle linux_sysprog_scheduling_realtime_api->linux_sysprog_posix_threads_lifecycle linux_sysprog_posix_threads_exercise_pthcreate_racecondition Thread Creation, Race Condition linux_sysprog_posix_threads_mutex->linux_sysprog_posix_threads_exercise_pthcreate_racecondition linux_sysprog_posix_threads_basics Basics linux_sysprog_posix_threads_lifecycle->linux_sysprog_posix_threads_basics linux_sysprog_posix_threads_exercise_pthcreate_racecondition->linux_sysprog_posix_threads_lifecycle linux_sysprog_posix_threads_last_warning Last Warning linux_sysprog_posix_threads_miscellaneous Miscellaneous linux_sysprog_posix_threads_last_warning->linux_sysprog_posix_threads_miscellaneous linux_sysprog_posix_threads_exercise_condition_variable Condition Variable: Message Queue linux_sysprog_posix_threads_miscellaneous->linux_sysprog_posix_threads_exercise_condition_variable linux_sysprog_posix_threads_mutex_trylock Trylock/islocked linux_sysprog_posix_threads_mutex_trylock->linux_sysprog_posix_threads_mutex linux_sysprog_posix_threads_exercise_mutex Mutex: Solve Load/Modify/Store Conflict linux_sysprog_posix_threads_exercise_mutex->linux_sysprog_posix_threads_mutex linux_sysprog_posix_threads_basics->linux_sysprog_scheduling_basics linux_sysprog_posix_threads_condition_variable Communication: Condition Variable linux_sysprog_posix_threads_exercise_condition_variable->linux_sysprog_posix_threads_condition_variable linux_sysprog_posix_threads_condition_variable->linux_sysprog_posix_threads_exercise_mutex linux_sysprog_intro_hw_watch Interrupts In Userspace linux_sysprog_intro_hw_get Get Value Of GPIO linux_sysprog_intro_hw_watch->linux_sysprog_intro_hw_get linux_sysprog_intro_hw_sysfs_gpio Intro: sysfs GPIO linux_sysprog_intro_hw_watch->linux_sysprog_intro_hw_sysfs_gpio linux_sysprog_intro_hw_get->linux_sysprog_intro_hw_sysfs_gpio linux_sysprog_process_commandline Process: Arguments, Exit Status linux_sysprog_process_commandline->linux_basics_intro_process linux_sysprog_process_tree The Process Tree (And Environment, And procfs) linux_sysprog_process_tree->linux_basics_intro_environment linux_sysprog_process_tree->linux_basics_intro_process linux_sysprog_process_tree->linux_basics_intro_process_tree linux_sysprog_process_tree->linux_sysprog_process_commandline linux_sysprog_basics_syscalls System Calls vs. Library Functions linux_sysprog_basics_errorhandling->linux_sysprog_basics_syscalls linux_sysprog_basics_groupnode->linux_sysprog_basics_errorhandling linux_sysprog_basics_groupnode->linux_sysprog_basics_syscalls linux_sysprog_basics_syscalls->linux_toolchain_basics clean_code_features_other_indexes Search By Other Indexes clean_code_features_csv UserDB: Alternative Output Format - CSV clean_code_bugs_overwrite_store_content_on_read UserDB::read(): What If Done Twice? clean_code_bugs_find_error UserDB::find() Crashes If User Not Found clean_code_bugs_overwrite_existing_files Existing Files Are Overwritten clean_code_refactoring_backingstore_monolithic UserDB Has Too Many Responsibilities ⟶ BackingStore clean_code_refactoring_backingstore_monolithic->clean_code_bugs_overwrite_store_content_on_read clean_code_refactoring_backingstore_monolithic->clean_code_bugs_overwrite_existing_files clean_code_refactoring_store_enum_switch UserDB::{read,write}(): bool, Really? clean_code_refactoring_backingstore_monolithic->clean_code_refactoring_store_enum_switch clean_code_refactoring_store_enum_switch->clean_code_features_csv clean_code_refactoring_pass_store_in_ctor Load From BackingStore in Constructor clean_code_refactoring_pass_store_in_ctor->clean_code_bugs_overwrite_store_content_on_read clean_code_refactoring_pass_store_in_ctor->clean_code_bugs_overwrite_existing_files clean_code_refactoring_pass_store_in_ctor->clean_code_refactoring_backingstore_monolithic clean_code_refactoring_backingstore_interface BackingStore Has Too Many Responsibilities ⟶ Interface clean_code_refactoring_backingstore_interface->clean_code_refactoring_backingstore_monolithic unittest_gtest_fixture Unittest: GTest Fixtures unittest_gtest_basics Unittest: GTest Basics unittest_gtest_fixture->unittest_gtest_basics unittest_gtest_cmake Unittest: GTest and CMake unittest_gtest_fixture->unittest_gtest_cmake unittest_gtest_cmake->unittest_gtest_basics cmake_intro_shared_libraries_preview Shared Libraries (Preview) cmake_intro_libraries Libraries, And Dependencies cmake_intro_shared_libraries_preview->cmake_intro_libraries cmake_intro_basics Basics: Boilerplate, And Executables cmake_intro_libraries->cmake_intro_basics cmake_intro_cxx_and_rants C++, Debug/Release, CMake “Programming”, Rants cmake_intro_structure Structure - Subdirectories, Dependencies, and Include Paths cmake_intro_cxx_and_rants->cmake_intro_structure cmake_intro_installation Installation (“Deployment”) cmake_intro_structure->cmake_intro_installation cmake_intro_installation->cmake_intro_shared_libraries_preview cmake_intro_installation->cmake_intro_libraries cmake_advanced_external_dependencies_sqlite3_optional_graph Screenplay: Making SQLite3 Optional (target_compile_definitions()) cmake_advanced_external_dependencies_sqlite3 Screenplay: Adding SQLite3 External Dependency cmake_advanced_external_dependencies_sqlite3_optional_graph->cmake_advanced_external_dependencies_sqlite3 cmake_advanced_targets_properties Targets, Properties, And More cmake_advanced_external_dependencies_sqlite3->cmake_advanced_targets_properties cmake_advanced_targets_properties_pub_priv_inc_screenplay Screenplay: Public And Private Include Directories cmake_advanced_external_dependencies_sqlite3->cmake_advanced_targets_properties_pub_priv_inc_screenplay cmake_advanced_library_function_screenplay Screenplay: Function Wrapping add_library() cmake_advanced_external_dependencies_sqlite3->cmake_advanced_library_function_screenplay cmake_advanced_testing Running Tests cmake_advanced_external_dependencies External Dependencies cmake_advanced_testing->cmake_advanced_external_dependencies cmake_advanced_external_dependencies->cmake_advanced_targets_properties cmake_advanced_targets_properties->cmake_intro_libraries cmake_advanced_targets_properties->cmake_intro_structure cmake_advanced_targets_properties_pub_priv_inc_screenplay->cmake_advanced_targets_properties cmake_advanced_library_function_screenplay->cmake_advanced_targets_properties_pub_priv_inc_screenplay cmake_advanced_optional_code_approach_1 Optional Code, Approach 1: Optional blacklist, C Macro  (Global Flags) cmake_advanced_optional_code_problem Optional Code: Problem Definition, OPTION() cmake_advanced_optional_code_approach_1->cmake_advanced_optional_code_problem cmake_advanced_configure_file “Configured” Header Files cmake_advanced_optional_code_problem->cmake_advanced_configure_file cmake_advanced_external_dependencies_mosquitto Screenplay: Integrating libmosquitto (MQTT - Handwritten Find-Module) cmake_advanced_external_dependencies_sqlite3_optional_configured_file Screenplay: Making SQLite3 Optional (configure_file()) cmake_advanced_external_dependencies_mosquitto->cmake_advanced_external_dependencies_sqlite3_optional_configured_file cmake_advanced_external_dependencies_sqlite3_optional_configured_file->cmake_advanced_external_dependencies_sqlite3_optional_graph cmake_advanced_configure_file->cmake_intro_cxx_and_rants cmake_advanced_optional_code_approach_2 Optional Code, Approach 2: Pushing Optionality Down In Module Interface cmake_advanced_optional_code_approach_2->cmake_advanced_optional_code_approach_1 cmake_advanced_code_generators Screenplay: Generated Code (add_custom_command()) cmake_advanced_code_generators->cmake_advanced_external_dependencies_mosquitto cmake_advanced_language_datatypes Datatypes cmake_advanced_language_variables Variables cmake_advanced_language_datatypes->cmake_advanced_language_variables cmake_advanced_language_basics Language Basics cmake_advanced_language_variables->cmake_advanced_language_basics cmake_advanced_language_file_etc Filesystem Interaction, Pathname Manipulation cmake_advanced_language_file_etc->cmake_advanced_language_datatypes cmake_advanced_language_file_etc->cmake_advanced_language_variables cmake_advanced_language_if_and_conditions if, And Conditions cmake_advanced_language_if_and_conditions->cmake_advanced_language_variables cmake_advanced_language_functions_and_macros Functions And Macros cmake_advanced_language_functions_and_macros->cmake_advanced_language_datatypes cmake_advanced_language_functions_and_macros->cmake_advanced_language_variables cmake_advanced_language_functions_and_macros->cmake_advanced_language_if_and_conditions cmake_advanced_language_while while Loops cmake_advanced_language_while->cmake_advanced_language_datatypes cmake_advanced_language_while->cmake_advanced_language_variables cmake_advanced_language_scripts Scripts cmake_advanced_language_foreach foreach Loops cmake_advanced_language_foreach->cmake_advanced_language_datatypes cmake_advanced_language_foreach->cmake_advanced_language_variables ecproposal_ec2_python_exercise_avg_display EX: Averaging Sensor, Display ecproposal_ec2_python_exercise_sensors EX: Temperature Sensors ecproposal_ec2_python_exercise_avg_display->ecproposal_ec2_python_exercise_sensors ecproposal_ec1_linux_exercise_avg_sensor EX: Averaging Sensor ecproposal_ec2_python_exercise_avg_display->ecproposal_ec1_linux_exercise_avg_sensor ecproposal_ec1_linux_exercise_led_display EX: LED Temperature Display ecproposal_ec2_python_exercise_avg_display->ecproposal_ec1_linux_exercise_led_display ecproposal_ec1_linux_exercise_avg_sensor_parallel EX: Averaging Sensor (parallel) ecproposal_ec2_python_exercise_avg_display->ecproposal_ec1_linux_exercise_avg_sensor_parallel ecproposal_ec2_python_basics Python Basics ecproposal_ec2_python_exercise_sensors->ecproposal_ec2_python_basics ecproposal_ec1_linux_exercise_sensors EX: Temperature Sensors ecproposal_ec2_python_exercise_sensors->ecproposal_ec1_linux_exercise_sensors ecproposal_ec2_python_web_sensors Sensors Web Pages ecproposal_ec2_python_web_sensors->ecproposal_ec2_python_exercise_avg_display ecproposal_ec2_python_flask Simple Web Programming ecproposal_ec2_python_web_sensors->ecproposal_ec2_python_flask ecproposal_ec1_git Git Introduction ecproposal_ec1_linux_exercise_avg_sensor->ecproposal_ec1_linux_exercise_sensors ecproposal_ec1_cxx_unittest C++: Unit Testing ecproposal_ec1_linux_exercise_avg_sensor->ecproposal_ec1_cxx_unittest ecproposal_ec1_linux_exercise_led_display->ecproposal_ec1_linux_exercise_avg_sensor ecproposal_ec1_linux_gpio GPIO ecproposal_ec1_linux_exercise_led_display->ecproposal_ec1_linux_gpio ecproposal_ec1_linux_exercise_led_display->ecproposal_ec1_cxx_unittest ecproposal_ec1_linux_exercise_avg_sensor_parallel->ecproposal_ec1_linux_exercise_avg_sensor ecproposal_ec1_mt_wait Communication: Waiting for Something ecproposal_ec1_linux_exercise_avg_sensor_parallel->ecproposal_ec1_mt_wait ecproposal_ec1_mt_exercise_mt_race_fixed EX: Avoiding Race Condition ecproposal_ec1_linux_exercise_avg_sensor_parallel->ecproposal_ec1_mt_exercise_mt_race_fixed ecproposal_ec1_linux_exercise_sensors->ecproposal_ec1_git ecproposal_ec1_linux_dev_mgmt Linux Hardware Device Management ecproposal_ec1_linux_exercise_sensors->ecproposal_ec1_linux_dev_mgmt ecproposal_ec1_cxx_iface C++: Interfaces ecproposal_ec1_linux_exercise_sensors->ecproposal_ec1_cxx_iface ecproposal_ec1_cxx_build C++: Building with CMake ecproposal_ec1_linux_exercise_sensors->ecproposal_ec1_cxx_build ecproposal_ec1_linux_gpio->ecproposal_ec1_linux_dev_mgmt ecproposal_ec1_linux_basics Introduction to Linux and Unix ecproposal_ec1_linux_dev_mgmt->ecproposal_ec1_linux_basics ecproposal_ec1_mt_lock Avoiding Race Conditions: Semaphore/Mutex ecproposal_ec1_mt_wait->ecproposal_ec1_mt_lock ecproposal_ec1_mt_exercise_mt_race_fixed->ecproposal_ec1_mt_lock ecproposal_ec1_mt_exercise_mt_race EX: Race Conditions ecproposal_ec1_mt_exercise_mt_race_fixed->ecproposal_ec1_mt_exercise_mt_race ecproposal_ec1_mt_lock->ecproposal_ec1_mt_exercise_mt_race ecproposal_ec1_mt_exercise_mt_race->ecproposal_ec1_cxx_build ecproposal_ec1_cxx_unittest->ecproposal_ec1_cxx_build ecproposal_ec1_cxx_oo_basics C++: OO Basics ecproposal_ec1_cxx_unittest->ecproposal_ec1_cxx_oo_basics ecproposal_ec1_cxx_iface->ecproposal_ec1_cxx_oo_basics ecproposal_ec1_cxx_oo_basics->ecproposal_ec1_git ecproposal_ec1_cxx_oo_basics->ecproposal_ec1_cxx_build ece19_blinklicht_unittest GPIO: Blinklicht Unittests ece19_blinklicht_abc GPIO: Blinklicht Interface ece19_blinklicht_unittest->ece19_blinklicht_abc ece19_blinklicht_oo GPIO: Object Oriented Blinklicht ece19_blinklicht_abc->ece19_blinklicht_oo ece19_blinklicht GPIO: Blinklicht ece19_blinklicht_oo->ece19_blinklicht ece19_file_read Reading a File ece19_blinklicht->ece19_file_read python_basics_python_0500_files File I/O ece19_file_read->python_basics_python_0500_files python_python_5550_xml_etree XML: ElementTree (etree) python_basics_python_0450_dictionaries More About Dictionaries python_python_5550_xml_etree->python_basics_python_0450_dictionaries python_basics_python_0220_for for Loops python_python_5550_xml_etree->python_basics_python_0220_for python_advanced_modules Modules and Packages python_python_5550_xml_etree->python_advanced_modules python_basics_python_0500_files->python_basics_python_0220_for python_misc_encoding Encoding python_basics_python_0500_files->python_misc_encoding python_basics_python_0140_variables Variables python_basics_python_0130_syntax_etc Syntax etc. python_basics_python_0140_variables->python_basics_python_0130_syntax_etc python_basics_python_0150_datatypes_overview Datatypes python_basics_python_0150_datatypes_overview->python_basics_python_0140_variables python_basics_python_0150_datatypes_overview_compound Compound Datatypes python_basics_python_0150_datatypes_overview_compound->python_basics_python_0150_datatypes_overview python_basics_python_0160_boolean Boolean python_basics_python_0160_boolean->python_basics_python_0150_datatypes_overview python_basics_python_0120_helloworld Hello World python_basics_python_0110_blahblah Blahblah python_basics_python_0120_helloworld->python_basics_python_0110_blahblah python_basics_python_0270_functions Functions python_basics_python_0270_functions->python_basics_python_0140_variables python_basics_python_0270_functions->python_basics_python_0150_datatypes_overview python_basics_python_0139_commandline_argv Commandline Arguments (sys.argv) python_basics_python_0139_commandline_argv->python_basics_python_0130_syntax_etc python_basics_python_0125_running Running Python Programs python_basics_python_0139_commandline_argv->python_basics_python_0125_running python_basics_python_0193_while while Loops python_basics_python_0193_while->python_basics_python_0160_boolean python_basics_python_0170_if The if Statement python_basics_python_0193_while->python_basics_python_0170_if python_basics_python_0170_if->python_basics_python_0160_boolean python_basics_python_0300_strings More About Strings python_basics_python_0300_strings->python_basics_python_0150_datatypes_overview python_basics_python_0200_sequential_types Sequential Datatypes python_basics_python_0300_strings->python_basics_python_0200_sequential_types python_basics_python_0250_refs_flat_deep_copy References, (Im)mutability python_basics_python_0300_strings->python_basics_python_0250_refs_flat_deep_copy python_basics_python_0310_strings_formatting String Formatting python_basics_python_0310_strings_formatting->python_basics_python_0300_strings python_basics_python_0320_strings_methods Miscellaneous String Methods python_basics_python_0320_strings_methods->python_basics_python_0300_strings python_basics_python_0450_dictionaries->python_basics_python_0150_datatypes_overview_compound python_basics_python_0450_dictionaries->python_basics_python_0220_for python_basics_python_0210_indexing_slicing Indexing and Slicing python_basics_python_0210_indexing_slicing->python_basics_python_0200_sequential_types python_basics_python_0220_for->python_basics_python_0193_while python_basics_python_0220_for->python_basics_python_0200_sequential_types python_basics_python_0225_range The range Function python_basics_python_0225_range->python_basics_python_0220_for python_basics_python_0225_range->python_basics_python_0200_sequential_types python_basics_python_0200_sequential_types->python_basics_python_0150_datatypes_overview_compound python_basics_python_0400_lists More About Lists python_basics_python_0400_lists->python_basics_python_0150_datatypes_overview_compound python_basics_python_0130_syntax_etc->python_basics_python_0120_helloworld python_basics_python_0125_running->python_basics_python_0120_helloworld python_basics_python_0250_refs_flat_deep_copy->python_basics_python_0140_variables python_basics_python_0250_refs_flat_deep_copy->python_basics_python_0150_datatypes_overview python_basics_python_0250_refs_flat_deep_copy->python_basics_python_0150_datatypes_overview_compound python_basics_python_0460_sets More About Sets python_basics_python_0460_sets->python_basics_python_0150_datatypes_overview_compound python_basics_python_1000_function_objects Function Objects python_basics_python_1000_function_objects->python_basics_python_0270_functions python_basics_installation Python Installation python_exercises_legacy_uniq_generator Exercise: Generator: uniq() python_exercises_legacy_uniq_function Exercise: Function: uniq() python_exercises_legacy_uniq_generator->python_exercises_legacy_uniq_function python_exercises_legacy_passwd Exercise: Parsing /etc/passwd python_exercises_legacy_uniq_generator->python_exercises_legacy_passwd python_advanced_python_1010_generators_yield Iteration, Generators, And yield python_exercises_legacy_uniq_generator->python_advanced_python_1010_generators_yield python_exercises_legacy_uniq_function->python_basics_python_0150_datatypes_overview_compound python_exercises_legacy_uniq_function->python_basics_python_0270_functions python_exercises_legacy_function_primeness Exercise: Primeness (Function) python_exercises_legacy_uniq_function->python_exercises_legacy_function_primeness python_exercises_legacy_passwd->python_basics_python_0500_files python_exercises_legacy_passwd->python_basics_python_0139_commandline_argv python_exercises_legacy_passwd->python_basics_python_0450_dictionaries python_exercises_legacy_passwd->python_basics_python_0210_indexing_slicing python_exercises_legacy_distill Exercise: Eliminate Empty/Comment-Only Lines python_exercises_legacy_passwd->python_exercises_legacy_distill python_exercises_legacy_mixed_list_interactive Exercise: Mixed List (Interactive Interpreter) python_exercises_legacy_mixed_list_interactive->python_basics_python_0140_variables python_exercises_legacy_mixed_list_interactive->python_basics_python_0150_datatypes_overview python_exercises_legacy_mixed_list_interactive->python_basics_python_0150_datatypes_overview_compound python_exercises_legacy_mixed_list_interactive->python_basics_python_0160_boolean python_exercises_legacy_mixed_list_executable Exercise: Mixed List (Executable Program) python_exercises_legacy_mixed_list_executable->python_basics_python_0140_variables python_exercises_legacy_mixed_list_executable->python_basics_python_0150_datatypes_overview python_exercises_legacy_mixed_list_executable->python_basics_python_0150_datatypes_overview_compound python_exercises_legacy_mixed_list_executable->python_basics_python_0160_boolean python_exercises_legacy_mixed_list_executable->python_basics_python_0120_helloworld python_exercises_legacy_mixed_list_executable->python_exercises_legacy_mixed_list_interactive python_exercises_legacy_function_primeness->python_basics_python_0270_functions python_exercises_legacy_function_primeness->python_basics_python_0139_commandline_argv python_exercises_legacy_max_numbers_function Exercise: Determine Maximum of Two Numbers (Function) python_exercises_legacy_function_primeness->python_exercises_legacy_max_numbers_function python_exercises_legacy_max_numbers_function->python_basics_python_0270_functions python_exercises_legacy_max_numbers Exercise: Determine Maximum of Two Numbers python_exercises_legacy_max_numbers_function->python_exercises_legacy_max_numbers python_exercises_legacy_for_primeness Exercise: Primeness (for) python_exercises_legacy_max_numbers_function->python_exercises_legacy_for_primeness python_exercises_legacy_revert Exercise: Reverting Lines of a File python_exercises_legacy_revert->python_basics_python_0500_files python_exercises_legacy_revert->python_basics_python_0139_commandline_argv python_exercises_legacy_wc Exercise: Counting Lines, Words, Characters python_exercises_legacy_revert->python_exercises_legacy_wc python_exercises_legacy_wc->python_basics_python_0500_files python_exercises_legacy_wc->python_basics_python_0139_commandline_argv python_exercises_legacy_python_0350_exercises Exercise: String (Right-Justify) python_exercises_legacy_wc->python_exercises_legacy_python_0350_exercises python_exercises_legacy_join_function Exercise: Functions: join() python_exercises_legacy_join_function->python_basics_python_0150_datatypes_overview python_exercises_legacy_join_function->python_basics_python_0150_datatypes_overview_compound python_exercises_legacy_join_function->python_basics_python_0270_functions python_exercises_legacy_join_function->python_exercises_legacy_uniq_function python_exercises_legacy_cmdline_digit Exercise: Digit to English Word python_exercises_legacy_cmdline_digit->python_basics_python_0150_datatypes_overview python_exercises_legacy_cmdline_digit->python_basics_python_0150_datatypes_overview_compound python_exercises_legacy_cmdline_digit->python_basics_python_0120_helloworld python_exercises_legacy_cmdline_digit->python_basics_python_0139_commandline_argv python_exercises_legacy_while_primeness Exercise: Primeness (while) python_exercises_legacy_while_primeness->python_basics_python_0139_commandline_argv python_exercises_legacy_while_primeness->python_basics_python_0193_while python_exercises_legacy_while_primeness->python_exercises_legacy_cmdline_digit python_exercises_legacy_python_0350_exercises->python_basics_python_0300_strings python_exercises_legacy_python_0350_exercises->python_basics_python_0310_strings_formatting python_exercises_legacy_python_0350_exercises->python_basics_python_0320_strings_methods python_exercises_legacy_python_0350_exercises->python_exercises_legacy_join_function python_exercises_legacy_python_1011_generators_yield Exercise: Generator: Fibonacci python_exercises_legacy_python_1011_generators_yield->python_exercises_legacy_uniq_generator python_exercises_legacy_python_1011_generators_yield->python_advanced_python_1010_generators_yield python_exercises_legacy_max_numbers->python_basics_python_0140_variables python_exercises_legacy_max_numbers->python_basics_python_0139_commandline_argv python_exercises_legacy_max_numbers->python_basics_python_0170_if python_exercises_legacy_max_numbers->python_exercises_legacy_mixed_list_executable python_exercises_legacy_distill->python_basics_python_0500_files python_exercises_legacy_distill->python_basics_python_0139_commandline_argv python_exercises_legacy_distill->python_exercises_legacy_revert python_exercises_legacy_for_primeness->python_basics_python_0220_for python_exercises_legacy_for_primeness->python_basics_python_0225_range python_exercises_legacy_for_primeness->python_exercises_legacy_while_primeness python_exercises_legacy_dict_keyerror Exercise: Dictionary: Errors? python_exercises_legacy_dict_keyerror->python_basics_python_0150_datatypes_overview_compound python_exercises_csv_csv_db Exercise: Read CSV File, Write into Sqlite3 Database python_exercises_csv_csv_db->python_basics_python_0139_commandline_argv python_db_sqlite3 DBAPI 2: sqlite3 python_exercises_csv_csv_db->python_db_sqlite3 python_exercises_csv_csv_module Exercise: Read CSV File python_exercises_csv_csv_module->python_basics_python_0139_commandline_argv python_exercises_csv_csv_module->python_advanced_python_1010_generators_yield python_exercises_csv_csv_module->python_advanced_modules python_misc_csv CSV Files python_exercises_csv_csv_module->python_misc_csv python_exercises_sensors_project_setup Project Setup python_exercises_sensors_sensor_const Exercise: Basic “Sensor” python_exercises_sensors_project_setup->python_exercises_sensors_sensor_const python_exercises_sensors_sensor_const->python_exercises_sensors_project_setup python_advanced_oo_methods Methods python_exercises_sensors_sensor_const->python_advanced_oo_methods python_exercises_herdt_max_numbers Exercise: Determine Maximum of Two Numbers python_exercises_herdt_max_numbers->python_basics_python_0140_variables python_exercises_herdt_max_numbers->python_basics_python_0139_commandline_argv python_exercises_herdt_max_numbers->python_basics_python_0170_if python_exercises_herdt_swap Exercise: Swap Two Variables python_exercises_herdt_max_numbers->python_exercises_herdt_swap python_exercises_herdt_swap->python_basics_python_0140_variables python_exercises_herdt_swap->python_basics_python_0150_datatypes_overview python_exercises_herdt_swap->python_basics_python_0120_helloworld python_exercises_herdt_boolean Exercise: Boolean Expressions python_exercises_herdt_swap->python_exercises_herdt_boolean python_exercises_herdt_username_password Exercise: Username/Password Check python_exercises_herdt_username_password->python_basics_python_0170_if python_exercises_herdt_greeting Exercise: Greeting, Depending on Time of Day python_exercises_herdt_username_password->python_exercises_herdt_greeting python_exercises_herdt_greeting->python_basics_python_0170_if python_exercises_herdt_greeting->python_exercises_herdt_max_numbers python_exercises_herdt_boolean->python_basics_python_0160_boolean python_exercises_herdt_while_even_numbers Exercise: Even Numbers (while) python_exercises_herdt_while_even_numbers->python_basics_python_0139_commandline_argv python_exercises_herdt_while_even_numbers->python_basics_python_0193_while python_exercises_herdt_while_even_numbers->python_exercises_herdt_username_password python_exercises_userdb_mqtt_publish_csv Exercise: MQTT: Publish User Records python_exercises_userdb_user_json Exercise: Convert User Record To JSON And Back python_exercises_userdb_mqtt_publish_csv->python_exercises_userdb_user_json python_exercises_userdb_userdb_module Exercise: Refactoring - Extract Both CSV Formats Into Module python_exercises_userdb_user_json->python_exercises_userdb_userdb_module python_exercises_userdb_csvreader Exercise: Read CSV File (csv.reader) python_exercises_userdb_csvreader->python_basics_python_0139_commandline_argv python_exercises_userdb_csvreader->python_misc_csv python_exercises_userdb_user_class_person Exercise: Away From Raw Dictionaries python_exercises_userdb_user_class_person->python_exercises_userdb_user_json python_exercises_userdb_user_class_person->python_exercises_userdb_userdb_module python_advanced_oo_namedtuple collections.namedtuple python_exercises_userdb_user_class_person->python_advanced_oo_namedtuple python_exercises_userdb_userdb_module->python_exercises_userdb_csvreader python_exercises_userdb_csvdictreader_function Exercise: Refactoring - Extract CSV Reading Into Function (csv.dictreader) python_exercises_userdb_userdb_module->python_exercises_userdb_csvdictreader_function python_exercises_userdb_userdb_module->python_advanced_modules python_exercises_userdb_csvdictreader Exercise: Read CSV File (csv.dictreader) python_exercises_userdb_csvdictreader->python_basics_python_0139_commandline_argv python_exercises_userdb_csvdictreader->python_exercises_userdb_csvreader python_exercises_userdb_csvdictreader->python_misc_csv python_exercises_userdb_csvreader_function Exercise: Refactoring - Extract CSV Reading Into Function (csv.reader) python_exercises_userdb_csvreader_function->python_basics_python_0270_functions python_exercises_userdb_csvreader_function->python_exercises_userdb_csvreader python_exercises_userdb_csvdictreader_function->python_basics_python_0270_functions python_exercises_userdb_csvdictreader_function->python_exercises_userdb_csvdictreader python_advanced_python_1010_generators_yield->python_basics_python_0270_functions python_advanced_python_1010_generators_yield->python_basics_python_0220_for python_advanced_python_1010_generators_yield->python_basics_python_0225_range python_advanced_python_1010_generators_yield->python_basics_python_0200_sequential_types python_advanced_iteration_generation Iteration, Comprehensions, and Generators python_advanced_iteration_generation->python_basics_python_0220_for python_advanced_exec The exec() Function python_advanced_exec->python_basics_python_0500_files python_advanced_exec->python_basics_python_0450_dictionaries python_advanced_starargs Positional and Keyword Arguments python_advanced_starargs->python_basics_python_0270_functions python_advanced_exceptions Exception Handling python_advanced_exceptions->python_basics_python_0140_variables python_advanced_exceptions->python_basics_python_0270_functions python_advanced_oo_inheritance Inheritance python_advanced_exceptions->python_advanced_oo_inheritance python_advanced_comprehensions Comprehensions (List, Dictionary, Set) python_advanced_comprehensions->python_basics_python_0150_datatypes_overview_compound python_advanced_closures Closures python_advanced_closures->python_basics_python_0270_functions python_advanced_decorators Decorators python_advanced_decorators->python_basics_python_0270_functions python_advanced_decorators->python_advanced_starargs python_advanced_decorators->python_advanced_closures python_advanced_context_mgr Context Managers: The with Statement python_advanced_context_mgr->python_advanced_iteration_generation python_advanced_context_mgr->python_advanced_exceptions python_advanced_oo_classes_and_dicts Classes And Dictionaries python_advanced_context_mgr->python_advanced_oo_classes_and_dicts python_advanced_oo_methods->python_advanced_oo_classes_and_dicts python_advanced_oo_namedtuple->python_advanced_oo_classes_and_dicts python_advanced_oo_inheritance->python_advanced_oo_classes_and_dicts python_advanced_oo_constructor Constructor python_advanced_oo_inheritance->python_advanced_oo_constructor python_advanced_oo_classes_and_dicts->python_basics_python_0150_datatypes_overview_compound python_advanced_oo_constructor->python_advanced_oo_classes_and_dicts python_advanced_oo_properties Properties python_advanced_oo_properties->python_advanced_oo_classes_and_dicts python_advanced_oo_str_repr str() And repr() python_advanced_oo_str_repr->python_advanced_oo_methods python_advanced_oo_abc Abstract Base Classes (abc), And Duck Typing python_advanced_oo_abc->python_advanced_oo_inheritance python_advanced_oo_operator_overloading Operator Overloading python_advanced_oo_operator_overloading->python_advanced_oo_classes_and_dicts python_advanced_multithreading_mutex Race Conditions, and Mutexes python_advanced_multithreading_basics Multithreading (Python) python_advanced_multithreading_mutex->python_advanced_multithreading_basics python_advanced_multithreading_basics->python_advanced_oo_inheritance python_advanced_multithreading_exam_questions Multithreading: Exam Questions python_advanced_multithreading_exam_questions->python_advanced_multithreading_mutex python_advanced_multithreading_exam_questions->python_advanced_multithreading_basics python_db_dbapi2 DBAPI 2 python_db_sqlite3->python_db_dbapi2 python_db_postgres DBAPI 2: PostgreSQL python_db_postgres->python_db_dbapi2 python_db_dbapi2->python_basics_python_0220_for python_db_dbapi2->python_advanced_python_1010_generators_yield python_db_dbapi2->python_advanced_modules python_misc_csv->python_basics_python_0500_files python_misc_csv->python_basics_python_0150_datatypes_overview_compound python_misc_csv->python_basics_python_0220_for python_misc_encoding->python_basics_python_0150_datatypes_overview python_misc_encoding->python_basics_python_0320_strings_methods python_misc_import The import Statement (incomplete) python_misc_import->python_advanced_modules python_misc_vscode Visual Studio Code for Python Programming python_misc_mqtt MQTT python_swdev_venv Virtual Environments python_misc_mqtt->python_swdev_venv python_misc_ai_k_means K-Means python_misc_ai_machine_learning_intro Machine Learning: Concepts and Terminology python_misc_ai_k_means->python_misc_ai_machine_learning_intro python_misc_ai_linear_regression Linear Regression python_misc_ai_k_means->python_misc_ai_linear_regression python_misc_ai_k_means->python_swdev_venv python_misc_ai_linear_regression->python_misc_ai_machine_learning_intro python_misc_ai_linear_regression->python_swdev_venv python_misc_pandas_iloc Pandas: Selecting Rows (And Columns) With iloc[] python_misc_pandas_iloc->python_basics_python_0210_indexing_slicing python_misc_pandas_indexes Pandas: Indexes python_misc_pandas_iloc->python_misc_pandas_indexes python_misc_pandas_basics Pandas: Basics (DataFrame And Series) python_misc_pandas_iloc->python_misc_pandas_basics python_misc_pandas_indexes->python_misc_pandas_iloc python_misc_pandas_indexes->python_misc_pandas_basics python_misc_pandas_loc Pandas: Selecting Rows (And Columns) With loc[] python_misc_pandas_indexes->python_misc_pandas_loc python_misc_pandas_loc->python_basics_python_0210_indexing_slicing python_misc_pandas_loc->python_misc_pandas_iloc python_misc_pandas_loc->python_misc_pandas_indexes python_misc_pandas_loc->python_misc_pandas_basics python_misc_pandas_mod_col Pandas: Adding/Modifying Columns python_misc_pandas_mod_col->python_misc_pandas_basics python_misc_pandas_filters Pandas: Filters python_misc_pandas_filters->python_misc_pandas_indexes python_misc_pandas_filters->python_misc_pandas_basics python_misc_pandas_add_rows Pandas: Adding Rows python_misc_pandas_add_rows->python_misc_pandas_mod_col python_drafts_argparse Commandline Parsing with argparse python_drafts_argparse->python_basics_python_0139_commandline_argv python_drafts_setuptools Package Installation (setuptools) python_drafts_setuptools->python_swdev_venv python_swdev_pip Python Package Index python_drafts_setuptools->python_swdev_pip python_drafts_matplotlib Matplotlib python_drafts_matplotlib->python_swdev_venv python_drafts_matplotlib->python_swdev_pip python_drafts_asyncio asyncio python_swdev_venv->python_misc_import python_swdev_venv->python_swdev_pip python_swdev_pip->python_misc_import python_swdev_unittest The unittest Module python_swdev_unittest->python_advanced_modules python_swdev_unittest->python_advanced_oo_inheritance python_swdev_pytest_intro pytest Introduction, By Example python_swdev_pytest_intro->python_advanced_modules cxx11_perfect_forwarding Perfect Forwarding cxx11_new_language_features_move_pf_overview Lvalues, Rvalues, And Moving cxx11_perfect_forwarding->cxx11_new_language_features_move_pf_overview cxx11_filesystem std::filesystem cxx11_functions_functions_bind std::bind cxx11_smart_pointers_closing_words Smart Pointers: Closing Words cxx11_functions_functions_bind->cxx11_smart_pointers_closing_words cxx11_functions_functions_function std::function cxx11_functions_functions_function->cxx11_functions_functions_bind cxx11_smart_pointers_shared_ptr std::shared_ptr cxx11_smart_pointers_closing_words->cxx11_smart_pointers_shared_ptr cxx11_smart_pointers_unique_ptr std::unique_ptr cxx11_smart_pointers_closing_words->cxx11_smart_pointers_unique_ptr cxx11_smart_pointers_introduction Introduction cxx11_new_language_features_miscellaneous Miscellaneous cxx11_smart_pointers_introduction->cxx11_new_language_features_miscellaneous cxx11_smart_pointers_shared_ptr->cxx11_smart_pointers_introduction cxx11_smart_pointers_shared_ptr->cxx11_smart_pointers_unique_ptr cxx11_smart_pointers_unique_ptr->cxx11_smart_pointers_introduction cxx11_smart_pointers_introduction_livehack (Trying To) Handwrite A Smart Pointer Class in C++ Before C++11 cxx11_smart_pointers_introduction_livehack->cxx11_smart_pointers_introduction cxx11_smart_pointers_weak_ptr std::weak_ptr cxx11_smart_pointers_weak_ptr->cxx11_smart_pointers_introduction cxx11_smart_pointers_weak_ptr->cxx11_smart_pointers_shared_ptr cxx11_embedded_problems_variant_manual_if std::variant (Manual Virtual Dispatch, Using if) cxx11_embedded_problems_unrelated Unrelated (Duck-Typed) cxx11_embedded_problems_variant_manual_if->cxx11_embedded_problems_unrelated cxx11_miscellaneous_variant New-Style Union: std::variant cxx11_embedded_problems_variant_manual_if->cxx11_miscellaneous_variant cxx11_embedded_problems_related_no_virtual Non-Virtual, But Related cxx11_embedded_problems_unrelated->cxx11_embedded_problems_related_no_virtual cxx11_embedded_problems_variant_automatic_visit std::variant (Automatic Virtual Dispatch Using Template Method) cxx11_embedded_problems_variant_manual_visit std::variant (Manual Virtual Dispatch, Using std::visit) cxx11_embedded_problems_variant_automatic_visit->cxx11_embedded_problems_variant_manual_visit cxx11_embedded_problems_variant_manual_visit->cxx11_embedded_problems_variant_manual_if cxx11_embedded_problems_virtual_vs_nonvirtual Replacing virtual With std::variant<> (In Real Life) cxx11_embedded_problems_virtual_vs_nonvirtual->cxx11_miscellaneous_variant cxx03_inheritance_oo_interface C++ “Interfaces” cxx11_embedded_problems_virtual_vs_nonvirtual->cxx03_inheritance_oo_interface cxx11_embedded_problems_classic_virtual Classic Virtual cxx11_embedded_problems_classic_virtual->cxx03_inheritance_oo_interface cxx11_embedded_problems_related_no_virtual->cxx11_embedded_problems_classic_virtual cxx11_miscellaneous_any A Better void*: std::any cxx11_new_language_features_miscellaneous->cxx11_new_language_features_move_pf_overview cxx11_new_language_features_auto Duck Typing (Err, auto) Without A Duck cxx11_new_language_features_strongly_typed_enums Strongly Typed enum cxx11_new_language_features_auto->cxx11_new_language_features_strongly_typed_enums cxx11_new_language_features_range_based_for Range Based for Loops: Introduction cxx11_new_language_features_brace_initialization_intro Brace Initialization: Introduction cxx11_new_language_features_range_based_for->cxx11_new_language_features_brace_initialization_intro cxx11_new_language_features_delete = delete cxx11_new_language_features_default = default cxx11_new_language_features_constexpr constexpr cxx11_new_language_features_final final cxx11_new_language_features_delegating_ctor Delegating Constructor cxx11_new_language_features_delegating_ctor->cxx11_new_language_features_range_based_for cxx11_new_language_features_modules Modules cxx11_new_language_features_livehack_smartptr_move SmartPtr With Move Semantics cxx11_new_language_features_livehack_smartptr_move->cxx11_smart_pointers_introduction_livehack cxx11_new_language_features_livehack_smartptr_move->cxx11_new_language_features_move_pf_overview cxx11_new_language_features_override override cxx11_new_language_features_range_based_for_map Case Study: Range Based for On std::map cxx11_new_language_features_range_based_for_map->cxx11_new_language_features_range_based_for cxx11_new_language_features_structured_binding Tuple Unpacking (Err, Structured Binding) cxx11_new_language_features_structured_binding->cxx11_new_language_features_auto c_program_sanity_discrete_values Discrete Values - enum cxx11_new_language_features_strongly_typed_enums->c_program_sanity_discrete_values cxx11_new_language_features_lambda_lambda_capture Lambda: More Capturing cxx11_new_language_features_lambda_lambda Lambda cxx11_new_language_features_lambda_lambda_capture->cxx11_new_language_features_lambda_lambda cxx11_new_language_features_lambda_lambda_is_functor Live Hacking: Handwritten Functors (Too Much Boilerplate) cxx11_new_language_features_lambda_lambda_is_functor_pitfall Live Hacking: Handwritten Functors, And Capturing By Reference (Pitfalls) cxx11_new_language_features_lambda_lambda_is_functor_pitfall->cxx11_new_language_features_lambda_lambda_is_functor cxx11_new_language_features_coroutines_intro Coroutines: An Overview cxx11_new_language_features_concepts_links Concepts: Links cxx11_new_language_features_concepts_intro Concepts: Overview cxx11_new_language_features_concepts_links->cxx11_new_language_features_concepts_intro cxx11_new_language_features_concepts_writing_concepts Writing Your Own Concepts cxx11_new_language_features_concepts_writing_concepts->cxx11_new_language_features_concepts_intro cxx11_new_language_features_move_pf_livehack_using_string_move Using Move Semantics In Own Code cxx11_new_language_features_move_pf_livehack_string_move Implementing Move Semantics (class String, Live Hacked) cxx11_new_language_features_move_pf_livehack_using_string_move->cxx11_new_language_features_move_pf_livehack_string_move cxx11_new_language_features_move_pf_livehack_using_string_move->cxx11_new_language_features_move_pf_overview cxx11_new_language_features_move_pf_livehack_string_move->cxx11_new_language_features_move_pf_overview cxx11_new_language_features_move_pf_overview->cxx11_smart_pointers_unique_ptr cxx03_functions_and_methods_references References cxx11_new_language_features_move_pf_overview->cxx03_functions_and_methods_references cxx03_data_encapsulation_object_copy Object Copy (And Resource Management): There Be Dragons cxx11_new_language_features_move_pf_overview->cxx03_data_encapsulation_object_copy cxx11_new_language_features_move_pf_afterword Afterword, Further Reading cxx11_new_language_features_move_pf_afterword->cxx11_perfect_forwarding cxx11_new_language_features_move_pf_afterword->cxx11_new_language_features_move_pf_livehack_using_string_move cxx11_new_language_features_ranges_links Ranges And Views: Links cxx11_new_language_features_ranges_intro Ranges: Overview cxx11_new_language_features_ranges_links->cxx11_new_language_features_ranges_intro cxx11_new_language_features_ranges_good_bad Ranges And Views: Good Or Bad? cxx11_new_language_features_ranges_links->cxx11_new_language_features_ranges_good_bad cxx11_new_language_features_brace_initialization_mess Brace Initialization: A Mess cxx11_new_language_features_brace_initialization_mess->cxx11_new_language_features_brace_initialization_intro cxx11_new_language_features_brace_initialization_implementor_view std::initializer_list: Brace Initialization, Implementor’s View cxx11_new_language_features_brace_initialization_mess->cxx11_new_language_features_brace_initialization_implementor_view cxx11_new_language_features_brace_initialization_intro->cxx11_new_language_features_auto cxx11_multithreading_atomics std::atomic cxx11_multithreading_race_conditions Race Conditions cxx11_multithreading_atomics->cxx11_multithreading_race_conditions cxx11_multithreading_race_conditions->linux_sysprog_posix_threads_exercise_pthcreate_racecondition cxx11_multithreading_thread Threads in C++ cxx11_multithreading_race_conditions->cxx11_multithreading_thread cxx11_multithreading_promise_future std::promise and std::future (And Some std::chrono) (Some Live Hacking) cxx11_multithreading_promise_future->cxx11_multithreading_thread cxx11_multithreading_thread->linux_sysprog_posix_threads_lifecycle cxx11_multithreading_introduction Threads Introduction cxx11_multithreading_thread->cxx11_multithreading_introduction cxx11_multithreading_scoped_locking Scoped Locking cxx11_multithreading_mutex std::mutex And Friends cxx11_multithreading_scoped_locking->cxx11_multithreading_mutex cxx11_multithreading_mutex->linux_sysprog_posix_threads_mutex cxx11_multithreading_mutex->cxx11_multithreading_race_conditions cxx11_multithreading_introduction->cxx11_functions_functions_function cxx11_multithreading_condition_variable std::condition_variable (Live Hacking Multithreaded Queue) cxx11_multithreading_condition_variable->linux_sysprog_posix_threads_condition_variable cxx11_multithreading_condition_variable->cxx11_multithreading_promise_future cxx11_multithreading_condition_variable->cxx11_multithreading_mutex cxx11_multithreading_chrono std::chrono cxx11_introduction_overview_livehacking A Live-Hacked Tour Around The New C++ cxx11_exercises_bag_copy Exercise: Bag Of Items, By Copy cxx11_exercises_bag_copy->cxx11_new_language_features_auto cxx11_exercises_bag_copy->cxx11_new_language_features_range_based_for cxx11_exercises_bag_shared Exercise: Bag Of Items, By Shared Reference cxx11_exercises_bag_shared->cxx11_smart_pointers_shared_ptr cxx11_exercises_bag_shared->cxx11_smart_pointers_weak_ptr cxx11_exercises_bag_shared->cxx11_new_language_features_auto cxx11_exercises_bag_shared->cxx11_new_language_features_range_based_for cxx11_exercises_bag_unique Exercise: Bag Of Items, By Unique Reference cxx11_exercises_bag_shared->cxx11_exercises_bag_unique cxx11_exercises_bag_unique->cxx11_smart_pointers_unique_ptr cxx11_exercises_bag_unique->cxx11_new_language_features_auto cxx11_exercises_bag_unique->cxx11_new_language_features_range_based_for cxx11_exercises_bag_unique->cxx11_exercises_bag_copy cxx03_introduction Introduction c_introduction_installation Installation cxx03_introduction->c_introduction_installation cxx03_inheritance_oo_virtual_method Virtual Methods cxx03_inheritance_oo_interface->cxx03_inheritance_oo_virtual_method cxx03_inheritance_oo_virtual_destructor Virtual Destructors cxx03_inheritance_oo_interface->cxx03_inheritance_oo_virtual_destructor cxx03_inheritance_oo_polymorphism Polymorphic Usage Of Objects cxx03_inheritance_oo_interface->cxx03_inheritance_oo_polymorphism cxx03_inheritance_oo_private_protected Inheritance: private, protected (Implementation Inheritance) cxx03_inheritance_oo_basics Inheritance Basics cxx03_inheritance_oo_private_protected->cxx03_inheritance_oo_basics cxx03_data_encapsulation_classes_objects Classes and Objects cxx03_inheritance_oo_basics->cxx03_data_encapsulation_classes_objects cxx03_inheritance_oo_virtual_method->cxx03_inheritance_oo_basics cxx03_inheritance_oo_destructor Destructors And Inheritance cxx03_inheritance_oo_destructor->cxx03_inheritance_oo_basics cxx03_data_encapsulation_ctor_dtor More Constructors, Destructors cxx03_inheritance_oo_destructor->cxx03_data_encapsulation_ctor_dtor cxx03_inheritance_oo_virtual_destructor->cxx03_inheritance_oo_virtual_method cxx03_inheritance_oo_virtual_destructor->cxx03_inheritance_oo_destructor cxx03_inheritance_oo_virtual_destructor->cxx03_inheritance_oo_polymorphism cxx03_inheritance_oo_polymorphism->cxx03_inheritance_oo_virtual_method cxx03_functions_and_methods_this this cxx03_functions_and_methods_references->cxx03_functions_and_methods_this cxx03_functions_and_methods_methods Methods cxx03_functions_and_methods_overloading Overloading cxx03_functions_and_methods_methods->cxx03_functions_and_methods_overloading cxx03_functions_and_methods_static static Methods cxx03_functions_and_methods_static->cxx03_functions_and_methods_references cxx03_functions_and_methods_operators Operator Overloading cxx03_functions_and_methods_operators->cxx03_functions_and_methods_static cxx03_functions_and_methods_exercise_class_rectangle Exercise (FH): class rectangle cxx03_functions_and_methods_exercise_class_point Exercise (FH): class point cxx03_functions_and_methods_exercise_class_rectangle->cxx03_functions_and_methods_exercise_class_point cxx03_functions_and_methods_exercise_class_cuboid Exercise (FH): class cuboid cxx03_functions_and_methods_exercise_class_point3d Exercise (FH): class point3d cxx03_functions_and_methods_exercise_class_cuboid->cxx03_functions_and_methods_exercise_class_point3d cxx03_functions_and_methods_exercise_class_point3d->cxx03_functions_and_methods_exercise_class_point cxx03_functions_and_methods_static_member_variables static Member Variables cxx03_functions_and_methods_static_member_variables->cxx03_functions_and_methods_static cxx03_functions_and_methods_this->cxx03_functions_and_methods_methods cxx03_functions_and_methods_overloading->cxx03_data_encapsulation_classes_objects cxx03_data_encapsulation_object_copy->cxx03_data_encapsulation_ctor_dtor cxx03_data_encapsulation_classes_objects->cxx03_introduction cxx03_data_encapsulation_c Object Oriented Programming In Good Ol’ C cxx03_data_encapsulation_classes_objects->cxx03_data_encapsulation_c cxx03_data_encapsulation_initializer_list Constructors: Member Initialization cxx03_data_encapsulation_ctor_custom Custom Constructor cxx03_data_encapsulation_initializer_list->cxx03_data_encapsulation_ctor_custom cxx03_data_encapsulation_ctor_custom->cxx03_data_encapsulation_classes_objects cxx03_data_encapsulation_c->cxx03_introduction cxx03_data_encapsulation_ctor_default Default Constructor cxx03_data_encapsulation_ctor_default->cxx03_data_encapsulation_ctor_custom cxx03_data_encapsulation_ctor_dtor->cxx03_data_encapsulation_ctor_custom cxx03_data_encapsulation_ctor_dtor->cxx03_data_encapsulation_ctor_default cxx03_data_encapsulation_copy_basics Copy Constructor, Assignment Operator cxx03_data_encapsulation_copy_basics->cxx03_data_encapsulation_ctor_custom cxx03_data_encapsulation_copy_basics->cxx03_data_encapsulation_ctor_default cxx03_stl_vector_copy_etc std::vector (And std::copy()) cxx03_stl_basics Standard Template Library: Basics cxx03_stl_vector_copy_etc->cxx03_stl_basics cxx03_templates_class_templates Class Templates cxx03_stl_basics->cxx03_templates_class_templates cxx03_stl_associative_containers_map std::map cxx03_stl_associative_containers_basics Associative Containers cxx03_stl_associative_containers_map->cxx03_stl_associative_containers_basics cxx03_stl_associative_containers_basics->cxx03_stl_basics cxx03_stl_associative_containers_multimap multimap<> cxx03_stl_associative_containers_multimap->cxx03_stl_associative_containers_basics cxx03_stl_algorithm_copy copy<> cxx03_stl_algorithm_copy->cxx03_stl_basics cxx03_stl_algorithm_find find<>: Sequential Search, by Equality cxx03_stl_algorithm_find->cxx03_stl_basics cxx03_stl_algorithm_lower_bound lower_bound<>: On Sorted Sequence cxx03_stl_algorithm_lower_bound->cxx03_stl_basics cxx03_stl_algorithm_binary_search binary_search<>: On Sorted Sequence cxx03_stl_algorithm_lower_bound->cxx03_stl_algorithm_binary_search cxx03_stl_algorithm_sort sort<> cxx03_stl_algorithm_lower_bound->cxx03_stl_algorithm_sort cxx03_stl_algorithm_binary_search->cxx03_stl_basics cxx03_stl_algorithm_binary_search->cxx03_stl_algorithm_sort cxx03_stl_algorithm_sort->cxx03_stl_basics cxx03_stl_algorithm_find_if find_if<>: Sequential Search, Customizable cxx03_stl_algorithm_find_if->cxx03_stl_algorithm_find cxx03_stl_algorithm_for_each for_each<> cxx03_stl_algorithm_for_each->cxx03_stl_basics cxx03_stl_algorithm_reverse reverse<>: Reversing In-Place cxx03_stl_algorithm_reverse->cxx03_stl_basics cxx03_stl_algorithm_reverse_copy reverse_copy<>: Copying and Reversing cxx03_stl_algorithm_reverse_copy->cxx03_stl_basics cxx03_stl_sequential_containers_list list<> cxx03_stl_sequential_containers_basics Sequential Containers cxx03_stl_sequential_containers_list->cxx03_stl_sequential_containers_basics cxx03_stl_sequential_containers_basics->cxx03_stl_basics cxx03_stl_sequential_containers_vector vector<> cxx03_stl_sequential_containers_vector->cxx03_stl_sequential_containers_basics cxx03_stl_allocator_basics Allocator Basics cxx03_stl_exercises_reverse_string_exercise Exercise: Reverse a String cxx03_stl_exercises_reverse_string_solution Solution: Reverse a String cxx03_stl_exercises_reverse_string_solution->cxx03_stl_algorithm_reverse cxx03_stl_exercises_reverse_string_solution->cxx03_stl_algorithm_reverse_copy cxx03_stl_exercises_reverse_string_solution->cxx03_stl_exercises_reverse_string_exercise cxx03_templates_function_templates Function Templates cxx03_templates_class_templates->cxx03_templates_function_templates cxx03_exceptions_try_catch try - catch cxx03_templates_function_templates->cxx03_exceptions_try_catch cxx03_exceptions_try_catch->cxx03_data_encapsulation_classes_objects cxx03_exceptions_basics Basics cxx03_exceptions_try_catch->cxx03_exceptions_basics cxx03_standard_library_miscellanea_string std::string cxx03_exercises_userdb_user_const Exercise: Use const cxx03_exercises_userdb_user_const->cxx03_functions_and_methods_references cxx03_exercises_userdb_user_access_methods Exercise: Access Methods for Members cxx03_exercises_userdb_user_const->cxx03_exercises_userdb_user_access_methods cxx03_exercises_userdb_user_access_methods->cxx03_functions_and_methods_methods cxx03_exercises_userdb_user_simple_method Exercise: Simple Method (Users Age By n Years) cxx03_exercises_userdb_user_access_methods->cxx03_exercises_userdb_user_simple_method cxx03_exercises_userdb_user_simple_method->cxx03_functions_and_methods_methods cxx03_exercises_userdb_user_const_members Exercise: const Members cxx03_exercises_userdb_user_simple_method->cxx03_exercises_userdb_user_const_members cxx03_exercises_userdb_userdb_search_notfound_exception Exercise: Search, “User Not Found” Exception cxx03_exercises_userdb_userdb_search_notfound_exception->cxx03_exceptions_try_catch cxx03_exercises_userdb_userdb_search_find_if Exercise: Search a User By Lastname (std::find_if) cxx03_exercises_userdb_userdb_search_notfound_exception->cxx03_exercises_userdb_userdb_search_find_if cxx03_exercises_userdb_userdb_search Exercise: Search a User By Lastname cxx03_exercises_userdb_userdb_search_find_if->cxx03_exercises_userdb_userdb_search cxx03_exercises_userdb_user_const_members->cxx03_data_encapsulation_ctor_dtor cxx03_exercises_userdb_user_ctor Exercise: Transform struct User Into A Class cxx03_exercises_userdb_user_const_members->cxx03_exercises_userdb_user_ctor cxx03_exercises_userdb_userdb_insert Exercise: Insert a User into UserDB cxx03_exercises_userdb_userdb_search->cxx03_exercises_userdb_userdb_insert cxx03_exercises_userdb_userdb_insert->cxx03_stl_basics cxx03_exercises_userdb_userdb_vector_basic Exercise: Use std::vector in UserDB cxx03_exercises_userdb_userdb_insert->cxx03_exercises_userdb_userdb_vector_basic cxx03_exercises_userdb_userdb_vector_basic->cxx03_stl_basics cxx03_exercises_userdb_user_default_ctor Exercise: Default Constructor (was: Arrays of Objects) cxx03_exercises_userdb_userdb_vector_basic->cxx03_exercises_userdb_user_default_ctor cxx03_exercises_userdb_user_default_ctor->cxx03_data_encapsulation_ctor_dtor cxx03_exercises_userdb_user_default_ctor->cxx03_exercises_userdb_user_const cxx03_exercises_userdb_user_ctor->cxx03_data_encapsulation_ctor_custom cxx03_exercises_userdb_user_ctor->cxx03_standard_library_miscellanea_string cxx03_exercises_misc_american_flag Exercise: Paint the American Flag Onto Standard Output cxx03_exercises_misc_passwd_parser Exercise: Parse A Line From /etc/passwd cxx03_exercises_misc_passwd_parser->cxx03_exceptions_try_catch cxx03_exercises_misc_passwd_parser->cxx03_standard_library_miscellanea_string cxx03_exercises_misc_sum_integers_from_stdin Exercise: Sum of Integers Coming From cin cxx03_exercises_misc_fh_moodle_quiz FH/Moodle Quiz: C++ cxx03_exercises_misc_fh_moodle_quiz->cxx03_functions_and_methods_overloading cxx03_dynamic_memory_todo Dynamic Memory (To Be Done) c_program_sanity_integral_types Know Your Integers c_program_sanity_discrete_values->c_program_sanity_integral_types c_program_sanity_valgrind valgrind c_program_sanity_explicit_type_safety Explict Type Safety c_program_sanity_valgrind->c_program_sanity_explicit_type_safety c_program_sanity_const Correctness - const c_program_sanity_static Visibility - static c_program_sanity_const->c_program_sanity_static c_program_sanity_static->c_program_sanity_discrete_values c_program_sanity_introduction Sanity and Readabilty c_program_sanity_integral_types->c_program_sanity_introduction c_advanced_language_features_alignment Alignment c_program_sanity_introduction->c_advanced_language_features_alignment c_program_sanity_struct_initialization Struct Initialization c_program_sanity_explicit_type_safety->c_program_sanity_struct_initialization c_program_sanity_struct_initialization->c_program_sanity_const c_pointers_and_arrays_pointers_and_arrays Pointers and Arrays c_pointers_and_arrays_exercise_swap Exercise: Function That Swaps Two Variables c_pointers_and_arrays_pointers_and_arrays->c_pointers_and_arrays_exercise_swap c_pointers_and_arrays_pointers_and_function_arguments Pointers as Function Parameters c_pointers_and_arrays_exercise_swap->c_pointers_and_arrays_pointers_and_function_arguments c_pointers_and_arrays_pointers_and_addresses Pointers and Addresses c_pointers_and_arrays_pointers_and_function_arguments->c_pointers_and_arrays_pointers_and_addresses c_pointers_and_arrays_command_line_arguments Commandline Arguments c_pointers_and_arrays_command_line_arguments->c_pointers_and_arrays_pointers_and_arrays c_functions_and_program_structure_c_preprocessor_advanced C Preprocessor: More c_pointers_and_arrays_pointers_and_addresses->c_functions_and_program_structure_c_preprocessor_advanced c_functions_and_program_structure_c_preprocessor C Preprocessor: Basics c_functions_and_program_structure_c_preprocessor_advanced->c_functions_and_program_structure_c_preprocessor c_functions_and_program_structure_static_variables Static Variables c_functions_and_program_structure_c_preprocessor->c_functions_and_program_structure_static_variables c_functions_and_program_structure_header_files Header Files c_functions_and_program_structure_static_variables->c_functions_and_program_structure_header_files c_functions_and_program_structure_basics Basics c_program_flow_goto_and_labels goto and Labels c_functions_and_program_structure_basics->c_program_flow_goto_and_labels c_functions_and_program_structure_external_variables Extern/Global Variables c_functions_and_program_structure_header_files->c_functions_and_program_structure_external_variables c_functions_and_program_structure_external_variables->c_functions_and_program_structure_basics c_types_operators_expressions_constants Constants c_types_operators_expressions_datatypes_size Data Types, Sizes c_types_operators_expressions_constants->c_types_operators_expressions_datatypes_size c_types_operators_expressions_variable_names Variable Names c_types_operators_expressions_datatypes_size->c_types_operators_expressions_variable_names c_types_operators_expressions_arithmetic_operators Arithmetic Operators c_types_operators_expressions_declarations Variable Definitions c_types_operators_expressions_arithmetic_operators->c_types_operators_expressions_declarations c_types_operators_expressions_declarations->c_types_operators_expressions_constants c_types_operators_expressions_increment_decrement_operators Increment, Decrement c_types_operators_expressions_type_conversions Type Conversions c_types_operators_expressions_increment_decrement_operators->c_types_operators_expressions_type_conversions c_types_operators_expressions_relational_logical_operators Relational and Logical Operators c_types_operators_expressions_type_conversions->c_types_operators_expressions_relational_logical_operators c_types_operators_expressions_precedence_and_order_of_evaluation Precedence, Associativity c_types_operators_expressions_conditional_expressions ?: - Conditional Expression c_types_operators_expressions_precedence_and_order_of_evaluation->c_types_operators_expressions_conditional_expressions c_types_operators_expressions_assignment_operators_and_expressions Assignment with Calculation c_types_operators_expressions_conditional_expressions->c_types_operators_expressions_assignment_operators_and_expressions c_types_operators_expressions_introduction Type System c_types_operators_expressions_variable_names->c_types_operators_expressions_introduction c_types_operators_expressions_relational_logical_operators->c_types_operators_expressions_arithmetic_operators c_types_operators_expressions_bit_operators Bit-Operators c_types_operators_expressions_exercise_string_reduce Exercise: Copy and Reduce String c_types_operators_expressions_bit_operators->c_types_operators_expressions_exercise_string_reduce c_types_operators_expressions_exercise_string_reduce->c_types_operators_expressions_increment_decrement_operators c_introduction_external_variables_and_scope Lifetime of Variables c_types_operators_expressions_introduction->c_introduction_external_variables_and_scope c_types_operators_expressions_assignment_operators_and_expressions->c_types_operators_expressions_bit_operators c_introduction_exercise_string_read_line Exercise: Read Line Into String from stdin c_introduction_external_variables_and_scope->c_introduction_exercise_string_read_line c_introduction_functions Functions c_introduction_exercise_histogram Exercise: Character Histogram c_introduction_functions->c_introduction_exercise_histogram c_introduction_arrays Arrays c_introduction_exercise_histogram->c_introduction_arrays c_introduction_character_arrays Character Arrays c_introduction_exercise_string_read_line->c_introduction_character_arrays c_introduction_exercise_power_declaration Exercise: Forward Declaration c_introduction_character_arrays->c_introduction_exercise_power_declaration c_introduction_introduction Introduction c_introduction_introduction->c_introduction_installation c_introduction_exercise_power_declaration->c_introduction_functions c_introduction_hello_world Hello World c_introduction_hello_world->c_introduction_introduction c_introduction_exercise_fahrenheit_cpp Exercise: Fahrenheit Table Using Macros c_introduction_cpp_symbolic_constants Symbolic Constants c_introduction_exercise_fahrenheit_cpp->c_introduction_cpp_symbolic_constants c_introduction_exercise_fahrenheit_for Exercise: Fahrenheit Table Using for c_introduction_cpp_symbolic_constants->c_introduction_exercise_fahrenheit_for c_introduction_for_loop for Loops c_introduction_exercise_fahrenheit_for->c_introduction_for_loop c_introduction_variables_and_arithmetic_expressions Variables and Arithmetic c_introduction_variables_and_arithmetic_expressions->c_introduction_hello_world c_introduction_character_io Character I/O c_introduction_character_io->c_introduction_exercise_fahrenheit_cpp c_introduction_exercise_wc Exercise: wc For The Poor c_introduction_arrays->c_introduction_exercise_wc c_introduction_exercise_fahrenheit_float Exercise: A Better Fahrenheit Table c_introduction_for_loop->c_introduction_exercise_fahrenheit_float c_introduction_exercise_fahrenheit_float->c_introduction_variables_and_arithmetic_expressions c_introduction_exercise_wc->c_introduction_character_io c_structures_basics struct: Basics c_structures_basics->c_pointers_and_arrays_command_line_arguments c_structures_typedef typedef: Type Alias c_structures_structures_and_functions struct: Functions c_structures_typedef->c_structures_structures_and_functions c_structures_structures_and_functions->c_structures_basics c_performance_memory Optimizations: Memory Optimizations c_performance_computebound Optimizations: Compute Bound Code c_performance_memory->c_performance_computebound c_performance_introduction Optimization c_performance_computebound->c_performance_introduction c_performance_introduction->c_program_sanity_valgrind c_program_flow_break_and_continue break and continue c_program_flow_goto_and_labels->c_program_flow_break_and_continue c_program_flow_loops_do_while Loops: do - while c_program_flow_loops_while_and_for Loops: while and for c_program_flow_loops_do_while->c_program_flow_loops_while_and_for c_program_flow_switch switch c_program_flow_loops_while_and_for->c_program_flow_switch c_program_flow_break_and_continue->c_program_flow_loops_do_while c_program_flow_else_if else - if c_program_flow_if_else if - else c_program_flow_else_if->c_program_flow_if_else c_program_flow_statements_and_blocks Statements and Blocks c_program_flow_if_else->c_program_flow_statements_and_blocks c_program_flow_switch->c_program_flow_else_if c_program_flow_statements_and_blocks->c_types_operators_expressions_precedence_and_order_of_evaluation c_profiling_oprofile oprofile c_profiling_callgrind callgrind c_profiling_oprofile->c_profiling_callgrind c_profiling_gprof GNU Profiler - gprof c_profiling_callgrind->c_profiling_gprof c_profiling_introduction Introduction c_profiling_gprof->c_profiling_introduction c_profiling_introduction->c_performance_memory c_memory_exercise_linked_list Singly Linked List c_memory_malloc Dynamic Memory c_memory_exercise_linked_list->c_memory_malloc c_memory_malloc->c_structures_typedef c_advanced_language_features_atomic Compiler Intrinsics c_advanced_language_features_alignment->c_advanced_language_features_atomic c_advanced_language_features_volatile Volatile c_advanced_language_features_volatile->c_memory_exercise_linked_list c_advanced_language_features_atomic->c_advanced_language_features_volatile project_xxx_dirty_upgrade Dirty Upgrade Path project_xxx_debian_config Get Debian 10 Kernel Config project_xxx_dirty_upgrade->project_xxx_debian_config project_xxx_yocto_kernel Extract Kernel from Intel Yocto BSP project_xxx_dirty_upgrade->project_xxx_yocto_kernel project_xxx_hardware_bringup Yocto Kernel Bringup on Customer Hardware project_xxx_hardware_bringup->project_xxx_dirty_upgrade project_xxx_wait_hardware Wait for Customer Hardware project_xxx_hardware_bringup->project_xxx_wait_hardware project_xxx_debian_kernel_package Finish: Debian Kernel Package etc. project_xxx_debian_kernel_package->project_xxx_dirty_upgrade project_xxx_debian_kernel_package->project_xxx_hardware_bringup project_xxx_audio_chip Audio Chip Bringup project_xxx_debian_kernel_package->project_xxx_audio_chip project_xxx_audio_chip->project_xxx_hardware_bringup cxx_class_template C++: Class Templates cxx_inheritance_virtual C++: Inheritance, Interfaces, virtual cxx_dynamic_memory C++: Dynamic Memory cxx_ownership_raii C++: Ownership/RAII cxx_global_initialization C++: Global Objects Initialization cxx_stl_container_intro C++: STL Containers (Intro) cxx_templates_vs_interfaces C++: Templates vs. Interfaces cxx_exercises_sensor_interface Exercise: Sensor Interface cxx_exercises_sensor_interface->linux_toolchain_cmake_local cxx_exercises_sensor_interface->cxx03_inheritance_oo_interface cxx_exercises_sensor_w1_factory Exercise: OneWire Sensor Factory cxx_exercises_sensor_w1 Exercise: OneWire Sensor Class cxx_exercises_sensor_w1_factory->cxx_exercises_sensor_w1 cxx_exercises_sensor_w1->linux_sysprog_fileio_exercise_w1_sensor cxx_exercises_sensor_w1->cxx_exercises_sensor_interface cxx_exercises_sensor_mock_nopoly Exercise: MockSensor_nopoly (Non-Polymorphic) cxx_exercises_sensor_mock_nopoly->linux_toolchain_cmake_local cxx_exercises_sensor_mock_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_sensor_avg_nopoly Exercise: AveragingSensor_nopoly (Non-Polymorphic) cxx_exercises_sensor_avg_nopoly->linux_toolchain_cmake_local cxx_exercises_sensor_avg_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_sensor_avg_nopoly->cxx03_data_encapsulation_initializer_list cxx_exercises_sensor_avg_nopoly->cxx_exercises_sensor_mock_nopoly cxx_exercises_hysteresis_nopoly Exercise: Hysteresis_nopoly (Non-Polymorphic) cxx_exercises_hysteresis_nopoly->linux_toolchain_cmake_local cxx_exercises_hysteresis_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_hysteresis_nopoly->cxx_exercises_sensor_mock_nopoly cxx_exercises_switch_mock_nopoly Exercise: Mocking Switch (Non-Polymorphic) cxx_exercises_hysteresis_nopoly->cxx_exercises_switch_mock_nopoly cxx_exercises_switch_mock_nopoly->linux_toolchain_cmake_local cxx_exercises_switch_mock_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_sensor_random_nopoly Exercise: RandomSensor_nopoly (Non-Polymorphic) cxx_exercises_sensor_random_nopoly->linux_toolchain_cmake_local cxx_exercises_sensor_random_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_sensor_random_nopoly->cxx03_data_encapsulation_initializer_list cxx_exercises_sensor_const_nopoly Exercise: ConstantSensor_nopoly (Non-Polymorphic) cxx_exercises_sensor_random_nopoly->cxx_exercises_sensor_const_nopoly cxx_exercises_sensor_const_nopoly->linux_toolchain_cmake_local cxx_exercises_sensor_const_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_display_led_stripe_nopoly Exercise: LEDStripeDisplay_nopoly (Non-Polymorphic) cxx_exercises_display_led_stripe_nopoly->linux_toolchain_cmake_local cxx_exercises_display_led_stripe_nopoly->cxx03_data_encapsulation_classes_objects cxx_exercises_display_led_stripe_nopoly->cxx_exercises_sensor_mock_nopoly cxx_exercises_display_led_stripe_nopoly->cxx_exercises_switch_mock_nopoly cxx_exercises_oo_shapes OO Basics, Interfaces (Shapes) cxx_exercises_oo_shapes->cxx03_inheritance_oo_interface cxx_exercises_oo_shapes->cxx03_functions_and_methods_methods cxx_exercises_oo_shapes->cxx03_functions_and_methods_static cxx_exercises_oo_shapes->cxx03_functions_and_methods_operators cxx_exercises_oo_shapes->cxx03_data_encapsulation_ctor_custom cxx_exercises_stl_map Exercise: std::map<> cxx_exercises_stl_map->cxx03_stl_associative_containers_map cxx_exercises_stl_uniq Exercise: Uniquify A Sequence cxx_exercises_stl_filter_odd Exercise: Filter Odd Elements cxx_exercises_stl_algo Exercise: Algorithms cxx_exercises_stl_algo->cxx03_stl_vector_copy_etc cxx_exercises_stl_algo->cxx03_stl_algorithm_copy cxx_exercises_stl_algo->cxx03_stl_algorithm_find cxx_exercises_stl_filter_generic Exercise: Generic Filter cxx_exercises_stl_vector Exercise: std::vector<> cxx_exercises_stl_vector->cxx03_stl_vector_copy_etc cxx_exercises_stl_filter_greater_10 Exercise: Filter Elements Greater Than 10 cxx_exercises_stl_sensor_repository_remove_sunny Remove - Sunny Case cxx_exercises_stl_sensor_repository_insert_sunny Insert - Sunny Case cxx_exercises_stl_sensor_repository_remove_sunny->cxx_exercises_stl_sensor_repository_insert_sunny cxx_exercises_stl_sensor_repository_insert_sunny->cxx_exercises_stl_map cxx_exercises_stl_sensor_repository_insert_no_overwrite Insert - Not Overwriting Existing Elements cxx_exercises_stl_sensor_repository_insert_no_overwrite->cxx_exercises_stl_sensor_repository_insert_sunny cxx_exercises_stl_sensor_repository_memory_leaks Memory Leaks? cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_remove_sunny cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_insert_sunny cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_insert_no_overwrite cxx_exercises_stl_sensor_repository_lookup_not_found Lookup - Not Found cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_lookup_not_found cxx_exercises_stl_sensor_repository_lookup_sunny Lookup - Sunny Case cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_lookup_sunny cxx_exercises_stl_sensor_repository_remove_not_found Remove - Not Found cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_remove_not_found cxx_exercises_stl_sensor_repository_size_const .size() Is const cxx_exercises_stl_sensor_repository_memory_leaks->cxx_exercises_stl_sensor_repository_size_const cxx_exercises_stl_sensor_repository_lookup_not_found->cxx_exercises_stl_sensor_repository_lookup_sunny cxx_exercises_stl_sensor_repository_lookup_sunny->cxx_exercises_stl_sensor_repository_insert_sunny cxx_exercises_stl_sensor_repository_remove_not_found->cxx_exercises_stl_sensor_repository_remove_sunny cxx_exercises_stl_sensor_repository_size_const->cxx_exercises_stl_sensor_repository_insert_sunny cxx_exercises_design_patterns_composite Exercise: Composite cxx_exercises_design_patterns_composite->cxx_exercises_sensor_interface cxx_design_patterns_composite Composite cxx_exercises_design_patterns_composite->cxx_design_patterns_composite cxx_exercises_design_patterns_interpreter_and_adapter Exercise: Interpreter Combined With Adapter (And A Proxy) cxx_exercises_design_patterns_interpreter_basic Exercise: Arithmetic Expression Interpreter cxx_exercises_design_patterns_interpreter_and_adapter->cxx_exercises_design_patterns_interpreter_basic cxx_design_patterns_adapter Adapter cxx_exercises_design_patterns_interpreter_and_adapter->cxx_design_patterns_adapter cxx_design_patterns_interpreter Interpreter cxx_exercises_design_patterns_interpreter_and_adapter->cxx_design_patterns_interpreter cxx_design_patterns_sensor_hierarchy Exercise Foundation: Sensor Hierarchy cxx_exercises_design_patterns_interpreter_and_adapter->cxx_design_patterns_sensor_hierarchy cxx_exercises_design_patterns_interpreter_basic->cxx03_inheritance_oo_interface cxx_design_patterns_uml UML Short Introduction cxx_exercises_design_patterns_interpreter_basic->cxx_design_patterns_uml cxx_exercises_design_patterns_interpreter_basic->cxx_design_patterns_interpreter cxx_exercises_design_patterns_command Exercise: Command cxx_design_patterns_command Command cxx_exercises_design_patterns_command->cxx_design_patterns_command cxx_exercises_design_patterns_observer Exercise: Adapter cxx_design_patterns_observer Observer cxx_exercises_design_patterns_observer->cxx_design_patterns_observer cxx_exercises_design_patterns_proxy_remote Exercise: Proxy (Remote Thermometer) cxx_exercises_design_patterns_proxy_remote->cxx_exercises_sensor_interface cxx_exercises_design_patterns_adapter Exercise: Adapter cxx_exercises_design_patterns_proxy_remote->cxx_exercises_design_patterns_adapter cxx_exercises_design_patterns_proxy_round Exercise: Proxy (Rounding Thermometer) cxx_exercises_design_patterns_proxy_remote->cxx_exercises_design_patterns_proxy_round cxx_exercises_design_patterns_proxy_remote->cxx_design_patterns_uml cxx_exercises_design_patterns_proxy_remote->cxx_design_patterns_sensor_hierarchy cxx_design_patterns_proxy Proxy cxx_exercises_design_patterns_proxy_remote->cxx_design_patterns_proxy cxx_exercises_design_patterns_singleton_flexible_strict Exercise: Singleton (Flexible And Strict) cxx_exercises_design_patterns_singleton_flexible Exercise: Singleton (Flexible) cxx_exercises_design_patterns_singleton_flexible_strict->cxx_exercises_design_patterns_singleton_flexible cxx_exercises_design_patterns_singleton_inflexible Exercise: Singleton (Inflexible) cxx_exercises_design_patterns_singleton_flexible_strict->cxx_exercises_design_patterns_singleton_inflexible cxx_design_patterns_singleton Singleton cxx_exercises_design_patterns_singleton_flexible_strict->cxx_design_patterns_singleton cxx_exercises_design_patterns_singleton_flexible_strict->cxx_design_patterns_uml cxx_exercises_design_patterns_abstract_factory Exercise: Abstract Factory cxx_exercises_design_patterns_abstract_factory->cxx_exercises_sensor_interface cxx_design_patterns_abstract_factory Abstract Factory cxx_exercises_design_patterns_abstract_factory->cxx_design_patterns_abstract_factory cxx_exercises_design_patterns_singleton_flexible->cxx_exercises_design_patterns_singleton_inflexible cxx_exercises_design_patterns_singleton_flexible->cxx_design_patterns_singleton cxx_exercises_design_patterns_singleton_flexible->cxx_design_patterns_uml cxx_exercises_design_patterns_adapter->cxx_exercises_sensor_interface cxx_exercises_design_patterns_adapter->cxx_design_patterns_adapter cxx_exercises_design_patterns_proxy_round->cxx_exercises_sensor_interface cxx_exercises_design_patterns_proxy_round->cxx_design_patterns_uml cxx_exercises_design_patterns_proxy_round->cxx_design_patterns_sensor_hierarchy cxx_exercises_design_patterns_proxy_round->cxx_design_patterns_proxy cxx_exercises_design_patterns_decorator Exercise: Decorator cxx_exercises_design_patterns_decorator->cxx_exercises_sensor_interface cxx_design_patterns_decorator Decorator cxx_exercises_design_patterns_decorator->cxx_design_patterns_decorator cxx_exercises_design_patterns_singleton_inflexible->cxx_design_patterns_singleton cxx_exercises_design_patterns_singleton_inflexible->cxx_design_patterns_uml cxx_exercises_design_patterns_solutions_composite Solution: Composite cxx_exercises_design_patterns_solutions_composite->cxx_exercises_design_patterns_composite cxx_exercises_design_patterns_solutions_interpreter_and_adapter Solution: Interpreter Combined With Adapter (And A Proxy) cxx_exercises_design_patterns_solutions_interpreter_and_adapter->cxx_exercises_design_patterns_interpreter_and_adapter cxx_exercises_design_patterns_solutions_interpreter_basic Solution: Arithmetic Expression Interpreter cxx_exercises_design_patterns_solutions_interpreter_basic->cxx_exercises_design_patterns_interpreter_basic cxx_exercises_design_patterns_solutions_command Solution: Command cxx_exercises_design_patterns_solutions_command->cxx_exercises_design_patterns_command cxx_exercises_design_patterns_solutions_observer Solution: Observer cxx_exercises_design_patterns_solutions_observer->cxx_exercises_design_patterns_observer cxx_exercises_design_patterns_solutions_proxy_remote Solution: Proxy (Remote Thermometer) cxx_exercises_design_patterns_solutions_proxy_remote->cxx_exercises_design_patterns_proxy_remote cxx_exercises_design_patterns_solutions_singleton_flexible_strict Solution: Singleton (Flexible And Strict) cxx_exercises_design_patterns_solutions_singleton_flexible_strict->cxx_exercises_design_patterns_singleton_flexible_strict cxx_exercises_design_patterns_solutions_abstract_factory Solution: Abstract Factory cxx_exercises_design_patterns_solutions_abstract_factory->cxx_exercises_design_patterns_abstract_factory cxx_exercises_design_patterns_solutions_singleton_flexible Solution: Singleton (Flexible) cxx_exercises_design_patterns_solutions_singleton_flexible->cxx_exercises_design_patterns_singleton_flexible cxx_exercises_design_patterns_solutions_adapter Solution: Adapter cxx_exercises_design_patterns_solutions_adapter->cxx_exercises_design_patterns_adapter cxx_exercises_design_patterns_solutions_proxy_round Solution: Proxy (Rounding Thermometer) cxx_exercises_design_patterns_solutions_proxy_round->cxx_exercises_design_patterns_proxy_round cxx_exercises_design_patterns_solutions_decorator Solution: Decorator cxx_exercises_design_patterns_solutions_decorator->cxx_exercises_design_patterns_decorator cxx_exercises_design_patterns_solutions_singleton_inflexible Solution: Singleton (Inflexible) cxx_exercises_design_patterns_solutions_singleton_inflexible->cxx_exercises_design_patterns_singleton_inflexible cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo Exercise (FH): Introducing a Sensor Class cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo->cxx03_data_encapsulation_classes_objects cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_loop_function Exercise (FH): Extract Measurement Loop Into Function cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_loop_function->cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_no_polymorphism Exercise (FH): Replace Sensor cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_no_polymorphism->cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_loop_function cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_random_sensor Exercise (FH): Write A Sensor Class: RandomSensor cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo_random_sensor->cxx_exercises_fh_sensor_first_try_exercise_FH_sensor_oo cxx_design_patterns_command->cxx03_inheritance_oo_interface cxx_design_patterns_command->cxx_design_patterns_uml cxx_design_patterns_command->cxx_design_patterns_composite cxx_design_patterns_decorator->cxx03_inheritance_oo_interface cxx_design_patterns_decorator->cxx_design_patterns_uml cxx_design_patterns_decorator->cxx_design_patterns_adapter cxx_design_patterns_decorator->cxx_design_patterns_sensor_hierarchy cxx_design_patterns_observer->cxx03_inheritance_oo_interface cxx_design_patterns_observer->cxx_design_patterns_uml cxx_design_patterns_singleton->cxx03_inheritance_oo_interface cxx_design_patterns_singleton->cxx_design_patterns_uml cxx_design_patterns_uml->cxx03_inheritance_oo_interface cxx_design_patterns_adapter->cxx03_inheritance_oo_interface cxx_design_patterns_adapter->cxx_design_patterns_uml cxx_design_patterns_adapter->cxx_design_patterns_sensor_hierarchy cxx_design_patterns_interpreter->cxx03_inheritance_oo_interface cxx_design_patterns_interpreter->cxx_design_patterns_uml cxx_design_patterns_sensor_hierarchy->cxx03_inheritance_oo_interface cxx_design_patterns_sensor_hierarchy->cxx_design_patterns_uml cxx_design_patterns_proxy->cxx03_inheritance_oo_interface cxx_design_patterns_proxy->cxx_design_patterns_uml cxx_design_patterns_proxy->cxx_design_patterns_sensor_hierarchy cxx_design_patterns_abstract_factory->cxx03_inheritance_oo_interface cxx_design_patterns_abstract_factory->cxx_design_patterns_singleton cxx_design_patterns_abstract_factory->cxx_design_patterns_uml cxx_design_patterns_abstract_factory->cxx_design_patterns_sensor_hierarchy cxx_design_patterns_composite->cxx03_inheritance_oo_interface cxx_design_patterns_composite->cxx_exercises_design_patterns_proxy_round cxx_design_patterns_composite->cxx_design_patterns_uml cxx_design_patterns_composite->cxx_design_patterns_sensor_hierarchy cxx_design_patterns_composite->cxx_design_patterns_proxy cxx_design_patterns_oo_principles OO Design Principles cxx_design_patterns_oo_principles->cxx03_inheritance_oo_interface cxx_design_patterns_oo_principles->cxx_design_patterns_uml cxx_design_patterns_heating_screenplay Case Study/Livehacking: Heating Control (Reading Sensors) cxx_design_patterns_heating_screenplay->cxx_design_patterns_uml cxx_design_patterns_heating_screenplay->cxx_design_patterns_adapter cxx_design_patterns_heating_screenplay->cxx_design_patterns_sensor_hierarchy