In 2015, when I took my post as an Assistant Professor at an Electrical Engineering college, at a freshman-year course titled "Introduction to Programming" and delivered in C, I never imagined writing a textbook for it. The wealth and quality of literature for the (at the time) 40-year old programming language seemed sufficient. However, by the end of my first year, students petitioned me to do exactly that, both in person and through an anonymous poll.
Naturally, I set out to investigate what was wrong with the recommended literature, so we had a session where I asked students to point out exactly what they found lacking.
{{}}
Although the EE college has a clear requirement for at least some programming skill, and even though in Bosnia and Herzegovina basic programming is a mandatory part of curriculum for kids aged 10-16, most of my students claimed that this education was useless to them and asked to be treated as a "blank slate" i.e. to start from the beginning.
Here, the problem with C is that it is typically considered a low-level language for professionals, so most textbooks assume at least some degree of programming knowledge in some other language. Students have pointed out that recommended textbooks were impenetrable to them because in their very first paragraphs they used terms and concepts that they had to Google.
One could question the wisdom of delivering an Introduction to Programming course in C. Indeed, it's no secret that this particular EE school is using their freshmen year as a way to weed out the less talented; almost all of the courses contain some subject matter that is considered "hard-core". But it should also be noted that the first year is common for all the departments, including e.g. Automation Control, Electronics, Power Engineering etc. After the Bologna reforms reduced the first degree level to just 3 years, these departments requested that students learn C in the first year.
The recommended textbooks were full of factual errors. I was shocked to find that some of the things that I like to bring out as "rookie mistakes" in my lectures were actually presented as the correct way in some of the textbooks. Some research convinced me that writing a textbook on C (and especially C++) that was both factually correct and easy to understand for beginners is a difficult task that many authors have failed spectacularly.
Some of the books simply had a very difficult-to-read prose. As one of the students pointed out, reading the recommended textbook gave her rolling migraines. It seems that many authors of programming textbooks view their work as more of a reference than something that should be read cover-to-cover. They believe that they are doing readers a service by keeping the text short and to the point, "engineering style", but apparently this was disliked by almost all students.
After detecting these problems, I was facing the following requirements for the official course textbook:
My research found no textbooks or publicly available written texts that would cover these basic points. It seems that all of the books that focus on beginners tend to have factual errors and omit aspects of C that was a part of curriculum. Over the years, as a TA on the same course, I gathered a volume of written materials and examples, while my first-year lectures served as a scaffold to organize all this material. Writing the book turned out to be easier then I thought, my co-author took over the two of the most difficult chapters, and so the book was finished by 2018.
One comment that I often hear is that "kids these days don't read". Having spent almost two decades working with students aged 18-21, any statement that begins with "kids these days..." is giving me the feeling that they usually describe as "cringe". If anything, I've found that every person is different in their approach to studying and learning. Even if fine literature may be facing a crisis, when it comes to studying there is certainly a large group of young people who prefer to learn from books.
It seems to me that there are several different learning styles, and consequently different media that will give the best effect for learners.
After finishing the textbook my goal became to offer instruction material that supports all of the above learning styles, transcending the book into different media. My idea of a textbook for the 21st century is that it is not just a paperback - it is a gateway to an online resource center where different media for instruction will be found. This is an enormous task that will for sure never be truly finished. Nonetheless I embarked on it as part of my teaching position, and am slowly (as time permits) integrating various parts of my work into an online website accessible through a unique code that can be found printed inside the book covers.
Currently, when you buy the book you are getting:
The aspect of visualizations is currently the most lacking. There are some visualizations in the form of slides, but this is of course not ideal. Another large task is to translate everything into English. I hope to soon finish this work and present the entire multimedia experience to the English-speaking audience.
Writing this textbook was never part of the original plan - it emerged from necessity, curiosity, and, above all, a desire to help students succeed. What began as a response to their struggles became a deeply personal and rewarding journey. In the process, I learned that even a mature language like C still needs fresh, accessible resources tailored to modern learners. More importantly, I saw firsthand how responsive and engaged a learning community can be when given tools that speak their language. Creating new content isn't just about filling gaps in existing literature; it’s about contributing to a living ecosystem of shared knowledge. Therefore, I hope this book serves as a resource, but also as an example that education flourishes when we commit to listening, adapting, and building together.