Early-stage programming learners or freshmen students face the dilemma of a lack of support when it comes to learning the fundamentals of programming. Despite the abundance of resources available online and increasing in number every day, a staggering number of resources focus on hit-and-trial methods of learning. This essentially means that when the learner makes a mistake, an error is shown which is typically output by the compiler. Fixing the error helps the learner grasp the information and store it in their memory. A similar error in the future will invoke a memory recall and make it easier to find a solution. While this method of learning anything, let alone programming, will do the job, the lack of fundamental knowledge transfer is not addressed i.e., why was the error thrown in the first place? Existing tools provide information about how to solve a problem but do not touch the topic of how to use the programming constructs optimally.