We boost your innovative capacity by sharing our knowledge with you!
Do you want to keep your engineers up to date in a constantly changing market? Is their knowledge build-up high on your agenda? With our Intelligent Systems Academy, we developed a wide range of courses to counter the lack of qulity trainings on embedded software and to share the knowledgeof our embedded software experts with you.
The Intelligent Systems / Altran courses are taught by our software experts who themselves have many years of experience in embedded software development.
- The professional background of our trainers and the top-quality of the courses have earned us a 99% recommendation rate.
- Our trainings are organized frequently and with great flexibility, many topics, various formats and different locations.
- Upon request, training packages can also be tailored to your specific needs.
Packaged offers list
- 24 January: C&B: Asynchronous programming with coroutines in Python (and C#)
Ghent - Belgium
Every computer program has constructs that are suitable for being run concurrently. But no longer are we convicted to only using threads! This session introduces you to the contemporary way of concurrency using asynchronous programming in the latest versions of Python. Coroutines! They're changing the way we look at concurrency (and therefore multithreading).
Python isn't the only language to offer those constructs. While we're waiting for coroutines to be added to C++, a friendly C# developer is going to present some parallels between the Python and C# ways of asynchronous programming.
- 8 March: Security
3 - day training: 08/03/2017 - 10/03/2017
Leuven - Belgium
Security has become a concern for all embedded systems in recent years. From connected cars to smart thermostats and activity trackers, everything connected to the Internet is a target of attack, whether from mischievous bored teenagers, opportunist crackers, or even nation states.
This course will give you the foundation of knowledge that you need to begin to understand how to protect your systems and their data, and give you tools to identify when you need to concentrate on specific problems and learn more about particular areas in the future.
- Date TBD: Embedded Linux Kernel & Driver Development
More information coming soon.
- Date TBD: Ultra Low Power
These days we need to make sure our products consume as little energy as possible. On the one hand our customers demand this, on the other hand new government / EC regulations require us to reduce energy consumption to comply. This workshop will show what factors influence energy consumption with an emphasis on software, show you how you can model this consumption and provides you hand-on experience on two common Ultra Low Power architectures and Starter kits.
- Date TBD: Embedded Linux
The embedded Linux course gives the student the basic background knowledge you need to be able to understand and target the fundamental blocks in any embedded Linux system.
The course starts with a hands on introduction to the Linux system in general, to get all students familiar with the environment. The following parts of the course are describing how to build a custom embedded Linux system for your platform. This contains setting up a boot loader, downloading, configuring and building the kernel sources, creating your own root file system and implementing it onto one of the most up-to-date development platforms in the embedded market.
Next to the hands on experience of creating an embedded Linux system that is ready for development, the course also covers the most important kernel mechanisms.
Together with the userspace introduction, this training serves as an introduction to start developing custom applications in userspace, change the kernel sources to your needs or get it booted as fast as possible/required!
This training is the perfect introduction to further exploring embedded Linux as an application/system/kernel developer.
- Date TBD: Posix C
Design and development of applications and libraries in a POSIX environment. Knowledge of tools and technologies used in UNIX system programming. Threads and processes on UNIX. Locking and inter process communication.
- How does the POSIX operating system work
- How to interact with your OS
- Everyday use of common API libraries
- Included: set of standard portable tools
- Write your own library/daemon/system/tool/user application
- Date TBD: Advanced Network Solutions Design
The course is not yet-another-networking course, it touches upon very specific topics and gives the attendee a real advantage in designing and developing fully distributed solutions.
Goals of the training
- Refresh your knowledge on network theory
- Learn how to design and develop distributed applications
- Become familiar with the needed software tools
- Expand your knowledge on protocols implementation
- Learn how to cope with more or less common problems related to designing solutions for connected devices
- Improve design and optimizations skills
- Theory of computer networks
- Berkeley Socket Interface (IPv4 and IPv6)
- System configuration
- Tools and packet management
- Protocols reverse and forward engineering
- Performance optimizations
- Solutions for connected devices
Pre-requisites: C programming and some experience with GNU/Linux command line (Python is a plus).
- Date TBD: Git Fundamentals
Git Fundamentals teaches the basics of the git SCM. It covers all the basic tools required to get people started with the source control system.
Intended audience: Engineers that enter an environment in which git is used or that want to start small projects in git.
- Date TBD: C Fundamentals
The C Fundamentals covers everything from the absolute basics like how expressions are formed and control structures are used, to pointers, arrays, the standard library, building user types, making and debugging a program. More advanced topics include dealing properly with memory, using the preprocessor safely and an introduction into generic programming in C.
- Date TBD: Quality Awareness
Get your code compiled. Is that the ultimate goal? Does it really end there? Quality Awareness offers a mix of theoretical info and tips & tricks based on real-life examples. During this session it will become clear that, as a software developer, you can have much more fun while writing good, bug-free SW. Nowadays, software development is not only about converting requirements into code. Increasing the quality of the delivered SW becomes more and more important. Avoid having to solve the same bug twice. Find the bug before it finds you. Increase the level of confidence you have in your software. Software quality, SDLC, Static code analysis, Dynamic testing, Test Techniques, Continuous Integration… these are not obscure, dirty words but they will be explained while referring to a real-life embedded project. Through hands-on exercises, the basic test techniques will be revealed.
- Date TBD: Embedded C
3- day training
Programming C and programming C for embedded systems are two different things. In this three-day course, we will focus on the specifics of the embedded environment, and of programming in C in these environments.
The first day is about "the embedded context". We will explain why it is important to learn to know your hardware, your tool chain, and how to write good code on an embedded system.
Day two is entitled "Running the system". In great detail, we'll go over the boot process, the startup-code, the C runtime environment, the C library, linker scripts and handling interrupts.
The last day extends the running system from day two with ways to manage your embedded system. Different methods to "get stuff done" on your target device will be presented. Ranging from an endless loop, to a full-blown real-time OS, and all the considerations that come with those.
Each day we'll alternate between theory and hands-on exercises on an embedded development board, to keep things exciting. It is important to be familiar with the C programming language already, before attending this course.
Topics: Embedded vs. desktop C, towards the main function, booting a system, the ABI, Assembler vs. C., Compiler vs. Linker, Linked Scripts, Casting, Bitwise Operations, C Standard Library, Superloops, scheduling, interrupts, interrupt vector table, GDB, Makefile, Memory Aware Programming, Static, const, volatile keywords.
Prerequisites: a solid understanding of C (see C fundamentals).
- Date TBD: Scrum-Agile
Scrum is a way for teams to work together to develop a product. Product development, using Scrum, occurs in small pieces, with each piece building upon previously created pieces. Building products one small piece at a time encourages creativity and enables teams to respond to feedback and change, to build exactly and only what is needed. Scrum provides a small set of rules that create just enough structure for teams to be able to focus their innovation on solving what might otherwise be an insurmountable challenge. However, Scrum is much more than a simple framework. Scrum supports our need to be human at work: to belong, to learn, to do, to create and be creative, to grow, to improve, and to interact with other people. In other words, Scrum leverages the innate traits and characteristics in people to allow them to do great things together.
- Date TBD: Python Fundamentals
Starting from zero, basic Python knowledge is built up, split up in 2 big parts. Python Fundamentals teaches everything from types & methods down to functional programming and best practices for scripting.
The scripting part of the course is expanded with a more in-depth handling of strings, error handling, iterators, file handling and spawning processes.
The second big part of the course handles object oriented programming in Python (1 module), building on an already established knowledge of OO (either in C++, C#, Java or other) and linking it to the ‘Pythonic’ way of working. From object oriented Python a further bridge is crossed towards exception classes, creating modules and best practices for building libraries.
This practical course is supplied with lots of exercises, providing backlog for both starters and quick learners, and extra assignments that can be practiced at home.
Intended audience: Engineers with an experience in any script or compiled language.
Prerequisites: Basic knowledge of any programming language, basic notions of Object Oriented Programming.
- Date TBD: Shell Scripting Fundamentals
Shell Scripting Fundamentals, as the name suggests, teaches the basics of shell scripting. From conditions and loops, to variables, path and advanced text manipulation.
Basics, Scripts, Text, Data types, Arithmetic, Advanced Text Manipulation
Paths and Directories, Debugging, Functions, Advanced Text Manipulation
Intended audience: Engineers with an experience in any script or compiled language and experience in navigating the *nix command line.
- Date TBD: C++ Fundamentals
The C++ Fundamentals course introduces the participants to the wonderful world of C++. Starting with the C++ ecosystem, Types, Overloading, Oo; Continuing with Inheritance, Exceptions, Templates, SmartPointers, UnitTesting. Finishing off with elements of the Standard Library. Learning the "expert friendly" C++ language can be intimidating. After this course, you'll have a thorough understanding of C++, allowing you to continue your education weather it be by course or literature.
Pre-requisites: This course assumes a solid understanding of C (See C Fundamentals).
- Date TBD : C++ advanced
We pick up where we left off after C++ Fundamentals; Revisit some topics (e.g. exceptions) and dig a little deeper into them
(e.g. exceptions safety). We also learn about operators that didn’t make it in C++ Fundamentals and the accompanying applications, like the function call operator and their application as Functors, Other large topics include Peformance, Move Semantics, Dynamic Memory Management, C++4 Embedded and Threading. While also getting to know some idioms and design patterns that suit C++.
Introduction to Advanced C++, Namespaces, Keywords, Operators, Enums, Dynamic Memory Management, More C++11
Exceptions Revisited, Exception Safety, Move Semantics, Initializer Lists, Class Member Initializers
Chrono, Performance, Embedded C++
Threading, Working with text (Conversion, Regex), More C++ Standard Library
Prerequisites: the C Fundamentals course and the C++ Fundamentals course or equivalent experience.
- Date TBD: Python Advanced
In Python Advanced we pick up where we left off in the Fundamentals training, revisit strings and collections, go more in depth on itertools, learn how to make our own iterators, generators and decorators. Next up in day2 are virtual Python environments, so we can have several versions of Python and 3rd party libs coexist. We’re going to get to know the logging package, profile our programs, checkout how Python collects our garbage and how we can make Python data persistent.
Day 3 starts off with learning to deal with binary data, as a base for working with networks and internet. And we finish the course with a chapter on the possibilities of Python to do work concurrently.
Prerequisites: Having followed the Python Fundamentals course, having Python experience/knowledge similar to the content of Python Fundamentals (see Python Fundamentals table of content).
t +32 9 277 77 37
Do you want to subscribe?
Please register at training.intelligent-systems.be@! altran.com
Risk Based Development & Testing training
There is an ever increasing pressure on the testing of systems. On the one hand, products are becoming more complex due to the growing software component while the time to market needs to be reduced. On the other hand, the activities preceding the testing usually incur delay. Nevertheless, quality products are to be delivered.
Intelligent Systems/ Altran has developed a dedicated training for the PRISMA® method which supports the test manager in performing Risk Based Testing. This training provides an interactive way to understand the Individual steps of the PRISMA® method. The idea is to focus on the areas that are most risk-prone, thus increasing the quality of testing. The basic perspective is to test to the level of "good enough" more than to pursue perfection and to try and target every corner of the system. The essential question that testers need to answer is whether a system is good enough to be released."