In this thesis I have tried to find out what students have problems with when learning object oriented programming languages. I have studied how they solve their assignments and how well they succeed. In order to find differences between strong and weak students and in the end suggest advices for the teaching.
I have looked at 4 different video recordings of students programming at a computer. The video shows the pairs students, their code and their conversation. I have studied these video recordings and found examples of the questions I want to figure out. I have found examples of types of methods they use and what they struggle with. I have seen the difference between the different students and seen what the strong students do, compared to the weak students.
I found out that the students have problems with parameters, pointers and the understanding of objects. Some of the students forget to use the parameters and doesn’t know how to use pointers. They misunderstand what an object is, and they think that an attribute name is the same as the object it self. These problems hamper the progress of the students’ learning and I will suggest that parameters, pointers and objects need to be taught more.
I also found out that the students don’t follow any specific method in their assignment solving. They use what ever method they feel useful at the time, the strong students use a method that works well for them. The method the strong students use consists of the steps understanding, writing and testing. From this thesis it looks like the less difference in time use at the different activities they use to solve the assignment the more successful they are. The teachers should encourage the students to make time to understand the assignment and the code, if parts of the code are given, before they try to solve the assignment.
The strong students have a broader perspective and they are able to regard their code as well as the program execution and the real world is to be represented in the program when developing their solution. The weaker students concentrated mostly on the code and the assignment, and didn’t show any sign that they knew that they should think of the real world when they program. In this thesis it looks like the weaker students make use of the teachers’ code, to get examples on the problem they have. In the start of the semester the students have to concentrate on fewer of the domains to succeed. They should be encouraged to take more of the domains in mind as they learn more trough the semester.
I advice that I give is that the learning should focus more on pointers, parameters and understanding of objects and that the students should be encouraged to make their perspective broader as they learn more through the semester. The teachers should also give the students examples of methods for solving programming assignments, so the students know where to start and what to do. I also give the advice I give for the teaching is that they should use the tool BlueJ, but I advice that they should have one assignment at the end of the semester where the students have to write code from the beginning like we do to day in Emacs. They should do that to ensure that the students really learn Java and object oriented thinking.
(The rest of the thesis is written in Norwegian).