NCSS Challenge - 5 week online programming competition / course for high school students

Skip to first unread message

Nicky Ringland

Jul 9, 2012, 1:57:56 AM7/9/12
The National Computer Science School (NCSS) Challenge is a five week online programming competition that teaches students how to program in Python as they compete.  No previous programming experience is required, and three different streams are offered: beginners, intermediate and advanced, each designed to encourage, inspire and challenge students.  This year we are accepting Australian and international students, and would love to see students and schools from across the world participate. 

During the course of the Challenge, students are given extensive support by a team of volunteer tutors who can answer students' individual questions through the messaging interface on the site. There are also comprehensive notes and online forums where students and teachers can ask for help. We also have forums specifically for teachers to discuss how they're using the Challenge in the classroom.  The Challenge can even be run in schools that don't have a dedicated IT or computing teacher.

The NCSS Challenge is run by a group of computer science academics at the University of Sydney, Australia, who are passionate about encouraging students into computing and technology, and are working to bridge the gap between the computer skills learnt at school and university level computer science. We want to support teachers in giving students a leg-up in this area, and we also want to offer the opportunities for high school students all over Australia and the globe to have access to world-class university programs, resources and expertise.

Last year we had over 2000 high school students (and some primary school students) and 170 teachers compete in the Challenge from right across Australia (over 237 high schools). This year we are aiming for 5000 students are are welcoming enrolments from international schools and students.  

I've included some information about the NCSS Challenge below, and there is more information available on our website:  Please let me know if you have any questions, you can email me or all the Challenge admins:  I hope to see you in the Challenge!


Nicky Ringland

Outreach Officer | National Computer Science School |
PhD student | School of Information Technologies | Faculty of Engineering and IT

Room 444 | Building J12 | The University of Sydney | NSW | 2006

What is the NCSS Challenge?

The NCSS Challenge is an online programming competition for high school students and teachers. Unlike most other competitions we don't assume the students already know how to program, instead students learn programming concepts over the 5 weeks of the competition. Each week, we release a set of notes and resources for learning aspects of programming, including: variables and data types; if statements; while and for loops; algorithms; file I/O; functions; code reading and debugging; and code style and comments.  The number and pace of the covered concepts varies between the 3 streams of the Challenge.

A set of 5-10 interesting and fun problems (the 'challenges') are released at the same time which test the new material for that week and consolidate understanding of the previous weeks' material.  The difficulty of the problems varies between the 3 streams of the Challenge.  Each week's problems also range in difficulty: starting with problems testing the previous week's material, then introducing the new concepts in simpler questions, and finally combining the concepts together.  A student who cannot complete the final question for week X, will still be able to solve some of the simpler problems for week X+1 (so they shouldn't feel disheartened if they can't solve the last problem from each week, there will definitely be things they can solve the following week).

Participants submit their solutions to our web-based marking system which checks the correctness of their solution against a battery of test cases. These test cases are designed to lead the student through solving the problem where possible, and encourage them to think about thorough testing. Points are awarded for solving each problem and there is a small penalty for making a large number of submissions to discourage resubmitting without thinking!

Submissions close for a particular week's questions on Sunday evening.  At 9am on Monday, the solutions to those problems are released, along with the notes and problems for the following week.  Students are still able to submit answers to problems and have them auto-marked after the solutions are released, but they no longer receive any points for getting them correct.

For more information about the Challenge, see our website ( and our information booklet:

NCSS Challenge streams

This year, we will have three streams of Python programming in the Challenge: beginners, intermediate and advanced.

The content covered in the courses has remained mostly stable from the 2011 streams.  The beginners course covers variables, user input, strings, integers, floats, lists (arrays), if statements, and for/while loops. The beginners stream has 10 problems per week -- but the problems are more similar to each other conceptually (they look different, but emphasise the same coding idiom).  So it is a bit more like programming drill -- but fun!

The intermediate stream covers dictionaries, files I/O and functions in addition to the beginners course.  The advanced continues to be very tough problems for experienced Python (or other) programmers and will introduce additional material on regular expressions, recursion, parsing and object-oriented programming. Both intermediate and advanced will have 5-6 questions per week.

Our information booklet gives some more details on each stream, with an example question:

Which Python stream is appropriate for your class?

My recommendation is that if you've got Year 5-8's doing the Challenge, go for beginners.  If you've got a class of Year 9-10 students with no exposure to programming, beginners might also be appropriate.  If you've got a class of stronger students, or those with some experience in something like Scratch, or similar programming-lite environments, you might prefer the additional content of intermediate.  It also depends on how much time you have to spend on going through the notes with the students before they attack the problems.  Other schools discuss the problems at an algorithmic level (not the actual code required) and then the students program them up.  This extra support can make intermediate more accessible.  Finally, advanced is really designed for students who have conquered everything in intermediate without breaking a sweat!

If you have a class with a great range in ability and interest, you might like to choose a mixed strategy -- putting some students in beginners and others intermediate.  Some students sign themselves up for multiple levels at once.  Another option is to start your class on beginners, and if they are handling things easily, we can move some of them to intermediate sometime during the first or second week (so they still have time to get all of the points for week 2).  If you'd like to do that, please email with the names and we'll make the adjustments.

When does the NCSS Challenge run?

The Challenge starts next Monday 6th August and will run for 5 weeks. Questions and resources will be released at 9am on Monday morning and the solutions need to be submitted by 8:59pm on the following Sunday for beginner's and intermediate, and 11:59pm Sunday for advanced.  The first week is our 'friendly week' and so there are no points for solving the problems. This gives participants a chance to install and run Python on their own machines, and get used to our online testing system, and judge which stream they should compete in.  Please note that all times are in the Eastern Standard Time in Australia: GMT+10. 

How much does it cost?

The cost is $20 per participant (student or teacher) per stream including GST.  For teachers, if you have students enrolled in multiple streams, you only need to pay for one stream, and will be enrolled in the other streams for free.  We know that it can take some time for schools to collect money and send us a cheque, so we are happy for participants to start the competition before the money arrives. We will not send out certificates of participation and commendation unless the payment has been received.

How to register and enrol students

Before you can enrol yourself or your students, you need to register to create an account (so we can confirm your email address is correct) at  We will send you an password via email, which you can then use to log in to the site.  If you have an account from a previous Challenge, then you don't need to re-register, you can just use your old email address and password.  If you've forgotten your password, you can use password reset to be sent a new one.

There are three ways of enrolling for the NCSS Challenge: individual enrolment or enrolling a group of students in one go as a teacher, either by credit card or with the school paying an invoice by cheque.  The teacher enrolment methods will automatically register and enrol students you list on the enrolment page.  You can also upload a CSV file containing the students details for faster enrolment (all common spreadsheet programmes can save as CSV files, let us know if you need help with this).

As soon as you confirm the teacher enrolment, the students will be sent their passwords.  Due to the large number of participants, it is not possible for us to reimburse or update invoices for students who do not participate in the Challenge once they've been enrolled.  If you wish to enrol extra students, they can be added with a separate teacher enrolment, which will generate a second invoice.  The invoices will be sent to the registered user who is completing the teacher enrolment.

Interaction on the site

Students get instant feedback on the correctness of their submissions, and the test cases give them hints as to what they got wrong.  Top performing students appear on separate leader boards for each stream -- split into junior (Year 5-8), intermediate (Year 9-10) and senior divisions (Year 11-12), and this is updated as soon as students submit correct solutions.

We have online forums for general topics and also for each problem, and the participants have been very helpful (whilst maintaining some spirit of competition) when others have been stuck on a problem.  There is a real community that forms during the competition, and it is great to see students connect with others who are also passionate about programming. We also have a large number of tutors who monitor participants' progress and send encouragement and hints via a messaging system within the site.  Help is almost always moments away -- in fact, often we will have answered a question before a teacher would have had time to move across the classroom and answer it in person!

Teachers in the Challenge

Some teachers enrol in the Challenge for their own professional development or just the fun of conquering the problems themselves.  Teachers can see both a summary of the performance of their students in each stream the students are enrolled in, and inspect all of their submissions.  Some schools have used the Challenge as an in class activity for 5 weeks, others have created lunch time clubs for working on problems, while others still have just set them as fun after school extension material for gifted students.  We have been particularly pleased to hear stories of students rushing to the whiteboard to discuss how to solve the problems.

In a couple of cases, we've heard of schools using some questions as assessment tasks.  If you'd like to do that, please let us know via so we can give you some idea about what's coming up in the following week.  There are also separate teacher only forums to discuss how your students are finding the questions and trade ideas with other teachers.
Reply all
Reply to author
0 new messages