aklap / Algorithms-and-Coding-Interviews

Open source content from a book in progress, Preparing for the Real-world Software Engineering

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Preparing for the Real-world Software Engineering

And a Coding Interview Guidebook that Teaches Problem Patterns of Real Interview Questions

alt text alt text

Medium Blog

Purpose

This book uses Python 3 as its programming language due to its popularity and how easy it is to use in real coding interviews. The purpose of the book is to guide the reader's preparation for real-world software engineering, including but not limited to preparing and cracking coding interviews. We guide the reader to master data structures, algorithm design and analysis, and problem-patterns through playing around with toy examples coded in Python thoroughly. Analyzing the behavior and computational complexity of more restricted and clearly-defined problems in the book helps lay the foundation of solving real-world problems which are more open and challenging. This is NOT a book that gives the reader quick tricks to pass a few coding interviews. It is a book designed for learning computer science fundamentals thoroughly and in the hope that the reader will be more passionate and confident about software engineering. In the book, we motivate the reader to learn and focus utilizing her or his expectation of cracking coding interviews. Passing coding interviews can be a great joy boost, and learning the knowledge organized in this book can surely benefit one's whole career.

Content Format

Related content will be posted in the form of medium publication and as a book in pdf instead of directly using markdown for better visual appearance and organization.

Table of Contents

Whole PDF (It is not complete yet, so let me the errors and give me advices)

Sample code used in each chapter of this part (only a small part right now).

Part 1: Learning Data Structures, Algorithms and Python all at Once

  • Introduction
  • Fundamental Algorithm Design and Analysis (divide and conquer, complexity analysis),
  • Data Structures(connecting the dots of data structures and Python built-in data types/Modules)
  • Complete Search(searching on linear data structures, graphs, trees)
  • Advanced Algorithm Design (Dynamic programming, greedy algorithms),
  • Math and Bit Manipulation

LeetCode problems are used as exercises, only id and the title of the questions are given.

Part 2: Mastering Problem-patterns of Real Coding Interview Questions

  • Dynamic Programming Questions (15%)
  • Array Questions (15%)
  • Linked List, Stack, Queue, and Heap Questions (12%)
  • String Questions (15%)
  • Tree Questions (10%)
  • Graph Questions (15%)

Data Structures

Complete Search

Problem Patterns

Note: everything is still in progress, so use it with caution.

Referring Books and Materials

1 Skiena, Steven S. The algorithm design manual: Text. Vol. 1. Springer Science & Business Media, 1998.

2 T. H. Cormen, Introduction to algorithms, MIT press, 2009.

3 Russell, Stuart J., and Peter Norvig. Artificial intelligence: a modern approach. Malaysia; Pearson Education Limited,, 2016. (Best book ever in explaining searching problem-solving, differentiate tree-search and graph-search)

4 D. M. Beazley, Python essential reference, Addison-Wesley Professional,2009.

5 S. Halim and F. Halim, Competitive Programming 3, Lulu Independent Publish, 2013.

6 B. Slatkin, Effective Python: 59 Specific Ways to Write Better Python,Pearson Education, 2015.

[7] H. hua jiang, “Leetcode blogs,” https://zxi.mytechroad.com/blog/category, 2018, [Online; accessed 19-July-2018].

[8] B. Baka, “Python data structures and algorithms: Improve application performance with graphs, stacks, and queues,” 2017.

[9] “Competitive Programming,”https://cp-algorithms.com/, 2019, [Online; accessed 19-July-2018].

[10] “cs princeton,”https://aofa.cs.princeton.edu/60trees/, 2019, [Online; accessed 19-July-2018]

Feedback

If you like the example chapters that I put here, please leave your comment here. This book comes with a lot of hard work --personally, I paused my PhD program for a semester to focus on. Therefore, your comment is important to lead to the publication of the work.

If you have ideas to improve the book, about formatting, more contents, or correct the errors are also very welcome too.

About

Open source content from a book in progress, Preparing for the Real-world Software Engineering


Languages

Language:Jupyter Notebook 100.0%