# Pre-Junior

## Motivation and experience

- [Chad Fowler - Passionate Programmer](https://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic-ebook/dp/B00AYQNR5U)

    This book can be called a classic in the motivation genre for beginners. Chad Fowler tries to share his experience: how to become a professional programmer and ride the IT industry wave.


## Computer Science

- [Wladston Ferreira Filho - Computer Science Distilled: Learn the Art of Solving Computational Problems](https://www.amazon.com/Computer-Science-Distilled-Computational-Problems/dp/0997316020)

    The book is an overview on different Computer Science basics: math, algorithms, databases, hardware basics of computers, etc. It can be a good starting point to find interesting areas for yourself and to prioritize them. 
    
- [Charles Petzold - Code: The Hidden Language of Computer Hardware and Software](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319)

    Before starting studying C++ it's recommended to pick this book first. In simple words, it describes how a computer works. It avoids complex technical or theoretical aspects. This book contains foundations that won't become obsolete in the far future. It will also help you to better understand the foundation ideas of C++ later. This book is a good complement to the previous one as it dives deeper into the device of computers.

- [Aditya Bhargava  - Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People](https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230)

    The book contains a brilliant introduction to the world of Computers Science algorithms and data structures for beginners. It also contains a list of tasks that will help you to implement your first algorithms.


## C++

- [Stephen Prata - C++ Primer Plus](https://www.amazon.com/Primer-Plus-6th-Developers-Library/dp/0321776402)

    The book is an excellent start for people who stand at the beginning of the studying path in C++ World. It doesn't require any extra knowledge to start your path. This book also contains a list of exercises which help to get experience and understanding of C++ basics.

- [Stanley Lippman - C++ Primer](https://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113)

    The book is a good complement to the previous one. It's good to use this book in parallel with Prata's book. We recommend you find a balance between these books, as information is given differently: mixing information from both books will help you to better understand different topics and language aspects.

- [Andrew Koenig - Accelerated C++: Practical Programming by Example](https://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X)

    This book is an excellent one for beginners. Each chapter of the book widely describes a different foundation aspect of the language. When it's done, it offers you a set of exercises to train yourself. The book explains the most fundamental topics that can be reused in the future to study new language mechanisms. It's recommended to pick up this book after Prata's, Lippman's books or in parallel with them.


## Hard skills

- [MSDN](https://docs.microsoft.com/ru-ru/cpp/build/vscpp-step-0-installation?view=msvc-160)

    If you are at the starting point of your studying path, it's recommended to start practicing and doing exercises in the IDE: Microsoft Visual Studio (Community Edition). Nowadays, it's one of the friendliest IDEs among others to beginners, either in installation or usage (and it's absolutely for free!). It will help you to concentrate on language and not to struggle with the development environment. On MSDN you will find a nice guidebook that describes the following aspects: how to install the Visual Studio, create the first console project, and implement the first application.