panoramic gothenburg

Welcome to platis.solutions
Here you can learn more about Dimitris
and his creations.

About Me

about me image

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

For a few years I taught the undergraduate DIT112 course on Systems Development at the University of Gothenburg.
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

I provide private training courses on C++ for professionals. The courses are tailored to the needs of the participants and can be held on-site or online. Recurring customers include large automakers, automotive suppliers, consulting companies, and defense equipment manufacturers.
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 beginner course is designed for people with little or no experience in C++ but with a background in programming. The course covers the language basics, object-oriented programming, common standard library containers, and more.
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 advanced course is designed for people with experience in C++, who want to deepen their knowledge and learn about modern C++ features. The course covers advanced topics such as templates, lambdas, smart pointers, concurrency and dives into more specific subjects, like GoogleTest and GoogleMock or memory handling in a safety-critical environment. The goal is to provide the participants to take a step up with the knowledge and tools to write modern, efficient, and safe C++ code.
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)

The software design course is designed for people with experience in C++, who want to learn about software design principles and patterns. The course covers the SOLID principles, as well as various commonly used design patterns. It takes a no-nonsense approach to software design, focusing on the practical aspects of the principles and patterns, and how they can be applied in real-world projects.
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.

World's first Android autonomous vehicle

Android Autonomous Vehicle

10$ Trackable keychain

10$ trackable keychain

Nevma

Nevma

Scrumtato

Scrumtato

ESP32 Smartcar

Smartcar upgraded with ESP32

Iot Marketing Robot

IoT marketing medium

Cryptopuck

Cryptopuck

Moltoduino

Moltoduino

IoTink

IoTink

Code review lamp

Code review lamp

Sonicdisc

Sonicdisc

Christmas PCB ornament

Christmas PCB ornament

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.