Embedded C Application Design Principles Training Course
This instructor-led live training, available both online and onsite, is designed for C developers keen to master the design principles of embedded C.
Upon completion of this training, participants will be able to:
- Grasp the design considerations that ensure embedded C programs are reliable
- Define the functionality of an embedded system
- Establish the program logic and structure required to achieve desired outcomes
- Design a robust, error-free embedded application
- Extract optimal performance from the target hardware
Course Format:
- Interactive lectures and discussions
- Exercises and practical practice
- Hands-on implementation within a live lab environment
Customization Options:
- To request tailored training for this course, please contact us to make arrangements.
Course Outline
Introduction
- What constitutes design?
- Standard C versus Embedded C
The Lifecycle of an Embedded Application
- The development process
- The maintenance process
- The extended lifecycle
Design Tools
- Open source versus proprietary solutions
- Compilers, assemblers, and linkers
- Libraries
- Debuggers
- Simulators
- Integrated Development Environments (IDEs)
Challenges in Embedded Design
- Design constraints inherent to embedded computing
- Cost considerations
- Performance and efficiency
- Power consumption
- Thermal management
Defining Design Goals
- Prioritising simplicity
- Defining the functionality
- Defining the program logic and structure
System Reliability
- Inspection and maintenance
- Uptime requirements
- Points of failure
Code Reusability
- Redundancy-free design
Code Abstraction
- Information hiding
- Context-free modules
Code Modularization
- Decomposition
- Loose coupling
- Strong cohesion
- Acylic dependencies
Code Maintainability
- Readability
- Testability
- Configurability
- Performance upgrades
Hardware Considerations
- Scalable Thermal Design Power (TDP)
- Integrated graphics
- Other factors
Summary and Conclusion
Requirements
- Foundational knowledge of embedded systems
- Practical experience with Embedded C programming
- A solid understanding of electronics fundamentals
Target Audience:
- Developers
Need help picking the right course?
southafrica@nobleprog.co.za or +27 (0)10 005 5793
Embedded C Application Design Principles Training Course - Enquiry
Testimonials (2)
The explanations and interactivity of the trainer, he really brought the subject well; and even-though I was probably not experienced enough, I did learn a lot from it!
Pieter Bruynseels - Spot Buy Center BV
Course - Design Patterns
I liked the platform we used. It was really nice and easy to use. I liked the typescript section, the part about namespaces and modules.
Robert - DB Global Technology
Course - JavaScript - Advanced Programming
Upcoming Courses
Related Courses
Creative Problem Solving with Gamification Techniques (Design Thinking)
14 HoursThis guided, live training in South Africa (online or on-site) targets beginner to intermediate learners who aim to resolve daily workplace challenges through gamification techniques.
Upon completion of this training, participants will be able to:
- Grasp the core principles of Design Thinking and how they apply to problem-solving.
- Utilise gamification techniques to boost engagement and drive innovation.
- Craft creative and practical solutions for common workplace problems.
- Collaborate efficiently across teams to deploy problem-solving strategies.
- Apply iterative methods to refine solutions using feedback and experimentation.
Domain Driven Design: Concepts and Practices
21 HoursThis instructor-led live training in South Africa (online or onsite) is aimed at intermediate-level developers, architects, and analysts who wish to learn and apply DDD concepts and practices to their software projects.
By the end of this training, participants will be able to:
- Grasp core DDD concepts (bounded contexts, entities, etc.) and their application in software projects.
- Apply strategic DDD to define and design the domain model, identify subdomains, and establish boundaries.
- Implement tactical DDD using patterns such as CQRS, factories, and event sourcing.
- Refactor and modernize legacy systems effectively with DDD techniques.
- Design and implement product, domain, and team-oriented architectures.
- Utilize data mesh to create a domain-oriented data platform supporting data discovery and governance.
Introduction to Domain Driven Design
14 HoursDomain-Driven Design (DDD) is a robust software development methodology that centres on modelling complex business behaviors by aligning technical implementation with core business concepts. This course examines how DDD enables teams to manage complexity and mitigate risk through strategic and tactical patterns. Participants will learn to develop a "Ubiquitous Language," establish clear boundaries via Bounded Contexts, and utilise specific building blocks such as Entities, Value Objects, and Aggregates. The objective is to construct flexible, maintainable software architectures that remain consistent with the evolving business domain.
Domain-Driven Design: Concepts and Practices for Senior Developers
21 HoursDomain-Driven Design (DDD) is a software development methodology that focuses on constructing systems around the core business domain, utilizing a shared ubiquitous language along with tactical and strategic modelling techniques.
This instructor-led live training, available either online or onsite, is designed for senior developers with advanced expertise who wish to implement DDD principles to build robust, maintainable, and scalable systems.
Upon completion of this training, participants will be able to:
- Identify and model core domain concepts using a ubiquitous language and bounded contexts.
- Apply tactical DDD patterns, including entities, value objects, aggregates, repositories, and domain services.
- Design context maps and strategic boundaries to manage complexity across microservices and teams.
- Integrate DDD practices into Agile teams and CI/CD workflows to enhance collaboration and delivery.
Course Format
- Interactive lectures and discussions.
- Extensive exercises and practical application.
- Hands-on implementation in a live laboratory environment.
Customization Options
- To request a customized version of this course, please contact us to arrange your requirements.
Design Patterns
14 HoursA wide array of proven patterns is readily accessible to everyone. Often, it simply involves adapting the nomenclature and implementing the pattern within a specific technology. This approach can save hundreds of hours that would otherwise be dedicated to design and testing. Training Goals This course has two goals: first, it allows you to reuse widely-known patterns, second, it allows you to create and reuse patterns specific to your organization. It helps you to estimate how patterns can reduce costs, systematize the design process and generate a code framework based on your patterns. Audience Software designers, business analysts, project managers, programmers and developers as well as operational managers and software division managers. Course Style The course focuses on use cases and their relationship with a specific pattern. Most of the examples are explained in UML and in simple Java examples (the language can change if the course is booked as a closed course). It guides you through the sources of the patterns as well as showing you how to catalogue and describe patterns which can be reused across your organization.
Design Thinking: Empathize with Internal Clients
7 HoursDesign Thinking is a human-centred methodology for solving problems through empathy, definition, ideation, prototyping, and testing. This version of the course places a strong emphasis on the Empathise stage, focusing on connecting previously identified pain points to the real needs of internal clients, and applying dynamic, collaborative activities to transform insights into actionable outcomes.
This instructor-led, live training (online or onsite) is aimed at beginner-level to intermediate-level teams and leaders who wish to deepen their empathy skills, strengthen relationships with internal clients, and translate pain points into meaningful opportunities for improvement.
By the end of this training, participants will be able to:
- Apply empathy-based techniques to uncover and validate client needs.
- Translate mapped pain points into clear, actionable needs.
- Engage in dynamic role plays and simulations to practice client-centred conversations.
- Collaboratively redefine problem statements from the client’s perspective.
Format of the Course
- Interactive lecture and guided discussions.
- Dynamic, hands-on role plays and empathy exercises.
- Group workshops for collaborative problem reframing.
Course Customisation Options
- To request a customised version tailored to a specific internal process (e.g., procurement or equipment provisioning), please contact us to arrange.
Design Thinking: Empathize & Define for Internal Clients
7 HoursDesign Thinking is a human-centric approach to problem-solving that leverages empathy, definition, ideation, prototyping, and testing. By concentrating on the initial phases—Empathize and Define—teams can gain a deeper understanding of their internal stakeholders and accurately identify the core issues that require resolution.
This instructor-led live training, available both online and in-person, is designed for teams and leaders at beginner to intermediate levels who aim to strengthen their relationships with internal clients, minimize resistance to change, and enhance operational efficiency through practical and collaborative methodologies.
Upon completion of this training, participants will be capable of:
- Utilising active listening and interviewing skills to extract meaningful insights about internal clients.
- Developing empathy maps to record user needs and pain points.
- Distinguishing between actual root causes and perceived issues using tools such as the '5 Whys' and problem trees.
- Formulating clear, actionable problem statements (Points of View) to direct solution development.
Course Format
- Interactive lectures and discussions.
- Practical, hands-on exercises and role-plays.
- Group workshops and plenary feedback sessions.
Customisation Options
- To arrange a bespoke version tailored to specific internal processes (e.g., procurement or equipment provisioning), please contact us.
Design Thinking Workshop for Software Developers
14 HoursIn this instructor-led, live workshop training in South Africa (online or onsite), participants will learn to apply the five stages of Design Thinking to better understand the problems experienced by end-users of a product or service, then develop the best approach for resolving them.
By the end of this training, participants will be able to:
- Use creative strategies to match customers' needs with technologically feasible solutions.
- Formulate a strategy to increase customer value and enhance product and service offerings.
Design Thinking: Innovation Methodologies
24 HoursThis instructor-led, live training in South Africa (online or onsite) is aimed at beginner-level to intermediate-level professionals who wish to understand and apply Design Thinking methodologies to drive innovation and improve business solutions.
By the end of this training, participants will be able to:
- Understand the core principles of Design Thinking and its role in innovation.
- Apply the five phases of Design Thinking to problem-solving.
- Utilise ideation techniques and tools to foster creativity.
- Implement Design Thinking strategies to improve processes and enhance efficiency.
Innovative Leadership through Design Thinking
14 HoursThis instructor-led, live training in South Africa (online or onsite) is aimed at beginner-level leaders and HR professionals who wish to learn and apply Design Thinking methodologies to foster innovation, enhance problem-solving capabilities, and engage teams effectively.
By the end of this training, participants will be able to:
- Equip participants with tools and methodologies to foster innovation and team engagement.
- Develop skills in empathy mapping, ideation, and prototyping for solving complex challenges.
- Apply Design Thinking principles to leadership and HR scenarios.
- Promote a culture of innovation within tech teams.
Design Thinking: Innovation & Creative Problem Solving
4 HoursOverview:
The Design Thinking (DT) process comprises five distinct stages: empathize, define the problem, ideate, prototype, and test.
In today’s increasingly complex world, we encounter challenges that demand specialised approaches. Design Thinking offers a robust framework for tackling such complexity. By mastering Design Thinking, you can address difficult problems with greater efficacy, enhance your communication and persuasion skills, improve business outcomes, and elevate both organisational and personal behaviour and performance.
- How DT works: Learn from people and the problem, identify patterns, design a model (understanding model drift), test the model, evaluate it, and re-engineer as necessary.
- The relationship between DT, innovation, and entrepreneurship.
- DT methods and tools: persona development, stakeholder mapping, customer journey mapping, service blueprints, and business model innovation.
- Application of DT: Cultivating a design mindset, driving disruptive innovation, adopting an iterative approach, utilising agile estimation techniques, and honing critical thinking, problem-solving, teamwork, leadership readiness, and communication skills. Additional focus areas include technological savvy, forward-thinking, intercultural and ethical competency, emotional intelligence, self-awareness, negotiating skills, and conflict resolution.
Objectives:
- To grasp the fundamentals and nuances of DT.
- To explore key concepts, factors, theories, types, and models within DT.
- To experiment with, experience, and practice DT.
Delivery:
This is a one-day (4-hour) training course structured as follows:
- lectures (40% - presentation of theories, concepts, models, and interactive discussions),
- group exercises (30% - focusing on group dynamics, games, group discussions, and mock conflict resolution exercises),
- individual activities (15% - writing, designing, and peer discussions)
- and other materials (15% - videos, reading).
Note: Due to the interactive nature of this course, a minimum group size of 3 is required.
Design Patterns (GoF) for Java
21 HoursThis instructor-led, live training in South Africa (online or onsite) is aimed at intermediate-level Java developers who wish to apply design patterns to improve software structure, maintainability, and scalability.
By the end of this training, participants will be able to:
- Understand the purpose and benefits of design patterns.
- Apply Creational, Structural, and Behavioral patterns effectively in Java.
- Improve code reusability, scalability, and maintainability.
- Refactor existing codebases using design patterns.
Design Patterns in PHP
14 HoursThis instructor-led live training in South Africa (online or onsite) is aimed at intermediate-level PHP developers who wish to apply design patterns effectively in their projects.
By the end of this training, participants will be able to:
- Understand the purpose and benefits of design patterns.
- Identify and implement appropriate design patterns for common scenarios.
- Structure PHP applications using industry-recognized best practices.
- Integrate patterns into modern frameworks such as Symfony or Zend.
JavaScript - Advanced Programming
14 Hours\r\n This training programme is tailored for JavaScript developers who are tasked with designing and implementing sophisticated Internet applications. The curriculum focuses on conveying best practices in JavaScript programming and drawing attention to frequent pitfalls. A key aspect of the session involves exploring object-oriented programming capabilities within the JavaScript syntax.
\r\n <\/p>
Kubernetes Design Patterns
21 HoursThe rapid advancement of microservices and container technologies in recent years has profoundly transformed how we design, develop, deploy, and operate software. Today's applications must be engineered for scalability, elasticity, resilience against failures, and adaptability to change. To meet these evolving demands, modern architectural approaches require a distinct set of patterns and best practices. This training explores methods to identify, comprehend, and adapt to these new requirements.
Audience
This training is designed for individuals who have a basic understanding of container technology and Kubernetes concepts but may lack hands-on, real-world experience. Drawing on use cases and lessons learned from practical projects, the course aims to inspire participants to build and manage high-quality cloud-native applications.
- Developers
- Operations
- DevOps
- QA Engineers
- IT Project Managers
Course Format
- Interactive lectures and discussions
- Extensive exercises and practical sessions
- Hands-on implementation in a live-lab environment
Course Customization Options
- To request customized training for this course, please contact us to arrange.