Monday, October 10, 2016

My New Book: Java 9 Data Structures and Algorithms

About halfway this year I decided to write a book on datastructure and algorithms in Java 9 after being suggested to do so by Packt. Java is the most popular programming language in the enterprise systems and have been such way at least for the last ten years. There are many people in the industry coming from all disciplines of engineering and doing an extraordinary job in this industry. I am one of these people, being a software developer without a formal degree in computer science. We started programming by simply implementing systems. However, at some point of time, it is necessary to learn the basics of computer science to get an entry into the elite club. My book is for the people who already know Java and having been programming in this language, but want to learn about datastructure and algorithms.

An overview of the book Other than the knowledge of Java language, the book does not assume any knowledge of computer science. However, I am assuming a science or engineering background, and I am assuming the knowledge of high school algebra and calculus. The book however starts from the very basics of datastructure and algorithms, covering basic convcepts of asymptotic complexity and analysis of algorithms. From there, the book takes a step by step introduction to the concepts of datastructure and algorithms, from the simplest to the more complex ones slowly. Even if the book assumes no prior knowledge of algorithms, I tried to provide an in depth view into each topic. I have tried to grow a mathematical understanding of the subject.

Saturday, February 22, 2014

Functional Programming with Java 8 Lambda Expressions - Monads

What is a monad?: A monad is a design pattern concept used in mostly functional programming languages like lisp or in the modern world clojure or scala. (I would in fact copy a few things from scala.) Now why is it becoming important in java? Because java has got its new lambda feature from version 8. Lambda or closure is a functional programming feature. It allowes you to use code blocks as variables and lets you pass it around as such. I have discussed about Java's 'Project Lambda' in my previous article What's Cooking in Java 8 - Project Lambda. You can now try it out on JDK 8 preview release available in here. Now could we do monads before Java 8? Sure, after all Java's lambda is semantically just another way of implementing an interface (Its not actually that because the compiler knows where its being used), but it would be a lot messier code which would pretty much kill its utility.