This book is designed specifically to teach you to think like a programmer and the C# language is just a tool that can be replaced by any other modern programming languages, such as Java, C++, PHP or Python. This is a book on programming, not a book on C#!
(Please Excuse Us for the Bugs in the Translation!)
This book was originally written in the Bulgarian language by a large team of volunteer software engineers and later translated into English. None of the authors, translators, editors and the other contributors is a native English speaker so you might find many mistakes and imprecise translation. Please, excuse us!
Over 70 people have participated in this project (mostly Bulgarians): authors, editors, translators, correctors, bug submitters, etc. and still the quality could be improved. The entire team congratulates you on your choice to read this book and we believe the content in it is more important that the small mistakes and inaccuracies you might find. Enjoy!
Who Is This Book Aimed At?
This book is best suited for beginners. It is intended for anyone who so far has not engaged seriously in programming and would like to begin doing it. This book starts from scratch and introduces you step by step into the fundamentals of programming. It won’t teach you absolutely everything you might need for becoming a software engineer and working at a software company, but it will lay the groundwork on which you can build up technological knowledge and skills, and through them, you will be able to turn programming into your profession. If you’ve never written a computer program, don’t worry.
There is always a first time. In this book, we will teach you how to program from scratch. We do not expect any previous knowledge or abilities. All you need is some basic computer literacy and a desire to take up programming. The rest you will learn from the book. If you can already write simple programs or if you have studied programming at school or in college, or you’ve coded with friends, do not assume you know everything! Read this book and you’ll become aware of how many things you’ve missed.
This book is indeed for beginners, but it teaches concepts and skills that even experienced professional programmers lack. Software companies are riddled with a shocking amount of self-taught amateurs who, despite having programmed on a salary for years, have no grasp of the fundamentals of programming and have no idea what a hash table is, how polymorphism works and how to work with bitwise operations.
Don’t be like them! Learn the basics of programming first and then the technologies. Otherwise, you risk having your programming skills crippled, more or less, for years, if not for life. If, on the other hand, you have programming experience, examine this book in details and see if you are familiar with all subjects we have covered, in order to decide whether it is for you or not. Take a close look especially at the chapters “Data Structures and Algorithms Complexity”, “Object-Oriented Programming Principles”, “Methodology of Problem Solving” and “High-Quality Programming Code”.
It is very likely that even if you have several years of experience, you might not be able to work well with data structures; you might not be able to evaluate the complexity of an algorithm; you might not have mastered in depth the concepts of object-oriented programming (including UML and design patterns); and you might not be acquainted with the best practices for writing high-quality programming code. These are very important topics that are not covered in all books on programming, so don’t skip them!