Title: Fundamentals of Computer Programming with CSharp Free Book (by Nakov & Co.)
Description: The **[book “Fundamentals of Computer Programming with C#”][1]** provides thousands of beginner programmers with the practical knowledge and skills necessary to land an entry-level job in the software industry. It teaches the fundamental concepts of programming, data structures and algorithms, and principles for building high-quality software.

The book is **free of charge** and available for downloading as **PDF**, **ePub**, **mobi** and other e-formats, accompanies by [video lessons][2] and [presentation slides][3].

Originally written in Bulgarian by a team of seasoned software engineers and translated and edited by over 70 volunteers, the book “Fundamentals of Computer Programming with C#” teaches readers to think like programmers and write programs for **solving practical algorithmic problems**.

The book “**Fundamentals of Computer Programming with C#**” covers extensively fundamental programming topics such as data types and variables, operators and expressions, conditional statements, loops, arrays, strings, data structures and algorithms, recursion, object-oriented programming, classes and objects, exceptions handling, lambda expressions and functional programming, as well as high-quality programming code and problem solving methodology. With practical problem-solving tasks at the end of each chapter, slides and video lessons, the book is the **ultimate step-by-step guide to the amazing world of computer programming**, as well as amazing resource for instructors who want to teach programming fundamentals.

With more than 700,000 vacant IT jobs in Europe* alone, the ICT industry will need more and more highly qualified individuals to join it.  Following this book and its video lessons within 3-4 months, anyone dedicating enough time to the book, videos and the exercises can **master programming**.

**After Finishing the Book You Will be Able to:**

 - Define and use variables and work with primitive data types (such as numbers)
 - Organize logical statements, conditional statements and loops
 - Print on the console, use arrays, work with numeral systems, define and use methods
 - Create and use objects, define own classes and understand object-oriented programming (OOP)
 - Deeply understand data structures (like balanced trees and hash-tables)
 - Design efficient algorithms and solve complex programming problems

The book teaches the **C# programing language**, a modern object-oriented, general-purpose programming language. Being a simple and easy to learn, it is a natural starting point for beginners and at the same time is widely used in the software industry. Once one masters the basics of programming, they can replace C# with any other programming language.

**Why Use “Fundamentals of Computer Programming with C#”?**

 - In over 1,100 pages, the book covers the never-changing basic principles and concepts in programming
 - It contains over 350 exercises with varying difficulty
 - All chapters are accompanied  by video lessons, presentation slides and mind maps

In the past two years, the first edition of “Fundamentals of Computer Programming with C#” taught over 10,000 people how to code and think as a programmer. The leading author of the book, **[Svetlin Nakov][4]**, an accomplished programming trainer with nearly 20 years of experience in the software industry, used it as the main study resource for the programming fundamentals courses at Telerik Software Academy, a training center in Bulgaria that teaches thousands software developers.

**A Quote by Svetlin Nakov**

"To create software is not just writing code, it's a **way of thinking**. It's about logically organizing the work into manageable steps, to produce **high-quality software** that always works correctly and is easy to maintain. This book gives you the **algorithmic thinking** approach, vital for anyone involved in the software development, as well as basic programming paradigms like procedural, object-oriented and functional programming. It teaches not just coding. It explains you the fundamental data structures and algorithms with many real-world examples to make you not just developer, but **exceptional developer**".

**About the Lead Author** 

**[Svetlin Nakov][5]** has nearly 20 years of experience as a software engineer, programmer, instructor and consultant, moving from Assembler, Basic and Pascal through C and C++ to PHP, JavaScript, Java and C#. Currently, Svetlin Nakov is the head of the "Technical Training" department at Telerik Corp. where he manages Telerik Academy, an initiative for free training of software engineers. He has achieved a bachelor’s degree in "Computer Science" and a master’s degree in "Distributed Systems and Mobile Technologies" at the Sofia University "St. Kliment Ohridski." Later he obtained a Ph.D. in "Computer Science" after defending a thesis in the field of "Computational Linguistics" before the Higher Attestation Commission of the Bulgarian Academy of Sciences (BAS).

In 2003, Svetlin Nakov received the "John Atanasoff" award by the EVRIKA Foundation. In 2004, he was awarded by the **Bulgarian President** with the "John Atanasoff" award for his contribution to the development of the information technologies and the information society.

Svetlin has dozens of scientific and **technical publications** focused on software development in both Bulgarian and foreign publications and is the lead author of the books "**Programming for the .NET Framework (vol. 1 & 2)**", "Introduction to Programming with Java", "Internet Programming with Java" and "Java for Digitally Signing Web Documents" (see [http://nakov.com/books][6]). He is a regular speaker at technical conferences, trainings and seminars and up to now has delivered hundreds of technical lectures at various technological events in Bulgaria and abroad.

**Book Reviews**

“‘Introduction to Programming with C#’ is a brave effort to not only help the reader make their first steps in programming, but also to introduce them with the programming environment and to train for the **practical tasks** that occur in a programmer’s day-to-day life.” --Vassil Bakalov, software engineer, **Microsoft**

“I’m very glad that ‘Introduction to Programming with C#’ takes an entirely different approach. Everything is explained in an **easy to understand manner**, but with the necessary profundity, and every chapter goes on to slowly extend the previous ones. As an outside bystander I was a witness of the efforts put into writing the book and I’m happy that this immense energy and desire to create a more different book truly has materialized in a subject matter of very high quality.” --Vassil Terziev, co-founder and CEO, **Telerik**

“This book differs from others mainly because **it will show you what you must know to achieve success** and not what the twists and turns of a given programming language are. If you find the topics covered in this book uninteresting, then software engineering might possibly not be for you.” --Veselin Raychev, software engineer, **Google**

“This book will show you the right course of action the easy way – master the basic data structures and algorithms; **learn to think correctly**; and write your code with high-quality.” --Vassil Popovski, software architect, **VMware**

“Dear reader, I can boldly state that you are holding a **truly unique book** in your hands. Its contents are very carefully selected. It’s well-arranged and presented with attention to details, of which only people with **tremendous practical experience** and solid scientific knowledge, like the book’s chief authors Svetlin Nakov and Veselin Kolev, are capable of.” --Nikolay Manchev, consultant and software developer, **Oracle**

“Today I read this book and I’m happy that finally, although a bit too late for me, someone got down to writing The Book that will help any beginner programmer **solve the puzzle of programming** – a modern programming language, data structures, quality code, algorithmic thinking and problem solving. This is the book that you should take up programming from, if you want to master the art of quality programming. … What matters is that you must learn to think as a programmer and solve the problems you encounter when writing software; the programming language is just a tool you can change for another at any given time.” --Lyubomir Ivanov, Data and Mobile Applications Manager, **Mobiltel**

“Fantastic book! It gives the start to any developer geek who wants to develop into a software prodigy. While you can learn from the quick learning books for dummies to do coding that ‘just works’ and this is the level expected in many of the small software development houses around, you can never leave a trace in the software world without understanding the **fundamental concepts of programming**.” --Hristo Radkov, Chief software architect and Co-founder, **Clever IT**

For more information about the free C# programming book and video lessons, please visit the book official web site: **[http://introprogramming.info/english-intro-csharp-book/][7]**.


  [1]: http://www.introprogramming.info/english-intro-csharp-book/
  [2]: http://www.introprogramming.info/english-intro-csharp-book/videos/
  [3]: http://www.introprogramming.info/english-intro-csharp-book/presentations/
  [4]: http://www.nakov.com
  [5]: http://nakov.com
  [6]: http://nakov.com/books
  [7]: http://introprogramming.info/english-intro-csharp-book/
Subjects: free, programming, book, computer programming, programming fundamentals, ebook, book programming, C#, CSharp, C# book, tutorial, C# tutorial; programming concepts, compiler, Visual Studio, .NET, .NET Framework, data types, variables, expressions, statements, console, conditional statements, control-flow logic, loops, arrays, numeral systems, methods, strings, text processing, StringBuilder, exceptions, exception handling, stack trace, streams, files, text files, linear data structures, list, linked list, stack, queue, tree, balanced tree, graph, depth-first search, DFS, breadth-first search, BFS, dictionaries, hash tables, associative arrays, sets, algorithms, sorting algorithm, searching algorithms, recursion, combinatorial algorithms, algorithm complexity, OOP, object-oriented programming, classes, objects, constructors, fields, properties, static members, abstraction, interfaces, encapsulation, inheritance, virtual methods, polymorphism, cohesion, coupling, enumerations, generics, namespaces, UML, design patterns, extension methods, annonymous types, lambda expressions, LINQ, code quality, high-quality code, high-quality classes, high-quality methods, code formatting, self-documenting code, code refactoring, problem solving, problem solving methodology
Places: Sofia, Bulgaria, Pravetz, Veliko Tarnovo
People: Svetlin Nakov, Vesko Kolev
Time periods: 2013