Welcome to platis.solutions
Here you can learn more about Dimitris
and his creations.
About Me
Hi, I am Dimitris Platis. An ever evolving software engineer constantly looking to satisfy my thirst for creativity. Currently enthused with creating high quality and innovative solutions, with a special interest in the fields of Embedded Systems, Internet of things, Software Architecture and Robotics. Being a staunch supporter of the Open Source model, in both software and hardware, I am fascinated with its applications in the automotive, education, healthcare and business world.
Want to see what I have been up to? Then do not forget to check out my blog!
Teaching
I enjoy sharing my knowledge and helping others understand the beauty of software engineering. Aside of publishing material on my blog, GitHub, YouTube and Udemy, another way is teaching. I have been teaching at the University of Gothenburg and Chalmers University of Technology for a few years, and I also provide private training courses on C++ for professionals.
University of Gothenburg & Chalmers University of Technology
In DIT112/DIT113, students learned how to create a system composed of both software and hardware components in regards to development, requirements handling, testing and quality assurance; all, in an agile manner. Check out some of their projects: 2019, 2020, 2021, 2022.
During the autumn term of 2021, I also taught the postgraduate DAT265 course on Software Evolution at Chalmers (Gothenburg). The students were taught how to evolve an existing code base by using various techniques to comprehend and refactor it while being in contact with the upstream project's stakeholders.
Private training
The courses are focused on modern C++ and the examples are inspired by real-world projects, mostly from the embedded systems domain. The participants are engaged in multiple hands-on exercises with 1 lab session per hour. The labs are designed to be challenging, help the participants understand the theory better, and provide material for further study in their own time.
Beginner C++ course (2 days)
The goal is to form the basis of a successful career in C++ development and excite and motivate the participants to start contributing to projects with production-grade code. While the exact content of the course is typically tailored to the level and needs of the participants, a beginner course includes, but is not limited to, the following topics:
- Introduction to C++
- Setting up the development environment
- Primitive types
- Variables and constants
- Control structures
- Language constructs
- Headers
- Strings
- Vectors
- Functions
- Flow control and loops
- Standard library containers
- Vectors
- Arrays VS C-style arrays
- Maps, queues, stacks, sets, etc
- Object-oriented programming and inheritance
- Classes and objects
- Constructors and destructors
- Inheritance
- Polymorphism
- Pure virtual functions
- Memory management
- Pointers and references
- Heap and stack memory
- Smart pointers
Advanced C++ course (2 days)
The exact content of the course is tailored to the level and needs of the participants, an advanced course includes, but is not limited to, the following topics:
- Memory management
- Smart pointers
- Unique VS shared pointers
- Memory management in safety-critical contexts
- Lambdas
- Syntax
- Capturing
- Return types
- Use cases
- Templates
- Creating templates
- Template specialization
- SFINAE
- Variadic templates and fold expressions
- C++20 concepts
- Software testing
- GoogleTest
- GoogleMock
- Tricky patterns to test
- Concurrency
- Threads
- Mutexes
- Condition variables
- Futures and promises
- Async
- Software design
- SOLID principles
Software design course (1 day)
At the same time, we discuss the trade-offs and pitfalls of using design patterns and how to avoid common mistakes. The goal is to provide the participants with the knowledge and tools to design maintainable, extensible, and testable software.
The exact content of the course is typically tailored to the level and needs of the participants, a software design course includes, but is not limited to, the following topics:
- Software design
- SOLID principles
- RAII
- Abstract factory pattern
- The pImpl idiom
- Builder pattern
- Observer pattern
- Singleton pattern
- Views
- Error reporting
If you or your company are interested in a training course, please do not hesitate to contact me.
Projects
Check out some of my projects. For the full list refer to my blog or my GitHub profile.
Contact
Do you have any questions or need help about any projects I am involved in?
Maybe you want to some help in a specific field that I am associated with.
Or… possibly you have a job proposal!
Perhaps you have a great idea that you think I should know about and maybe
work with you on. Anyhow, do not hesitate to send me a message through the
contact form and I will get back to you as soon as possible.