For a blog that normally only gets 25 views on a good month the 2000+ in the last day has been phenomenal! I’m having to suspend comments because I have a job to do. apologies, I will try and rephrase my personal preference to not using python at a later date. I understand I have things to learn(As expressed in the comments), but Python is not my preference in using a language as you have objections to my choices. Please try to appreciate this is opinion. I understand I need to research more into python and this MAY change my mind, but from what I have seen I am not a fan of programming the language, this does not make me a bad person or a bad teacher, just someone who has a difference stance from you.
I get asked this all the time, especially with the rise in popularity of Python as a programming language. I have a number of reasons for my choice. Recently I was asked this by a parent who suggested that it was not as “Useful” as python. I think this is a good forum to share my reply.
There are a number of reasons why I have chosen Visual Basic as a programming language for GCSE and A-level and I hope the following justifies my choice. Visual Basic is used as an introduction to programming and is frequently used as a teaching language in a number of schools and universities across the country. I understand the popularity at the moment of the Python, however this language is also based on the C language. Students in Python are not required to do things such as declare variables, which is something that is required for GCSE and A-Level exams. The VB Language itself allows for the concepts to be laid out in a more verbose language in order for students to develop into other languages such as C++ and C# at A-level which is my ultimate goal (when students have an understanding of programming, then they can move on to more complicated languages). It acts as a perfect transition language between the simpler syntax of python and the more complex C++,C# and Java. It is true that Microsoft stopped programming in Visual Basic in 2005, however they did not stop programming in derivatives of this language and developing the software to program in visual basic, meaning as a foundation language it is perfect for introducing complex programming constructs. The Microsoft App store also actively encourages students to work in the VB.NET environment and it allows students to produce their own apps in this language, so the language is not dead, simply not as mainstream. If Sam were looking to take his skills further I actively encourage students to look into app development for the windows store as it has no yearly fee for students unlike some of the other stores and charges students a lesser fee for uploading and promoting their apps, there are also loads of videos on dreamspark.com for students to learn from. If Sam is also keen on programming he can also look at Young Rewired State which is a week’s programming in the summer holidays that allows him to develop his skills further (again, I will actively promote this in class and on the school twitter feed when it becomes available) As mentioned, my ultimate goal for the A-Level course is to introduce a more complex language such as C, C++ or C# as with the introduction of the computing curriculum lower down the school (and at other schools in the area) more students will be approaching the college with a greater understanding of coding and want to take that knowledge further. At A-level I also teach HTML, PHP, Java (Greenfoot) as well as other languages which is not required by the current A-level specification in order to give students a flavour of what other languages entail and provide them with a solid foundation for entering a career in programming. I also have a number of friends who work within the IT sector as software developers and am currently looking at the end of year 12 with providing students who are interested with work experience in those industries so they can take their skills further. Sorry for the length of this email, I hope it answers your questions. If you have any queries, please do not hesitate to contact me.
Addendum: I am perturbed by anyone who chooses to slate my abilities as a teacher due to my choice of language, I want to teach students to be good programmers with strong transferable skills and this seems to be proven in their future career choices/options/abilities. If you are a teacher making this comment you are slating a colleague who, like you is trying his best for his students. As I’ve read some of the comments, yes I could of expanded on my feelings for why Python lacks Complex constructs. I am Aware of how Python is a very popular and powerful language and what it can do. I have met students who are studying Python at A-Level and they are not taught the basics of programming, Python (IMHO) allows you to dive in quickly however can teach you some really bad techniques from the start, but again this can be down to the teacher(not knocking into any teachers here). This is MY humble opinion and this was a letter to a PARENT. I was not trying to diminish anyone who programs in Python, I am not going to write in a letter to a parent a full essay-style justification(unless I had 4 more hours in my day!). As with any language there are strengths and weaknesses to all of them and there will be always people who agree with both sides, I was simply quantifying a question I am asked regularly. I have approved all comments so people can see the conversation, however I stand by my choice and although (as stated) I will look into C++ and C# for older students that I teach.
So I’ve just come back from a Brilliant Day (and night) at the CAS Conference. This is my third year and each year I approach the event with a new thought of what I want to learn. This year, it was my focus on not what i teach (languages etc.) but the way I teach.
The keynote speakers that we had were brilliant, a speaker from Google and Lee Stott from Microsoft about the projects they are currently running in order to get students involved in programming.
What struck me was 2 things:
- there is a lot of fear out there about learning to program
- there are so many tools out there we have to be careful what we choose to use.
I think these 2 things together could be a double edged sword that Computing/programming must be careful of when walking that line. There are a number of ICT Teachers without the requisite skills to program and need to learn, however there are also A LOT of very simple programming tools that get you started, but if you use these beyond the starting point you end up with a culture shift.
I think at this point we need to be careful. Let’s be under no mistake PROGRAMMING IS HARD, and there are a number of ways to introduce the topic, but if you use the tools beyond the engagement point, you have to make sure you apply the rigor to it or make the end product a joke.
The ICT Failure
We all complain about the failure of ICT and it becoming too easy. I remember in 2006 when i was a tech a teacher abandoning HTML for Dreamweaver on the basis they had to make a website and Dreamweaver was “faster and easier”. We could quickly fall into this trap with programming, making tools to make coding easier then in 5 years complaining that programming has become too easy and we are in danger of being dropped from the curriculum.
I love the IDEA of tools like blockly, but I think there has to be a culture shift from the big companies and product developers. CAS has it right, let’s focus on the education of the teachers first and make sure we have qualified, trained teachers to make sure the subject is rigorous and challenging with the right teachers to teach it.
Addendum 25/6/13: How do I teach
Speaking to people tonight at a CPD for CAS in Preston, I was thinking how I wrote this. It’s true (guilty smile), I work in a good school and this is great because (most) students will (generally) try no matter what you throw at them. But I think with programming (and any subject for that matter) you have to find a way to engage every student in the class, take them on the journey with you.
I don’t want to make the programming language so simple that everyone in the class can do it first time, every time. I want to be able to teach so that the hard language is accessible to everyone. Using tools such as CSInside and CSUnplugged, which helps break down topics into smaller ones can help with this. I guess my aim as a teacher is not to get every student to be good at every topic, but to introduce those topics, get them to engage, and allow them to learn for themselves outside of the classroom. Yes, this takes more time and planning for differentiation, but I find this to be one of the most fun parts of teaching, coming at a topic sideways to come up with an interesting idea that will engage and excite my students.
I also would love to talk about the CAS “Master Teacher” role, but think I’ll leave that for later.