Programming

Datacast Episode 58: Deep Learning Meets Distributed Systems with Jim Dowling

Datacast Episode 58: Deep Learning Meets Distributed Systems with Jim Dowling

Jim Dowling is the CEO of Logical Clocks AB, an Associate Professor at KTH Royal Institute of Technology, and a Senior Researcher at SICS RISE in Stockholm. His research concentrates on building systems support for machine learning at scale. He is the lead architect of Hops Hadoop, the world's fastest and most scalable Hadoop distribution and only Hadoop platform with support for GPUs as a resource. He is also a regular speaker at Big Data and AI industry conferences.

Best Practices for Using Functional Programming in Python

Best Practices for Using Functional Programming in Python

Python is a very versatile, high-level programming language. It has a generous standard library, support for multiple programming paradigms, and a lot of internal transparency. If you choose, you can peek into lower layers of Python and modify them – and even modify the runtime on the fly as the program executes.

Demystifing Graph Algorithms

Demystifing Graph Algorithms

This is a complete guide to graph algorithms that you can rely on to practice for your next technical interview. No matter how complicated these concepts may seem, repeatedly getting familiar with different techniques and problems will make you more competent at solving them.

Greedy Algorithm and Dynamic Programming

Greedy Algorithm and Dynamic Programming

In an algorithm design there is no one 'silver bullet' that is a cure for all computation problems. Different problems require the use of different kinds of techniques. A good programmer uses all these techniques based on the type of problem. In this blog post, I am going to cover 2 fundamental algorithm design principles: greedy algorithms and dynamic programming

Divide and Conquer Algorithms

Divide and Conquer Algorithms

A very popular algorithmic paradigm, a typical Divide and Conquer algorithm solves a problem using following three steps:

  • Divide: Break the given problem into subproblems of same type.

  • Conquer: Recursively solve these subproblems

  • Combine: Appropriately combine the answers