Resources for Problem Solving,Discrete Maths,Data Structures,Algorithms and Cracking Interviews of firms like Microsoft,Facebook,Google,Amazon etc

1) Problem Solving

Abhi’s Problem Solving Recommendation(one of the best reviews I have ever read and by the way, Abhi is a IIT Madras pass-out)

N.B. -> Massachusetts Institute of Technology’s Recommended Literature for Problem Solving in general, Good Books on Problem SolvingProblem-Solving for the CS Technical InterviewBooks by Titu Andreescu

N.B.-> Also, it’s good to be conversant with Algebra, Number Theory, Geometry, Combinatorics, Graph Theory, Mathematical Logic, Linear Algebra, Multivariable Calculus, Mathematical Programming/Operations Research/Optimization Theory, Probability & Statistics, Game Theory, Auction Theory etc. Some Russian books(translated to English) for the aforementioned branches of Mathematics can be found at Mir Titles.

2) Discrete Mathematics

a) Discrete Mathematics with Applications

b) Discrete Mathematics and It’s Applications

c) Concrete Mathematics

d) MIT’s Mathematics for Computer Science Course

3) Data Structures

A very strongly recommended text to study introductory level Data Structures and Algorithms is Data Structures and Algorithms Made Easy in Java. Very well illustrated and thought provoking solved exercises are there.

Other good Data Structure resources(some are a bit advanced) are –

a) Beginning Algorithms

b) Data Structures and Abstractions with Java

c) Data Structures and Algorithms in Java

d) Probabilistic Data Structures and Bloom Filters by Example

e) Advanced Data Structures

f) File Structures

g) Foundations of Multidimensional and Metric Data Structures

h) Purely Functional Data Structures (Persistent Data Structures)

N.B. ->  MSDN C# Data Structure Series, Back to Basics – Generic Data Structures and Algorithms In .NET 2.0A Heterogeneous Collection Issue , Issue with heterogeneous Tree (the best option to handle this scenario to build a heterogeneous tree dynamically at runtime in .NET 4.0/4.5,seems to be to use List as the type for the children of the tree – agreed that type safety is lost here but if you want type safety then you need to provide the child type for each of the children individually but here you will have to compromise by building the tree statically rather than doing it dynamically – a sample is available here), A Generic Tree Collection , NGenerics – Data Structures and Algorithms for .NET, QuickGraph, Graph Data Structures And Algorithms for .NET

N.B. -> LINQ and Data Structures – LINQ to Tree – A Generic Technique for Querying Tree-like Structures, SkyLink and GraphLINQ

4) Algorithms –

Some awesome resources on Algorithms are –

a) Competitive Programming

N.B. -> HackerEarth CodeMonk Tutorials, CodeChef Data Structures and Algorithms, TopCoder Tutorials, CodeChef Tutorials

b) Introduction to the Design and Analysis of Algorithms

N.B. -> Algorithmic Puzzles

c) Python Algorithms

d) Introduction to Algorithms : A Creative Approach

N.B.-> Using Induction to Design Algorithms

e) Essential Algorithms

f) Programming Pearls , More Programming Pearls , Writing Effecient Programs

g)  The Algorithm Design Manual

N.B.-> Classics like Data Structures and Algorithms with Object-Oriented Design Patterns in C++, How to Solve it by Computer, The Design and Analysis of Algorithms, Algorithms, Algorithm Design, Algorithms Bundle in Java, Introduction to Algorithms, The Art of Computer Programming etc are a class apart.

N.B.-> Algorithmic Techniques -> Guide to Dynamic Programming, DynamicProgramming, Dynamic Programming – A Computation Tool, Dynamic Programming Practice Problems, Greedy Method Wiki, When Greedy Algorithms are Perfect: the Matroid, Greedy Algorithms, Difference between Divide-and-Conquer and Dynamic Programming, Dynamic Programming vs Greedy Method, Comparisons of divide and conquer,greedy method,dynamic programming,backtracking and branch and bound techniques, Branch and Bound Wiki, Branch and Bound Approach, Good References for Branch and Bound Algorithms, Branch-and-Bound Applications in Combinatorial Data Analysis, some good books for self-studying graph theory, Graph Theory Textbooks and Resources and Graph Theory Books, Good Books to Learn Graph Theory.

For Algorithmic problem sets, the following resources are quite good –

a) Data Structure Problems at GeeksForGeeks and Algorithm Problems at GeeksForGeeks

b) Problems on Algorithms

c) Programming Challenges

d) Introduction to Competitive Programming Contests & Competition Programming and Problem Solving

e) Problems in Programming: Experience Through Practice

f) Programming Problems – Vol 1 and Vol 2

g) Algorithmic Problem Solving

h) MGPT Problems

N.B. -> Online Judges- Competitive Programming, Most Popular Programming Contest Sites for Coding Practice, A List of Programming Contests and Challenges, 8 Online Programming Contests That You Can Challenge Yourself To Win, 40+ Best Programming Contest | Coding Competition Websites, India National Olympiad in Informatics Problems, Indian Computing Olympiad

5) Cracking Interviews

a) Interview Corner at GeeksForGeeks

b) Cracking the Coding Interview

c) Elements Of Programming Interviews

N.B. -> Google Code Link

d) The Google Resume

N.B. -> Hacking a Google Interview

e) How Would You Move Mount Fuji?

f) Are you smart enough to work at Google?

g) Programming Interviews Exposed

h) Coding Interviews

i) Coding Interview Questions

j) Books By Antonio Gulli

N.B. -> Other good resources in general -> How can I get my resume shortlisted by Google for the position of software engineerGoogle’s Secret to Hiring the Best People, How to Pass a Silicon Valley Software Engineering Interview, What is the interview process like at Google, How do I prepare for a software engineering job interview, What should I expect in a Software Engineer interview at Google and how should I prepare, How to Ace a Google Interview, Ace the coding interview, every time, How to Ace the Software Engineering Interview, Ace Your Coding Interview & Land Your Dream Programming Job and Google HR boss says asking these questions will instantly improve your job interviews

6) Advanced Algorithmic Courses

Intelligent Search Algorithms, Algorithms Sequential & Parallel: A Unified Approach, MIT’s Readings from Design and Analysis of Algorithms Course  , MIT’s Readings from Introduction to Algorithms Course, Pearson Higher Education Algorithms, How to Think about AlgorithmsAlogorithm Implementation , StringDefs, Streaming Algorithms and Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today’s Computers (in-fact any PROSE award winner text seems to be a pleasure to read).

MIT’s Advanced Algorithmic Courses – Randomized Algorithms, Advanced Algorithms, Distributed Algorithms, Algorithms for Computational Biology, Algorithms for Inference, Foundations of Algorithms and Computational Techniques in Systems Biology, Algorithms for Computer Animation, Geometric Folding Algorithms: Linkages, Origami, Polyhedra

Stanford’s Advanced Algorithmic Courses – Advanced Algorithms, Approximation Algorithms, Randomized Algorithms, Parameterized Algorithms and Complexity, The Modern Algorithmic Toolbox, Graph Algorithms, Optimization and Algorithmic Paradigms, Geometric Algorithms, Algorithms for Modern Data Models, Algorithms in Biology


2 thoughts on “Resources for Problem Solving,Discrete Maths,Data Structures,Algorithms and Cracking Interviews of firms like Microsoft,Facebook,Google,Amazon etc

    • Thanks Nishi-Ranga :). One true confession – you are the best Algorist I have interacted personally,face to face.And thanks for being my roomie and I really miss all ur PJs :).You rock….Height is that I am responding to you now – almost after 3 and a half years.Kya Karu yaar – Tubelight hoon by nature… 🙂

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s