Chapter 5 Data Analyses and Findings
5.7 Complete Data Analyses for Robin
5.7.1 Early Education
Robin attended grammar school studying a wide range of subjects for GCSE including ICT, which involved web development scripting languages. Robin said that his passion and interest in mathematics was the reason that he applied for a DM degree. He said that getting a degree with combined subjects made a person more well-rounded and more attractive to potential employers. Robin’s ideal job would involve heavy programming for financial models.
Robin’s programming experience had not been developed until he started his university study where he learnt programming in CS118. Then, he studied CS126 using Java. Robin said that he enjoyed both modules mainly because of the coursework, robot maze and Witter, which were designed based on real-life contexts, which Robin thought was the reason that both modules were interesting to learn.
Robin did not have any programming experience before studying these mod- ules but he performed well in the programming coursework, as shown in Figure 5.19. However, Robin’s performance on the exams was not as high as his performance in the coursework. Figure 5.19 indicates that Robin’s performance on the CS118 exam was slightly below the class average, whereas his performance in the coursework, robot maze, Witter, and problem sheets was higher than the class average. Robin’s per- formance in Witter was the second highest grade compared to the other participants’ performance, where he achieved 92. However, Robin’s programming average for both modules was the lowest among the participants, as shown in Figure 5.5 because of the low performance on the CS118 exam.
Figure 5.19: Robin’s marks in program-
ming assessments. Figure 5.20: Robin’s overall marks for pro-gramming modules.
5.7.2 Mathematics and Programming
Robin thought that mathematics and programming could be related and raised an interesting point about the relationship direction, believing that he could apply some programming methods to solve mathematical problems. For example, finding prime numbers in large datasets could be easier by developing a computer program algorithm that could compute prime numbers. Robin said he struggled to realise how applied mathematics related to CS but thought the relationship definitely existed.
two aspects that could help individuals to learn either mathematics or programming. Cognitive aspects that require logical and methodological thinking and problem-solving strategies and skills that are related to both subjects could be acquired and developed by the learner.
5.7.3 Attitudes and Personal Traits
5.7.3.1 Learning Style
Robin’s general learning strategy depended on reading lecture materials, books, and extra resources. He preferred to learn individually and be an independent learner. In programming, Robin said that, when particular programming topics were delivered during the lectures, he would read more about the topic and would try to solve prob- lems, as he thought he learnt better by experimenting with what he had been taught. During the lab sessions, Robin preferred to work in pairs where both students could learn from each other. When solving a problem, one student might use a different algorithm that may or may not be better; however, discussing and analysing potential solutions could be rewarding.
5.7.3.2 Challenging Tasks
Robin found that challenging tasks engaged him, as he liked to solve complicated tasks and be pushed to overcome difficulties, which was the best way for him to learn. He thought that easy tasks were not interesting or engaging. Robin said, ‘I find [it] a lack of a challenge’, but some CS126 tasks were challenging and enjoyable, such as solving a problem that required implementing a hash map. Robin believed that having additional unassessed challenging tasks would be a good idea if they did not affect the workload.
5.7.3.3 Communication Skills
Robin had a good perception about his communication skills: ‘I’m a good presenter’. He was involved in fundraising activities and gave presentations to pupils in schools
about his adventure climbing Mt. Kilimanjaro. Thus, Robin liked to communicate in speaking rather than in writing, as he could interact with people and observe their reactions during presentations. He thought that writing did not give him the chance to instantly refine or explain his ideas. In addition, Robin could explain complicated technical problems to another person, which meant he had the ability to communicate his ideas effectively.
5.7.4 Coding Strategies
Robin’s coding strategy started by considering the problem specifications and analysing what was required. Then, Robin drew a flow chart explaining his plan to reach the final goal. After that Robin worked backwards by splitting the problem into small approachable tasks, and he started tackling the basic task and its related tasks. In this case, he might write the main class and its functions. He made sure to test his approach, considering time and space complexity.
Robin’s coding strategies included organising his code in terms of writing small functions to be called from the main function, which he tried to keep short. In addition, Robin tried to comment on his code in case someone read the code, but if he was implementing a small code or a private code, then he did not comment. Moreover, if Robin wanted to optimise other code, then comments would make the process much easier. Robin’s debugging strategy started by locating affected code to then ‘talk through out loud what it’s doing’. He found this strategy effective, as it helped him to resolve the code errors.
5.7.5 Mental Representation Strategies
Robin followed problem-solving strategies to accomplish certain tasks. Robin identified the final goal of solving a problem and worked backwards to determine what should be implemented first. Then, Robin built up his solution until he achieved the final goal. Robin looked at a certain software application based on its functionality, and he thought of the application core structure related to classes, functions, and data
structure. Robin said that it could be helpful to gather some ideas from other software applications regarding design and implementation.
Robin manifested different SOLO categorisations in his responses for code- writing problems. Robin’s response for the array creation problem was categorised as Unistructural, as his code missed two program constructs (inclusive random values and return statement). However, Robin produced a valid response for the linear search problem and the response was categorised as Multistructural. Robin’s response for the recursive problem indicated that he did not understand the problem specifications, which resulted in invalid code. His code lacked basic recursion constructs including valid arguments and method invocation, which resulted in the code being categorised as Prestructural. As code-writing problem responses had been written during the CS118 exam, it seemed that Robin’s performance during the examination settings was not as good as his performance in programming assessments. As mentioned earlier, Robin’s performances in coursework were higher than for exams.
5.7.6 Witter
Although Robin thought that the Witter assignment was challenging at some points, it was enjoyable and rewarding and he said, ‘I learnt a lot through it’. Robin mentioned that time and space complexity were important factors to consider, especially if Witter was to become publicly available on the Internet. Then, the difference between Big- O(n) and Big-O(n2) matters. Thus, he devoted time and effort to implementing an efficient approach. Robin said, ‘It was a nice bit of independent study I could do in my own time and work through’.
Robin’s approach for the User Store included a hash map and array lists in which the approach considered time complexity over space complexity. Robin justified his decision for the chosen data structures, as the approach had good time complexity for the searching operation with a considerable memory space trade off. Robin’s approach for the Follower class included the implementation of two hash maps. Although Robin thought the approach increased space complexity, time complexity for iteration was
also an advantage of the approach. Robin’s implementation for the Weet class included hash maps and array list data structures, which allowed for efficient time and space performance. In addition, Robin implemented extra data structures to store trending Weets, which is efficient when displaying them. Robin’s overall performance in the Witter assignment indicated his abilities to solve large-scale problems and his ability to understand different data structure advantages and limitations.
5.7.7 Summary
Although Robin’s performance in programming was the lowest compared to other par- ticipants, for both programming modules, he achieved an average of 78, which fell in the 50th percentile.
However, Robin’s performance in exams was not as good as in assignments. If we consider that coursework for both programming modules was weighted at 40% of the overall score, Robin achieved 96 in CS118 coursework and 92 in Witter.
In addition, Robin’s first exposure to programming was at university, whereas some other participants had programming experience during their early education. That may have affected Robin’s performance in the first programming module, CS118, whereas his performance in the second module CS126 that included advanced topics was better. Thus, Robin manifested above-average ability in a specific area of assessment based on his performance but not in overall performance in programming.
Based on Witter evidence, Robin’s approach was to implement different data structures, which indicated Robin’s abilities in understanding advantages and limita- tions. In addition, Robin implemented certain data structures for certain problems, which made the approach efficient and creative.