I have been teaching computing for several years now, and the NCSS challenge is integral to the software design and programming unit. More than ever, I believe that students are blind to — or forget — how much they learn when they participate in the challenge.
“We do not learn from experience…we learn from reflecting on experience.” — John Dewey
With a nod to Mr Dewey, I designed the year 9 IST task (teacher resources available here) to promote reflecting on experience so students see their growth. Their reflections shared below provide insights into what it is like to be a beginner, particularly girls, at designing and implementing coded solutions, and how the experience shape perceptions of self and future aspirations.
For some context, here’s an outline of what I got them to do:
- weekly reflections during the NCSS challenge, with particular emphasis on problem-solving strategies as well as algorithm
- algorithm comparison wherein they have to find someone else’s solution and explain why the differences matter — or not
- research and compare two (2) jobs in the IT sector, identifying features of personal relevance, e.g. career path
- written reflection which is a synthesis of all of the above, i.e. answer the question: “In doing the NCSS Challenge, how have my knowledge and skill in designing and implementing coded solutions grown, AND what does this mean to me now and into the future?”
Did you learn?
“ By comparing my progress in Week 1, Week 2 and Week 4, I can see the new skills and the growth in my coding and the problems solved. In the first week, I was learning how to ask for user input, and printing lines with variables in them. The codes were short, and took a few minutes to solve… However, when comparing … to the last problem in Week 4.1 — ‘Kitchen Contents’, you can really see how my python skills were developed ... In this problem, I had to use a ‘while’ loop, along with multiway selections. I had also learnt how to use dictionaries, make lists using the ‘.split’ command, and to use different data types, like str and int. My documenting skills, along with my coding also developed…” — Anna
“In week 1, the problem I found most challenging involved an ‘if’ for the first time. This is an example of binary selection, a simple control structure which offers two possible outcomes for a program depending on the given input… I now see it as extremely simple and straightforward, due to having now completed much harder problems such as the one in week 4. The difficulty of week 4’s problem lay in its combination of different control structures, pre-test repetition and multi-way selection, the former allowing a computer to check the terminating condition at the beginning of a while loop and the latter offering more than two possible outcomes for an input. I originally didn’t understand that both of these control structures were needed…” — Chloe
“I have grown in designing and implementing coded solution by understanding simple codes and breaking down the requirements in the question. Despite this I still find it difficult to find the appropriate coding terms to find a solution such as the data structure required for the response and whether to use a dictionary, append, etc. An example of a simple thing that I understand include the ‘if’ and ‘elif’ statements and conditions and the input statement as these are easy to understand. Through the feedback received in the evaluations it has taught me to always check my work and to plan carefully before executing your design of your code.” — Elise
“While I struggled with the NCSS challenge somewhat, I also did pick up a few things along the way, such as how to: convert from stings to integers, replace characters in a string, remove characters from a string, do maths with loops, change this inside a loop, append and sort, check if something is in a list, slice a string, and create/modify a dictionary, just to name a few. I also learnt about data structures (e.g. lists), control structures (e.g. Binary selection) and error detection (e.g. Runtime). I enjoyed it, however, I feel that I didn’t really get to fully understand some of the important notes because of a) how fast the challenge went, and b) because of the difficulty of the questions. In the end, however, I did manage to complete most of the questions and I am proud that I gave it a go. When comparing it to the web comp challenge earlier this year, I found that I prefer (and am better at) web design.” — Hannah
“ In this assessment I learnt how to use flowcharts and pseudocode to design and show the function and process behind code. This helped me to map out my ideas, although I struggled with pseudocode as you had to use a specific language and keywords which I didn’t always know. Through the NCSS challenge, I learnt to code. I used flowcharts and pseudocode to help me implement my code and solve the solutions on Grok. I learnt lots of new strategies and aspects of code which helped me solve problems through this years NCSS challenge, such as using a dictionary and appending words to the back of the list. I also learnt about data structures such as post test and pre test, runtime errors and various methods of algorithm representation. Although I struggled with Grok, particularly toward the later weeks like week 4 and 5, I still mostly enjoyed it, although it was frustrating when I couldn’t figure out the code and didn’t understand the problem and what was required of me to solve it.” — Heidi
“ By the end of the challenge, I was getting better at making my flowcharts clearer and easier to understand but I’m still not up to the point where I can do them really well as I still make mistakes within them. To then program the design of the code, I usually have errors within them which results in the code not working. At the start of the challenge, I didn’t really understand what the different errors meant such as a ‘Runtime error’. As I kept doing the challenge and ran into these problems many times, I started to learn how to fix them and learnt about what they meant by searching up what they meant.” — Kayley
“ At the start of week one, I had a very limited understanding of what software programming was and little did I know just how much of an impact it has on our daily lives. In terms of my technical skills, I was very limited and did not know much about programming. As seen in my week one evaluation, I often made many syntax errors due to my lack of experience in software programming and as I progressed through the week and by the time I reached week five , the number of silly mistakes started to reduce and become virtually non-existent. At the end of week five, I now know that software programming involves a computer language in order to write programs which are designed to perform functions. Without software programming, much of the software we use today would not exist which would make our lives much more difficult. Over the five-week period, I found myself to be growing in confidence in solving different problems and now I know about variables, for loops and a whole lot more.” — Lucinda
“… I found that one of the main programming languages needed was Python. Because of this challenge, I’ve learnt the basics of Python already, and enjoyed the coding problems I was presented. This, along with other researched factors of back end development, such as pay (of $108,600, according to Indeed), education (a bachelor’s degree of Computer Science), and the environment (can work in teams and individually, can work at home or in an office) helped open a new opportunity to look into in the future.” — Anna
“…the competition has made me conclude that a career in software design and development is not for me. I found that the problems offered by the NCSS challenge at times became extremely hard for me to solve, which made me feel frustrated and unfit for the task at hand. I struggled mostly with implementation of code, as for most problems I understood the logic but not what code to use in order to execute it…This means that if I were to pursue one of the careers I researched or any other in software development, I would probably struggle to meet the required workload.” — Chloe
“…this means that I can solve simple problems confidently now and can help others along the way. I can also design simple codes, using pseudocode and flowcharts that can be of benefit to my assignments in the future if it was a multimodal task… I can reflect on my mistakes and improve them in the future…As much as this field of work would benefit me as technology is the future and would be very helpful to understand this, I have some other ideas for jobs in the future outside of the technology field of work.” — Elise
“… I doubt that I will be pursuing a career in programming, because of my lack of understanding about the responsibilities. For example, a software developer may have to write, modify and debug software — some tasks that we had to complete for the NCSS challenge — and I struggled with this quite a lot. Or a Software architect who is expected to design and implement programs, and then follow-up to debug it — another task that I had some difficulty in. However, when looking at web development roles such as develops a web designer, some of the responsibilities are creating and coding web page. These are skills that I am better at and prefer and therefore, I would rather pursue a career in this field. Overall, I did learn a lot about software and coding, but when comparing it to the web comp earlier this year, I can see that I would be more suited to a job in web development.” — Hannah
“… I don’t want to study coding when I am older, but I still enjoyed it and would do it again. In my careers research, I looked at two different careers: a web designer and a software engineer. I evaluated their responsibilities, training/education required and pay. I decided that I would rather be a web designer than a software engineer due to flexible working hours and getting to design web pages. I also really dislike plotting out functions, with pseudocode or flowcharts, which is one of the main jobs of a software engineer, so this job wouldn’t be for me. Although the web designer was the more preferable job, I still feel that having a job in the software industry wouldn’t be for me as I struggle with understanding harder code and I think I would need to ask for help too much.” — Heidi
“ Due to the fact that I have learnt a lot of different things in coding from the NCSS Challenge, I could keep learning how to code and keep gaining a better understanding and knowledge of different aspects of being a Software designer and programmer, to then proceed to possibly get a career out of it. I could become a software engineer as doing the NCSS challenge has taught not only the skills of coding, but also doing all the codes before a certain deadline which requires time management and in the workforce, there is usually a due date to complete something.” — Kayley
“For me, the process has been a key thing for me. Now I can solve problems that had never considered or thought I was ever capable of solving. The challenge has given me extensive knowledge in both turtle and python especially regarding certain conventions associated with each different language. Regardless of whether I choose to have a career in programming, the NCSS challenge has opened my mind to different possibilities, the idea that there is never just one answer to a question.” — Lucinda
Their reflections show they have grown, not only in designing and implementing coded solutions, but also in understanding the role of software in our society and where they fit into it. Appreciation of collaborative work, time management, as well as diversity of solutions are evident. Research into careers also unearthed the fact that the IT sector is very much male-dominated; a couple did say they want to change it.
Learning is fun…especially when it is challenging. The girls felt challenged by this task and because they engaged meaningfully, found it both frustrating and rewarding.
One more photo — who’d have thought taking selfies would be so much fun!