Taking a computer programming language course for the first time is a problematic and challenging task for most of the pupils who mostly fail or drop out of the course. In addition to this, this problem is not restricted for computer science pupils, since pupils in other engineering disciplines have to take programming courses as well.
In this paper, we review papers related to teaching approach, challenges and solutions for improving student’s ability and performance in a first programming language course in undergraduate program.
One of the most well-known challenges in teaching and learning a first programming language course is that in the same course, the students must learn and get to know fundamental programming techniques, high level abstraction capabilities, the application of those tricks and techniques, notion and significance in problem solving and design.
In this paper the general trends comparing freshers and expert programmers, programming strategies and knowledge, program generation and understanding has been identified.
The main and fundamental focus and point of this review is on novice programming and concepts relating to novice learning and teaching. Different problems faced and experienced by novices are recognized, containing issues relating to core program design, to algorithmic complexity in some specific language features, to the frangibility of novice knowledge, and so on. Keep this in mind we have summarized this material and suggest some practical concepts for academicians.