Instructors at DigiPen Europe-Bilbao come from a variety of distinguished professional backgrounds. In our Faculty Focus series, we’re giving our talented educators a platform to directly share their expertise on relevant topics. This entry comes from Iker Silvano, a senior associate professor, who is working towards his Ph.D. in Computer Science.
DigiPen Europe-Bilbao makes a clear and opinionated choice when it comes to designing its curriculum. One of the cornerstones of the Bachelor of Science in Computer Science in Real-Time Simulation program is the pervasiveness of the C++ programming language across almost every course that involves programming. In contrast, the trend among most computer science or software engineering curricula is to opt for other beginner-friendly languages, like Python. This makes up the focus in introductory courses, while other languages are saved for future courses for area-specific purposes, such as web development (JavaScript) or numerical computing (MATLAB). Understanding the motivations and the consequences of this choice can help clarify the philosophy behind our curriculum design for the BS in Computer Science in Real-Time Interactive Simulation program.
C++ is a general-purpose programming language that was created by the Danish computer scientist Bjarne Stroustrup. It was originally released in 1985 and it is still widely used as it keeps evolving and growing almost 40 years after its conception. As of the third quarter of 2023, C++ is ranked somewhere between the fifth and second positions among the most popular programming languages on GitHub, spanning multiple categories.
According to a yearly research conducted by HackerRank, C++ is the fourth most in demand programming language in the industry. Along with Java, Python, SQL, and JavaScript it sits comfortably in the top tier of the most demanded skills in the software development business, as of 2023.
Being a general-purpose language, C++ may be — and is — used in any computational endeavor. However, its focus on performance and abstraction make it better suited for programs where efficiency and scalability are critical factors. Nowadays, its applications span endless areas such as operating systems, databases, financial trading, embedded devices, machine learning, and of course, video game development.
C++ exposes many programming paradigms and concepts which force the adopter to undergo what is sometimes described as a steep learning curve. In a pedagogic setting, however, this ends up providing an invaluable exposure to many details that other, easier-to-learn languages, often conceal to their users. Due to its close-to-the-metal nature, working with this language allows and promotes taking a close look at foundational aspects of software, such as constructing high performance data structures and algorithms, multiprocessing, or graphics programming. On the other hand, C++ is also abstraction-oriented, which makes it possible to operate at high levels of expressiveness and “do more with less code.”
The skills derived from learning this language are easily transferable to other languages and areas as well, so switching to a different mainstream programming language after having learned C++ should be just a matter of adjusting small differences, for the most part.
Learning C++ is no small feat. The language is quite unanimously considered “the most complex programming language” there is. It allows for multiple programming paradigms (or ways to think about programs); it is statically typed, which requires programs to present a certain degree of correctness or rule-abiding before they can be even tested; and it involves memory management, which requires a careful and conscious approach by the programmer to handle program memory, just to name a few of the challenges involved. But learning it well goes beyond that. Aside from the mechanics of the language itself, one must learn about efficiency, like writing programs so they run fast and require fewer resources. Using best practices so that programs can keep growing and don’t collapse under the weight of their complexity and making the code readable so that other programmers can understand it and collaborate are also key traits.
But said complexity should not be regarded as a negative trait exclusively. We prefer to treat it as one of the sides of a coin. Complexity, and therefore difficulty, are consequences of mastering a powerful and feature-rich language like C++. Its philosophy is focused towards empowering programmers, providing them with a vast array of features to produce high-end software. The price to pay, of course, is the responsibility of using said features well. Other programming languages, in contrast, aim for programming ergonomics, concealing mechanisms and choices in favor of the programmer’s convenience. In a nutshell, programs may be easier to write and maintain, but programmers lose access to a certain level of detail and refinement in their code. For certain software areas, this trade-off is not only convenient, but sometimes critical.
DigiPen Europe-Bilbao has had a long and successful tradition of teaching C++ as a core component of its curriculum over the last 10 years. However, it is important to mention that is not the only language covered. Programming is introduced to new students through C, which could be C++’s ancestor. In comparison, C is a very simple language that was created in the 1960s, and it still is widely used in many areas. What sets it apart for this situation is that C++ was designed to be fully backwards compatible with C, which means that any valid code written in C should also be valid in C++. The benefit of this decision is that the first time that students get exposed to C++, they can already use all their C knowledge and can therefore write working programs. Aside from that, the curriculum also touches several other programming languages for specific areas such as C#, MATLAB, Python, Lua, and more.
The prevalent use of C++ at DigiPen Europe-Bilbao is a choice that is consistent with its software development programs. It aims to provide both a complete and general computer science education and prepare students to enter a specialized workforce immediately after their graduation.
Becoming proficient at C++ will take many years, but it will yield benefits far beyond being able to write code.
About the Author
Iker Silvano is a highly skilled software engineer and dedicated educator at DigiPen Institute of Technology Europe-Bilbao. With a strong specialization in advanced programming, optimization techniques, and game development, he plays a pivotal role in nurturing the next generation of creative and technically proficient professionals.