NCSS Challenge with a twist

I mentioned in my previous blog post (April 2020) the intent to share more resources to help computing teachers challenged with the uncertainties brought by the COVID-19 pandemic. Months later, the uncertainties are still there and I have yet to share more resources!

One day I’ll share my year 10 Data Science project and year 11 Software project. What I’d like to share now is my year 10 coding project because it incorporates Grok Learning’s NCSS Challenge. I’ve been using the challenge for years and always as part of an assessment. Nowadays, teachers can even claim participation as accredited training. That means doing the NCSS Challenge in Term 3 is accredited PD, covers teaching/learning/assessment of software programming unit (IST) with 24/7 tech support, and good for face-to-face as well as off-campus scenarios. That’s a WIN-WIN-WIN-WIN !

Here’s what I’ll be doing with year 10s.

 

Computational thinking is an approach to solving problems: designing solutions or algorithms that can be implemented using code. Are you good at understanding problems and creating logical solutions? Can you automate solutions by writing code?

Task:

Technical skills in focus for this task are algorithm design and representation, error correction, as well as coding solutions. The twist is that you will code and evaluate someone else’s design.

 

Part A – NCSS Challenge

NCSS Challenge begins on Monday 27 July 2020. You can choose either the Intermediate or Advanced stream. Completing the challenge constitutes training for algorithm design and coding. Completion rate will be marked accordingly.

The first three weeks of NCSS challenge will be used to practice for Part B of this task. That is, before our third lesson of the week, you must share to the class pool at least one of your algorithms for an NCSS Challenge problem that week. Algorithms should be desk-checked and represented either as pseudocode or flowchart. It should also have a test plan comprising expected output for test cases, including an educated guess of what the hidden test case(s) could be.

On the third lesson of the week, you will choose someone else’s algorithm to write python code for. You will also evaluate the quality of their solution design and test plan.

Timeliness and completeness of submissions will be marked. Quality of submissions will not be marked as you refine assessable skills. Use every opportunity for formative feedback to do well in Part B.

Part B – Algorithm design and coding challenge

  1. On 17 August 2020 (week 4 of NCSS Challenge), you will be given a list of Problems with 3 levels of difficulty to choose from. Choose one problem to design an algorithm for.
    1. Represent your algorithm as pseudocode AND flowchart
    2. Create a test plan with test cases and expected output
    3. Desk-check your algorithm
    4. Submit in Canvas Class Tasks designed solution by Wednesday 26 August 2020

You can submit earlier or do multiple submissions. For example, you may attempt several problems of increasing difficulty as you gain confidence and competence.

  1. From the list of available algorithms other than yours, choose one to code. It can be the same problem you designed for. The teacher will give you the documented design.
  2. Evaluate the design. Was it accurate or did you have to deviate from the documented algorithm to solve the problem? Were all test cases provided? Were the expected output appropriate? Was the desk check accurate? Substantiate your evaluation with specific details.

 

For both design and coding, difficulty level impacts marks. You may choose different levels for design and development, e.g. if you are more confident designing algorithms versus writing and testing code. Excellent completion of simple problems could still earn an ‘A’.

 

SUBMISSION: 

Weekly Part A submissions will be in our Microsoft Teams site where it is easy to share documents.

Design for Part B should be submitted in Canvas Class Tasks by 26 August 2020.

Submit the following Part B components to Canvas Assessments for marking:

  1. Algorithm solution and test plan
  2. Python code
  3. Evaluation of algorithm solution

 If you attempted several levels, please submit the highest level completed.

 

I’m still wondering what to do with year 9s but it will also involve NCSS Challenge. I really liked what I did last year which culminated in a feature post on Grok Learning blog (!!!!!). I have keen coders in this cohort so it’ll be a different experience again.

For more on how I use NCSS Challenge, check this post. Or you could always contact me here or on Twitter if you’d like to discuss further. I’d love that!

What’s the fuss with coding?

The fuss about coding has grown exponentially in the past year. Having watched this space for years, I’ve certainly noticed the increased interest to expose kids to coding. Industry has been pouring resources into it, with huge initiatives and funding coming from Google, Microsoft and more besides. There is a national curriculum for it and most Australian states have adopted it….not in NSW though, the state where I teach. Media, print and online, regularly features this, too; often, about having a shortage in IT skills.  I can also see the increase in teaching coding in many schools.

Hey, one could almost think teaching and  learning to code is trendy.

But, there is always the niggling question, “Is it for everyone?”

I wonder now whether everything in various school subject curricula was subjected to such scrutiny. And if not, why not?

Is it really for everyone?

Firstly, I’d like to make a distinction between computational thinking (CT) and coding. Google’s resources on CT are quite extensive and accessible. As a problem-solving process, it is easy to see why it could be adapted across all disciplines including humanities. Some could even argue it looks like critical thinking. Can you imagine asking “should we teach critical thinking in school?”

Further, algorithms – or step by step instructions – are present in every subject. Google is right to say it is relevant across all disciplines. Quite often, however, algorithms are taught as given, e.g. using formula. And why not? It is an efficient way of disseminating human knowledge developed over time. Standing on the shoulders of giants, so to speak.

Algorithms in the CT sense is less prescriptive. Creative thinking could be incorporated as well.  Can you imagine asking “should we teach creative thinking in school?”

I heard Dr James Curran refer to CT as a process for answering “What can we automate?”  I think this really promotes a mindset leaning towards efficiency as well as innovation, a premise that things could be better and we can use digital technologies to actually make it happen….and scale it, relatively quickly and cheaply. That’s incredibly empowering!  But, it’s the sort of thing that is best experienced vs merely talked about. This echoes elements of design thinking. Can you imagine asking “should we teach design thinking in school?”

Big jump there, i.e. I joined CT with coding – using digital technologies, software programming in particular, to create solutions.;  automation via giving computers detailed instruction.

Algorithms can be viewed as just an idea. It can be represented in many ways. As a teacher, making thinking visible – i.e. ascertain students are learning – is a challenge.  In Information Software & Technologies (IST), one of the subjects I teach, algorithms can be presented as pseudocode and flowcharts.

What of coding then?

Coding can actually help refine algorithms. Sometimes this is done via affordances of programming languages such as more sophisticated built-in functions and data structures.  Often, the refinements are done as one delves deeper into solving the problem and one thinks of more possibilities or cases or scenarios.

In a nutshell, CT promotes development of algorithms and with coding, it is made visible and refined.

Is it for everyone?

I am biased and I think everyone should experience what CT and coding are like. In the same way that I think everyone should experience what creative thinking, critical thinking, design thinking – and way many more ways of thinking like systems thinking, mathematical thinking, etc (see what it’s like in schools now?).  For me, it’s beyond being trendy or shortages in skills or future job opportunities or anything like that or being great at it or even being interested in it. How do you know unless you try?

If you’re a teacher, student, parent or really anyone just wondering what the fuss is about, it’s best to experience it.  Have a go. There are lots of resources out there. One of my favourites is the NCSS Challenge – and we’re a week in.  🙂

Here are some for starters:

Feel free to add your thoughts and resources in the comments below. Thanks.

 

 

NCSS Summer School

The idea of going to NCSS Summer School posed a mini-dilemma for lots of reasons but in the end, I decided to go and what a good move that turned out to be. The ‘intensive’ in their blurb is for real. It was intense.

This year, there were over 100 participants including 15 teachers (like me) who were meant to be just like the students – relieved of ‘duties’, so-to-speak. That’s interesting, in and of itself. I pride myself of being a good learner but being a student is different. Being a student (learning the content) as a teacher (learning the process/meta stuff, e.g. can I use how they teach to teach my students?) was full-on. I struggle to articulate all that just now so I’ll focus on my main NCSS reflections as a teacher….and hopefully, this would encourage other teachers (my main blog viewers) to give the camp a go.

The camp is project-based learning, a high-quality PBL.  I’m actually struggling to write this but if I don’t do this now, it may never get done so I’ll use my Process, Tools, People (and Products) post as a framework. Here goes…

Process

PBL as a term was never mentioned but that’s what it was. 4 groups had to develop social networking web applications and 2 groups developed embedded systems. Lectures were streamed as per student ability, interest and/or systems. Throughout most of the 10 days, there were Lectures followed by lab so students had opportunities to apply what they’d learned with the help of amazing tutors (more on this later).  Tutors also helped with task and time management throughout the project which started officially on day 6. Groups had to brainstorm and decide on what they wanted to develop. There was even an all-nighter as happens sometimes in the industry. The camp culminated with a ‘graduation’ and presentation of group videos. Except, I’m finding out now that the project has not really ended as students continue to work on the projects and are now available online – for an even wider audience.

There were also plenty of fun activities with plenty of opportunities to develop collaborative skills and team-building: Newspaper tower challenge, Trivia Night + Chinese (Whispers) Charade, Scavenger hunt, cryptogram, simulation/theatre sport, programming challenge and excursions to some sponsors’ sites (WiseTech Global, Atlassian and Google). All these activities were cleverly designed and well-executed.

Tools

We used the University of Sydney’s School of IT facilities. We were told not to bring computers because, indeed, there were enough. We also used GitHub for version control and Sqlite3 for the database. They’ve configured Tornado for ease of use supposedly but I honestly wouldn’t know the difference – it still looked complicated for me.

Analog-wise, whiteboards were used for planning and tracking.

Tools used are all ‘free’ so in theory, anyone can do this.

People

This I think, is the strongest point of NCSS. At the helm is Dr James Curran (a very clever man and an endearing lecturer – I can only name 2 others in my experience), very ably supported by Nicky Ringland and Tim Dawborne plus an army of very clever and enthusiastic volunteers and industry mentors (they have to apply to be volunteers year-on-year – whoa!). There’s a fine mix of academia and industry perspectives to make the experience of app development realistic. I watched with interest how they interacted and managed students…including me (I was always there for roll call – haha – and definitely needed 1:1 help). It was good to see tutors get excited by a tricky problem/question

And then there were the students (and teachers as students). Such an amazing bunch of cleverness! I do believe every state was represented, and NZ, too. High levels of enthusiasm (boosted by cordial,  perhaps?) and engagement (good program, see?). Very few seemed homesick – alas, I was one of them! (who knew?)

Products

Videos are yet to go up but there are links to the web apps. Our group developed Word by word (my only visible contribution there is the tagline: write a word. read a story.). Other groups developed Tableau and Pose challenge. Amazing stuff!

I honestly cannot replicate these projects in my classroom.

tldr version

It was a fun, intense, immersive and challenging experience. I met some amazing people, young and not-so-young, and had many fascinating conversations – people are truly interesting! I learned more about computing technology and computational linguistics(just a teensy bit). I learned more about teaching technology. I learned more about kids and how stereotypes persist even amongst the like-minded (still wrestling with why it’s so hard to get girls into computing). I learned more about effective pedagogy including planning and delivery. Surprisingly, I learned more about me.

Not sure if I could make it to NCSS2015 or if I’ll ever get accepted again but I sure would like to go back.

This snippet from a WiseTech Global t-shirt just about sums it up for me:

ncss2014

 

My next challenge is to incorporate some of what I’ve learned into what I teach.