Giter VIP home page Giter VIP logo

algorithms-and-coding-interviews's Introduction

Hands-on Algorithmic Problem Solving

Creates Passion and Confidence from Mastering Algorithmic Problem Solving and 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. There are plenty of books out there focusing on either teaching algorithmic knowledge (Introduction to Algorithms, Algorithmic Problem Solving, etc) or introducing interview process and solving interview problems(Cracking the Coding Interview, Coding Interview Questions, etc), but barely any that combines the two. This is a book designed to make up this role in the categorization; learning the algorithmic problem solving by analyzing and practicing interview problems -- a reciprocal relationship that makes 1+1=4: Algorithms, Interviews, Passion, and Confidence.

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 provides hiring statistic of each company or gives the reader quick tricks in order to pass a few coding interviews. Its purpose is to show you the beauty of the algorithimc problem solving in the hope that you will be more passionate and condifent about software engineering; the interview questions just set up a play ground where we strengthen what we learn. A strong candidate would be apt to sleep well before interviews, walk into the interviews and discuss his or her findings about the question from all possible angles and program the best solution for on the white-board. The interviews shall be a setting the interviewers and interviewees both have a nice and happy talk; learning from each other instead of a one-way relation -- tester and testee.

Progress

I'm currently in full strength finalizing and finishing the book, it will likely to be published at the beignning of 2020. This repo is not well-maintenanced, but I will keep it up when I feel the content is nice and ready.

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

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.

algorithms-and-coding-interviews's People

Contributors

amitrajitbose avatar deepakps22 avatar gregbo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.