Friday, June 5, 2015

2 Websites to Learn Coding in Java Online for FREE

Here, I often receive questions like how to improve my coding skills?,  or how do I learn programming?, or I am having difficultly solving programming problems, please help etc. This is mostly from programmers, who has just started programming or a graduate with programming degree or even some programmers with a year or two in Job. Like many other things in the world, to improve coding you need to code, code and code and to improve programming you need to write program, and that's where many of these programmers fails. In 90% cases, they simply don't write enough program to develop programming logic and code sense and if without too much experience at data structures and algorithms, if they attempt problems given on sites like TopCoder, or Project Euler, they fail miserably. To be frank, it's not easy to solve problems from those site, until you have really done programming for year or two, or even more.  A good way to improve coding is to solve basic data structures, algorithms and object oriented design problems by yourself.  If you are absolutely new in programming world then investing some money in buying a book on data structure and algorithm e.g. Introduction to Algorithm , though it will not teach you coding but it will give knowledge of data structure and algorithms, which is very important for any programmer. You can also purchase a book to learn how to program e.g. Head First Programming, which teaches you how to code and write program using Python language. These books can supplement your practice with solid knowledge .

2 Resources to Practice Coding Online in Java

In this article, I am going to share with you 2 websites, which will help you to learn coding and programming and that too for FREE. The first site is mostly for Java programmers, but problem set can be solved in any language, while the second site is language independent because it doesn't ask you to code online, rather it only check your answers with random input data.

First site which  I am going to share with you guys is CodeAbbey, when I came across CodeAbbey, I really like their question set, because it was perfectly designed for beginners. It's neither easy nor trivial and provides some decent practice to first timer. here is the kind of question you can expect from this site :
  • Maximum of array    
  • Vowel Count  
  • Weighted sum of digits
  • Body Mass Index
  • Sum of digits
  • Median of Three
  • Neumann's Random Generator  
  • Array Checksum
  • Modulo and time difference  
  • Average of an array
  • Array Counters
  • Binary Search
  • Dice Rolling

Once you start solving these program, your programming logic will improve and you will learn how to apply the knowledge of operators, data structure and algorithm to solve a problem. Slowly you will learn how to approach any problem. Once you solved the beginners problem, you can start with intermediate and some difficult ones to test your knowledge and gain some confidence. Remember, its the problem solving skill which makes you a good programmer not just knowing all the syntax of any programming language e.g. C or C++. Once you learn how to code or how to program, you can solve the same problem in any programming language.
2 Free Resource to learn Coding online in Java

The second site I am going to share with you guys is CodingBat. This sites is also an excellent resource to practice and learn coding for Java and Python programmer. You can solve problems in either Java or Python. Just like CodeAbbey, you need to registered, but that's good because you can track your progress. It also contains beginner level programming problems from useful topics like String, Array, Logic and Recursion. I really like there questions from recursion, as it's one of the confusing concept to master. They also have questions at different difficulty level. Once you log in, you can select any question and you will be asked to write code for that method in Java or python, Every program has clear specification, often you need to implement a particular method. once you done, you can run your program and test with different input, including boundary conditions, which is designed by CodingBat itself. Their input set is really good, and you will learn quickly by following why your program doesn't run on a particular input. Here are some of the questions you can expect at codingBat :

you have two monkeys, a and b, and the parameters aSmile and bSmile indicate if each is smiling. We are in trouble if they are both smiling or if neither of them is smiling. Return true if we are in trouble.

monkeyTrouble(true, true) ? true
monkeyTrouble(false, false) ? true
monkeyTrouble(true, false) ? false

We have a number of bunnies and each bunny has two big floppy ears. We want to compute the total number of ears across all the bunnies recursively (without loops or multiplication).

bunnyEars(0) ? 0
bunnyEars(1) ? 2
bunnyEars(2) ? 4

CodingBat also contains helps and videos on both Java and Python lessons.
Codingbat is good site to practice coding online

I am sure once you start solving programming problems on these two websites, you will learn coding faster. If you already know how to code, then these will simply improve your thinking and programming skills. Great thing about these two websites are that, there problems are not very difficult, which is one reason I am recommending these to beginners and intermediate Java programmers. Sometime a site with difficult programming problems discourages a young programmer. Once you start solving easy questions, your confidence will grow up and you gradually advance towards more difficult topics and questions. By the way, these sites are not for experienced programmers, as you can easily solve all those questions, but if you like to do quick recap and practice, then you will find the interesting as well. If you are looking to buy book to learn coding then I suggest you to take a look at Head First Programming, this book teaches coding in Python but its the head first style which I connect more.

Further Learning
SOLID Principles of Object Oriented Design
Java Fundamentals: The Java Language
Clean Code: Writing Code for Humans

P.S. If you know any good online resource to learn Java especially for beginners, which you think complements these two websites then feel free to share. Everybody love free resources and happy learning programming.

1 comment :

ashara said...

Here I attach two more, they are for companies but they have challenges for developers

Post a Comment