Evrone partners with Bauman MSTU to teach biomedical programming
Bauman Moscow State Technical University has invited Evrone’s specialists to teach the “Algorithmization and Programming” course for students of the Faculty of Biomedical Engineering. We teach freshmen to write and understand code and use it to solve scientific and technological challenges.
The Evrone team doesn’t just work on commercial projects. We also actively support the open-source community, sharing our tools and holding events for developers of all different levels. Because of this, Bauman Moscow State Technical University has invited one of our specialists to teach the "Algorithmization and Programming" course for students of the Faculty of Biomedical Engineering.
Through our partnership with the University, we will teach freshmen to write and understand code and use it to solve scientific and technological challenges. In this article, we will explain why we chose to teach the Julia programming language, and how this knowledge will help students prepare for their future careers.
Helping teach programmers
In 2018, at a Ruby meetup organized by Evrone, we met Roman Samarev, associate professor of the Department of Computer Networks and Systems from Bauman Moscow State Technical University. He teaches a specialized course in web development for programmers. At the end of each semester, Roman invites people from the field of web development and gives a lecture that goes beyond the curriculum. Since the course was taught in Ruby, Roman invited us to participate and tell the students about our experiences.
We are always willing to share our knowledge, both at our own and other people's events, so we agreed. Moreover, we had the perfect speaker for such a lecture — Pavel Argentov. At Evrone, he is engaged in the technical adaptation and training of new specialists. He introduces them to our approach to development and helps to test and check their knowledge. In addition, Pavel frequently speaks at conferences, so he is comfortable in front of a crowd of curious listeners.
Based on our experiences, we suggested that students would benefit from learning how to work with code outside of an academic setting. So, we focused on aspects of the day-to-day life of programmers. We discussed the quality of the code and the tools that help improve it and fix bugs. Then we got acquainted with the Computer Science and Control Systems department and agreed to cooperate in the future, as the participation of practicing specialists would be useful for training.
The students really liked the lecture, and the department invited us to make the realistic experiences of Ruby development a part of the web development course. So Pavel Argentov, already familiar with the department, became the ambassador of Evrone at the Bauman Moscow State Technical University. He conducted practical classes for a year, and then selected eight students for internships, which we organized with our friend Anton Davydov, author of Hanami and dry-rb.
According to the students' feedback, Associate Professor Samarev’s course was one of their favourites, because it concentrated on the actual theory and practice of web development. Our participation in the course increased its positive effect, and that is why the leadership of the Department of Computer Networks and Systems invited us to participate, along with Roman Samarev, in the creation of a new AI in medicine course for the Faculty of Biomedical Engineering.
Launching a course for Faculty of Biomedical Engineering students
The course "Algorithmization and Programming of Biomedical Engineering" is fundamental. It introduces students to the basics of programming and the role of programming in bioinformatics. This knowledge should help them in the study of other disciplines. Previously, students were taught programming by the basic Informatics course, but it used an outdated programming language and did not provide the necessary amount of knowledge and skills to solve the modern problems of bioinformatics and scientific computing.
The course spans two semesters. The first semester is devoted to acquaintance with programming, starting from the very basics: variables, conditions, loops, and function declarations. In the second semester, students are engaged in applied programming problems: machine learning, mathematical statistics, and bioinformatics calculations (for example, analysis of DNA sequences).
Together with the course curator, Roman Samarev, we chose the high-level, multi-paradigm Julia language for the course. It was created at MIT for massive scientific computing, and all the basic tools needed are embedded in the language and do not require any tweaks in order to provide high performance, as, for example, they do in Python with NumPy. In the Julia language, you can implement fast machine learning and visualization algorithms. For example, you can simulate the behaviour of blood flow in a blood vessel or the development of a biological population under the dynamic conditions of a biotope.
Julia is sleek in design, concise in syntax, perfect for biomedical coding, and great as a first language to learn. It has built-in functional programming tools and an advanced type system. Students will be able to use their Julia programming and implementation skills to work in other programming languages, as well.
We also looked at Python, Ruby, and Pascal. Here is why they are not suitable for biomedical engineering computer programming:
- Python — easy to learn, but its excessive simplicity does not allow it to be used as a "school" language. It is a simple language for integration and scripting. Python is excellent for solving practical problems quickly and efficiently, but it cannot provide an academic understanding of programming. In the classroom, we might consider the implementation of the matrix inversion algorithm, but hardly anyone in real life is going to use slow Python for that. The acquired skills will not be in demand, and students will have more complex disciplines ahead, such as Introduction to Real-Time Operating Systems using C language, where fundamental knowledge will be extremely necessary.
- Ruby — fundamentally great, but its use in commercial development has made it the standard choice for web applications. Scientific calculations on it are possible, but they are more complicated and take more time and computational resources. If we used Ruby for scientific computing, we would not be able to properly develop students’ skills in optimizing algorithms.
- Pascal — a traditional and already archaic language of Russian school education. It is almost impossible to apply it in everyday scientific calculations. In addition, Pascal is a low-level language, which is good for training systems programmers, but not application engineers or scientists. And one of our key tasks is to teach students to use programming in science.
Julia is a modern, productive language that is actively used by the scientific community. It will be easy for students to switch from it to other languages if necessary. Or, to continue to improve on Julia for scientific programming and computational mathematics.
The professional and academic community actively supports this language, and more and more universities around the world have made Julia mandatory for master's and PhD programs. A variety of study guides are also available — from syntax guides to advanced guides on algorithms and professional development.
For future scientists and engineers, this means that they can comfortably delve into the study of Julia, without the fear of being left with a useless tool in their hands.
Telemedicine is the practical application of bioinformatics. Our portfolio includes several projects related to both complex scientific computing and specific digital services. So we have experience using AI in medicine and stay on top of the recent trends in biomedical engineering. We have successfully launched B2C services and put approaches to processing biomedical information in practice.
We are thrilled that we have the opportunity to pass on our experiences with these projects and our passion for programming. This business and university collaboration will allow us to provide a valuable, problem-solving tool to future engineers. We hope this will lead to new developments in biomedical engineering and that our students will make great scientific discoveries or launch revolutionary startups that will change people's lives for the better.