• No results found

Chapter 5 Data Analyses and Findings

5.3 Complete Data Analyses for Bob

5.3.1 Early Education

Bob was studying CS and was a confident and well-spoken student who volunteered to deliver talks during departmental open days. Bob attended a state school for his early education and studied a range of A-level subjects including computing with Visual Ba- sic, which he enjoyed, and before that he studied an information and communication technology (ICT) module for his general certificate of secondary education (GCSE). Bob studied two mathematics modules for his A-levels, mathematics and further math- ematics, achieving A* and A, respectively.

At university, Bob studied two mathematics modules (CS130 and CS131), achiev- ing 60% and 48%, respectively. He said, ‘They are the most difficult modules, but I see how they’re quite useful’. Bob decided to pursue his academic studies in CS, as

he thought that the field was rapidly changing and growing, so there would be job prospects. For Bob, the ideal job should be enjoyable and involve programming within a tech firm or the financial sector, attracting a reasonable income. Bob’s hobbies included playing musical instruments, which he said took a lot of practice.

Bob’s mathematics performance was the lowest among the participants in this study as shown in Figure 5.1. Figure 5.9 indicates that Bob performed slightly above the class average in CS130 and below the average in CS131. Bob started programming

Figure 5.9: Bob’s mathematics modules grades compared to the class mean.

when he was 13, experimenting with ActionScript with Flash. Then, he learnt how to build websites using HTML, PHP, and JavaScript. He learnt Visual Basic during his A-level study and Java at university when he studied CS118 and CS126. Bob achieved a high grade in CS118 in both the coursework and the final exam, whereas in CS126, he achieved a high grade in the coursework but not in the final exam. Bob enjoyed both modules and thought that his previous experience helped him with the learning, as some of the content was not new to him and some content built upon his previous learning. That might explain Bob’s performance in CS126, which included advanced topics that Bob might not have been introduced to in his early education.

Apart from the CS126 exam, Bob managed to perform above the class average in all programming assessments, which makes Bob’s overall grades for both program- ming modules above the class average, as shown in Figures 5.10 and 5.11. Moreover,

Bob’s programming performance was the second highest average compared to the par- ticipants, as shown in Figure 5.5.

Figure 5.10: Bob’s grades in programming

assessments. Figure 5.11: Bob’s overall grades for pro-gramming modules.

5.3.2 Mathematics and Programming

When Bob was asked about the relationship between mathematics and programming, he instantly replied, ‘Yeah, quite a lot’ and emphasised that the more he studied mathematics, the more he understood how to apply mathematics to programming. He said, ‘Logic as well comes up in maths which can be applied to computer science’, that graphs can also be used in algorithms to solve such problems, and, obviously, mathematical problems in programming need mathematical knowledge to solve them. He also thought that calculus had some application in CS and ‘It’s not necessarily obvious what the connection is, but from my experience there is a good use for it’.

5.3.3 Attitudes and Personal Traits

5.3.3.1 Learning Style

Bob’s learning style depended on trial-and-error strategies, as he usually started coding and learnt as he proceeded. He set some tasks to be achieved and tackled them one by

one, learning knowledge required to solve each task. During lab sessions, Bob thought a mixture of working alone and working in pairs was valuable, so that he could discuss a problem with his peers but would implement the solution by himself. He said, ‘You get to learn specifically the things you don’t know’ but that having a discussion with others was not beneficial in all cases. When Bob struggled to solve a problem, he would usually try to solve it by himself, searching for a similar problem he had tackled in the past, but he would ask a colleague or a tutor if he could not solve it.

5.3.3.2 Challenging Tasks

Bob liked to be challenged by complex tasks but said the level of difficulty should be raised gradually in problem sheets, so he could learn key concepts and be confident in applying them. He said that challenging tasks needed to be included to help students build their knowledge base and boost their confidence, knowing that they can solve complicated tasks.

Bob thought that challenging tasks should be included in the curriculum and not as extra ungraded tasks that could distract students and be time-consuming. Bob liked to think in different ways when he was trying to solve a problem and ‘To find solutions that aren’t the obvious ones’.

5.3.3.3 Communication Skills

When Bob was asked about his communications skills, he said that he was considered a good presenter, having participated in many student activities at the university and having given many talks during open days. Thus, he felt confident speaking in public. He preferred to communicate verbally rather than in writing, as he sometimes found it hard to express his ideas through writing. In addition, he could explain and deliver complex technical ideas to his classmates through speaking.

5.3.4 Coding Strategies

Bob’s strategy was to tackle a project by setting sub-goals and solving tasks accordingly. When Bob started coding a project, he would usually sort out all the elements and tasks and decide which he should solve first, solve it, then solve the second task, until he reached the end.

Bob organised his code into small functions. If he needed to use certain functions more frequently, his code was written in a linear style, where he divided the code with line breaks and comments. When dealing with programming errors, Bob thought that some programming languages were easier to debug, whereas he was constantly debugging his. Bob usually represented a certain application based on its functionality, where complex application included many functions. Bob considered complexity an important factor for large-scale software development. He gave an example of how avoiding declaring unnecessary variables and nesting too many loops could improve time and space complexity.

5.3.5 Mental Representation Strategies

Results from the code-writing problems indicated that Bob understood problem spec- ifications and program constructs for the array creation problem. However, Bob’s responses for this problem showed that direct translations of the problem specifica- tions resulted in an invalid solution. The solution missed one program construct (i.e., generating exclusive random values) so his response was categorised as Unistructural. Bob provided a valid response for the linear search problem, and his response was categorised as Multistructural.

Bob’s response for the recursion problem provided direct translations for the problem specification and resulted in invalid code. The code was invalid because im- portant program constructs were missed, including recursive invocation and differ- ence calculation. Thus, Bob’s response for the recursive problem was categorised as Unistructural.

5.3.6 Witter

Bob’s performance in Witter shows that he exhibited the ability to understand and im- plement data structure and algorithms considering time and space complexity. Bob’s overall grade for Witter was 95. Bob’s approach for the User Store and Weet classes consisted of two data structures providing good time over space complexity. The ap- proach was a combination of a hash map and binary tree, which allowed data to be sorted, as most of the functions required data to be in order so that time complexity would be reduced. However, as the worst-case time complexity for searching in a tree depends on the tree height, if there are too many nodes in one side of the tree, time complexity is O(h). Thus, a self-balancing binary tree would make Bob’s approach more efficient. Implementation for the Follower Store class was based on an adja- cency matrix storing two directions of followers and follows, which provided good time complexity for accessing elements, whereas space complexity can be affected.

5.3.7 Summary

Bob’s academic performance in programming was in the top 5% of his peers. How- ever, Bob’s mathematics average was in the 55thpercentile in which his performance in mathematics was only slightly above the class average. In comparison with the partic- ipants, Bob’s performance in mathematics was the lowest; nevertheless, Bob achieved high grades in programming. Bob maintained the high academic performance exhib- ited through his early education and in higher education, which could not be achieved without devoting a lot of time and effort. In addition, Bob was motivated by external factors, in this case a successful career, which could lead him to dedicate more time and effort to achieve his goal.

As Bob said that he was always trying creative solutions, that was evidenced by his approach to the Witter assignment, which included a combination of different data structures and algorithms compared with results from the code-writing problems, which did not indicate any sign of originality. It seemed that Bob’s performance in exams

was less successful than his performance in other assessments. This could suggest that including an open-ended project is a possible way of identifying creativity in programming.