The History of SmartSim
SmartSim was developed by Ashley Newson, a sixth form student from Oxford, as part of his A-level Computing studies, when he was sixteen years old.
Ashley has been programming since he was eight and has used a number of programming languages. He is a huge fan of Linux and the open-source software development community.
The debate over Computing v ICT teaching in UK schools has received a lot of press and attention over the last year or so. A couple of interesting articles on the subject are: Google's Eric Schmidt criticises education in the UK and School ICT to be replaced by computer science programme, which have attracted over five hundred and a thousand comments respectively from the public.
I can personally relate to the current debate over the plight of computer science and electronics teaching, or rather the lack of it, in UK schools at the present time, says Ashley.
One of the main reasons for my choice of secondary school seven years ago was (unusually) that they offered electronics and computing at A-level, both of which were of interest to me. Although that prospect was some way off at the time, it was obviously something to look forward to.
It wasn't too long before my hopes started to become dashed, as the year I arrived they dropped electronics due to lack of teaching resource.
At the start of my final GCSE year, when the time came to choose which subjects I wanted to study at A-level, I discovered computing was no longer available. When I enquired about computing, I was told that the school had decided not to offer computing any more due to a lack of take-up/interest in the subject over the last couple of years - disaster!
It was at this point I realised the only way I was going to achieve my goal was to take the matter into my own hands and independently study for my computing A-level. The school said fine, we can enter you for the exams when you're ready to take them, but on the understanding you don't require any teaching resource. So I got hold of the appropriate textbooks and embarked on my course of self-study.
As I was following my own agenda, I decided to challenge myself by studying for the three written exams alongside my GSCEs in year 11. I was only going to do the AS-level part at first, but found it so interesting I just couldn't stop, so I simply kept on going.
I particularly enjoyed the topics on logic gates, Boolean algebra, computer organisation and architecture, Turing machines, finite state machines and simulation. Driven by my desire to learn more about digital logic and electronics, I decided to choose a project relating to these areas. Another main aim of my project was that I wanted it to be of benefit and interest to anyone seeking to learn about these aspects of computing. With these points in mind I decided to develop SmartSim, a cross-platform digital logic circuit design and simulation package for Windows and Linux.
It was also around this time that I found out about the new Raspberry Pi Project, which struck a real chord with me as the ethos behind it fitted perfectly with my own experience of the lack of computing opportunities for children in schools. With its objective of rekindling the computing flame and inspiring a new generation of youngsters to be creative and take-up programming and computer science, I felt it would be great to make SmartSim available for the Raspberry Pi too.
This was back in August 2011, so there were no Raspberry Pis around back then, No matter I thought, I'll develop the software under Linux on my PC and rebuild for the Pi when it becomes available in a month or two; little did I know it would be the following May before I finally got my hands on one - and I was one of the lucky ones! In fact, my Raspberry Pi arrived just a few days before the final deadline for submission of my project. Fortunately it only took me a few hours and some frantic recompiling for ARM to get SmartSim up and running on the Pi, thanks to the platform-independent nature of the development. The only changes I had to make were some performance tweaks for running on the Pi (mainly graphics caching), as the Pi is a fair bit slower than a typical PC, especially for graphically-intensive applications; due to not fully utilising the hardware graphics acceleration at the time.
SmartSim was developed in the Vala object-oriented programming language, is comprised of some 12,000 lines of source code, and uses the GTK+ and Cairo graphics libraries. My project report, the key deliverable for the A-level Computing practical, is nearly 400 pages long... but please don't think that's what's required for a typical A-level project; I just went over the top and got a bit carried away! In reality I really enjoy the software development process, so it was more of a hobby than a chore for me, and I learnt a lot about analysis, design, testing, etc along the way.
The reasons for choosing Vala, GTK+ and Cairo for the development of SmartSim are that they are all open source tools with cross-platform support - attributes extended to SmartSim itself. One of Vala's strengths is that the Vala compiler translates object-oriented Vala into C, which is then compiled into object code. Another point to note is that is that GTK+ and Cairo have also been developed in C, so the entire tool-chain is homogeneous on any particular target platform.
People that have used SmartSim say they have found using it quite addictive, spending many happy
hours days creating ever more complex circuits. (My Dad, for instance, is currently trying to build a 32-bit RISC processor, which he's codenamed Frankenstein. He admits he's no expert when it comes to such things, but he takes the view you're never too old (or young) to learn.)
The only major obstacle to completion of my Computing A-level was finding somewhere able and willing to supervise and assess my SmartSim project, as my own school was no longer in a position to do this for me. In this regard, a special mention is due to Cherwell School in Oxford and in particular James Watts, Head of Computing at Cherwell, for kindly and generously affording me this opportunity. He is also actively involved in the Computing At School (CAS) initiative and is a huge fan of the Raspberry Pi - what a guy!
In terms of what comes next, I've got some ideas for teaching really young kids (4+) elementary ideas about this stuff through higher levels of interaction, engaging characters and multimedia features, possibly involving some form of game-play during simulation of a set of pre-defined circuits/levels. However, this would probably take the form of a separate application.
I believe that if you can capture someone's imagination at an early age and find something creative they really enjoy doing it can inspire them and give them a focus in life - and what better 'something' at the moment than computing.
At the other end of the scale, I'd like to create some circuits and implement them as hardware projects on the Raspberry Pi, using the GPIO interface. I've also been given access to an FPGA development system, so I intend to implement an 'export to VHDL' facility and run some more complex circuit designs on real hardware. I find these various ideas really exciting as they will demonstrate the applicability of SmartSim to users of all ages and abilities.
I'd like to feel I was playing a part in inspiring others to discover programming and the technology behind computing, by making it more accessible and fun. I feel programming has made me more creative and improved my problem solving skills, so there are real benefits to be gained from it.
On a personal note, I've got another year of sixth form still to go and will shortly be considering my options for university. I'd be torn between reading Computer Science, Mathematics, Physics, or a combination of these, so it's not a clear-cut decision for me. I have recently completed my Computing A-Level to A* standard, and am currently halfway through my A-Level studies in Mathematics, Further Mathematics, Physics, and Chemistry.
Amongst the other distractions coming up soon will be this month's Ludum Dare 48-hour game development competition, setting up a computer club at school, lots more rowing, and possibly the Mathematical Olympiad again.