• No results found

Chapter 5 Data Analyses and Findings

5.4 Complete Data Analyses for Sara

5.4.1 Early Education

Sara attended grammar schools for her GCSE and sixth-form studies. At the age of 13, she started programming with Python but said she ended up being self-taught, as she thought that her teacher did not know much about Python, so the curriculum was a mix of unrelated topics, such as algebra and finite state automata. Sara chose to study CS to pursue her early interests in programming and game designing, and she expressed the view that the IT industry does not have enough women. Compared with other CS participants, Sara’s performance in both mathematics modules were the second lowest, as shown in Figure 5.1, whereas she managed to perform above the class average in both CS130 and CS131, as shown in Figure 5.12.

Figure 5.12: Sara’s mathematics modules grades compared to the class mean.

Sara started teaching herself Java, which was difficult and slow, but she said she wanted to develop her Java skills before starting at university. It seemed that Sara had the

ability to determine her goals, and the knowledge to achieve them. She also had the ability and independence to be a self-taught learner.

Sara’s performances in the programming module assessments were above the class average as shown in Figure 5.13, which resulted in achieving overall grades that were above the class average, as shown in Figure 5.14. In addition, Figure 5.5 indicates Sara’s programming module average ranked fourth compared to other participants as shown in Figure 5.5.

Figure 5.13: Sara’s grades in programming

assessments. Figure 5.14: Sara’s overall grades for pro-gramming modules.

When Sara expressed her feelings about programming, she emphasised that the most interesting part of programming was the feeling that she described as ‘euphoric’, once a complicated project was complete or an irritating bug had been eliminated. Sara said, ‘It’s what keeps me coming back and doing more and willing to learn more’.

5.4.2 Mathematics and Programming

When Sara was asked about the relationship between programming and mathematics, she thought that both were related to each other even though sometimes the connection was not clear. She said that, although mathematics and programming were in parallel, it was difficult sometimes while programming to distinguish whether she was thinking mathematically or logically, stating it was difficult to determine the causation.

She believed that it was not necessary to be a great mathematician to be a programmer, other than understanding mathematics basics, and in some cases a good programmer may not be good at mathematics. However, she did mention that the more she progressed in her studies, the more she could see how important mathematics could be. She gave an example of how mathematics was interlinked with programming by applying mathematics in code optimisation to split or combine loops.

5.4.3 Attitudes and Personal Traits

5.4.3.1 Learning Style

Sara was an independent self-learner and thought that learning style provided the most enriching strategy for her study. She said that despite the effort and the consumption of time, she learnt best in this way as long as she knew how the learning process worked and where the starting point was. In the lab, Sara preferred working in pairs, as social interactions, enthusiasm, and a slow-paced learning environment could help her self- taught process by discussing a problem with fellow students. ‘I do believe group work is one of the best ways to learn’, she said.

5.4.3.2 Challenging Tasks

Sara found solving challenging tasks more engaging and enjoyable, as she would not solve a problem that she already knew: ‘I will just leave the problem’. However, in some coursework, she would invest more time to understand a challenging problem that kept her motivated to find the answer. She mentioned that solving the first programming module problem sheets was a problem for her, as she did not find the problems challenging or engaging at her level of ability, rather than having very slow- paced learning.

5.4.3.3 Communication Skills

When asked about her communication skills, Sara said that presenting was not some- thing she has done much and that it made her nervous. However, she said that, during

the professional skills module when she had to do an essay and a presentation on a topic that she enjoyed and became passionate about, she found it easier to give a pre- sentation on a topic she was confident in. Sara preferred to communicate in writing, as she could have other people to check her writing. She said, ‘I think it’s definitely that idea of being able to edit what you’ve said’.

5.4.4 Coding Strategies

When Sara started programming, she would first write and draw her ideas on a piece of paper, which would help her to understand the general structure of a program, including its functions and classes. In addition, this strategy helped her to understand the relationship between all classes, which she thought was very important in the early stages.

Sara thought that code comments were very important and avoided working with students who did not explain code, as it was time-consuming to look at messy code. She tried to comment on her code, especially for the coursework, when she thought that the written code was working correctly. For error handling, Sara usually put flags around sections that might have a problem and started investigating what could have gone wrong.

5.4.5 Mental Representation Strategies

Sara’s method of solving such problems depends on their complexity. She would first assess the problem and see whether she understood what was required and whether she had the knowledge to solve it. If she did not feel confident, she would try to learn and find a way to understand the concepts behind the problem and find another similar problem that might have a subsection that could be a starting point.

Results from code-writing problem analyses indicated that Sara’s responses for the first and second problems were categorised at the highest possible SOLO category, Relational and Multistructural, respectively, whereas, Sara’s response for the recursion problem was categorised as Unistructural. Sara’s response for the recursion method

did not include some constructs, such as checking the edge, as explained in Chapter 3.3.3.1.3, which was important for the method.

5.4.6 Witter

When Sara talked about Witter, she said that functionality was the main step, then choosing a suitable data structure to achieve a high level of efficiency. She said it was important to consider complexity: ‘When I start nesting for loops, I immediately write is there another way I can do this?’ as she always considered time complexity. Sara’s performance in Witter showed that she understood the Witter requirements and implemented a solution that considered both time and space complexity.

Sara’s approach for the User Store class implemented two data structures, the hash map and binary tree, where the approach achieved good space complexity using the hash map. Implementing the binary tree allows users to be ordered based on data and stored in a way in which retrieving specific users can be relatively fast, based on the number of users. However, a balanced tree would be more efficient in terms of achieving better time complexity for search functions, as large numbers of users might use the application. Sara explained in the preamble comments section that using a balanced tree would be more efficient but she did not implement it.

Sara implemented a similar approach to the Follower class using hash maps to store followers and follows, using a binary tree. For the Weet class, Sara also implemented a hash map and binary tree to store Weets, which were likely to be large numbers that could affect time complexity when searching for a specific Weet. Thus, time complexity for the search function could be improved by a balanced tree. Performance for some functions could be improved using a secondary data structure.

5.4.7 Summary

Sara’s academic performance fell in the top 10% of programming and top 20% of mathematics among the cohort. Sara addressed the issue of the lack of women in the IT industry, and she was motivated to be successful and participate in this male-

dominated industry.

Sara implemented multiple data structures and algorithms to solve the Witter project. Her Witter approach was original in terms of implementing a combination of hash map and binary tree. Time efficiency for the search function could be improved by implementing a balanced tree, which she mentioned in her code comments, but her approach was relatively efficient.

Sara’s responses for the array creation and linear search problems indicated that her codes were clear and elegant, reducing any redundancy in the code. However, Sara’s response to the recursion problem showed that she understood the problem’s requirements but could not provide a valid response.