I love computer science. That’s why I studied it in high school, taught it in high school, and intend to major in it at university. With this said, I do have mixed feelings about the A Level qualification and my personal experience of it in high school. Of course, my experience will be different from yours, and the circumstances of CS at Dubai College will have changed since I took it, but I hope that my honest reflections here can be of help to any students interested in studying computer science.
Why I Chose CS
Before jumping into my A Level CS experience, I think it’s important to have some context of why I chose CS in the first place, and what I wanted to get out of it. Something you might have not known about me is that I was extremely tempted to choose any one of economics, english, history, or government & politics over CS. This was mainly because I knew I wanted to study math (not maths), further math, and physics, so I was eager to branch out and study something less quantitative and more expressive for my fourth subject. In my mind, I could always learn CS “on the side” through online courses like CS50x, but was not confident enough to self-teach these other subjects that I was interested but not experienced in.
Furthermore, my class was the first class in Dubai College to be offered CS as an A Level. This meant that this would be the first time the department taught this curriculum, shrouding it in uncertainty and risk. But I liked risk. And I liked Mr Wood, who I didn’t know extremely well at the time but came across as a teacher who genuinely cared about his students, was brave enough to try new things and adapt, and loved learning himself. This convinced me to choose A Level CS.
Heading into sixth form, while I didn’t exactly know what to expect from this new A Level, I had some general expectations. For one, I wanted to become a better programmer, with more projects and experience under my belt. This went hand-in-hand with my desire to practice and improve my problem-solving ability in general. Most importantly, though, I wanted to learn to think. Whatever the content was, I wanted to learn to think critically, question assumptions, deeply understand concepts, and apply them in new contexts.
Learning to Code
Of course, computer science as a field consists of much more than programming, but this was one of my major expectations from the A Level. One thing to note here is that, prior to taking the A Level, I had taken CS50x up to problem set 4. This took me from scratch (literally), through all the programming fundamentals (loops, functions, etc.), up to data structures like linked lists and hash tables in C.
Some students who took the A Level had never programmed before, which is perfectly fine, but this meant that I did not learn any new programming concepts in my first year. This sounds bad, but I remember that I actually quite enjoyed the first year of CS, definitely more than the second year (more on this later), for a few reasons.
Firstly, the fact that I already knew the programming concepts being covered put me in a unique position where I could teach my classmates. Teaching is not only something I find really fun, but it also forced me to continually challenge myself until I really understood a concept to feel comfortable enough teaching it clearly to someone else. This meant that I would often look online in search of deeper answers, usually finding new concepts that I did not know before. Mr Wood also gave students the opportunity to present to the class, and I remember learning a lot to present on object oriented programming and number representation in computers.
I also enjoyed the first year due to the project-based approach to programming. Our first major project was to build a sorting and searching program, which turned out to be a lot more fun than it sounds. While the concepts weren’t new, implementing them, designing an interface to interact with the different functions, and accounting for different input types proved messier than expected. This experience taught me the importance of planning ahead and designing an algorithm or system before coding it.
Another memorable project was our image manipulation project using the PIL library. This project was fun because it allowed us to escape the confines of the terminal by interacting with actual images. It was also a new challenge to learn a library (PIL) by referring to its documentation and trying things out. I’m still proud of my colorful cat :)
Finally, we had our Battleship project. For the first time, we weren’t coding from scratch — we were modifying a fully implemented Battleship program given to us by AQA. This gave us a new perspective, because for the first time we were reading code instead of writing it. Once we digested it, Mr Wood put us all in the shoes of game developers and asked us which features we could add to enhance the game. Once we compiled a list, we spent the next weeks implementing them one by one by adding to the code that AQA had given us.
So even though I wasn’t exposed to any new concepts, the A Level provided me with a fun year in which I gained more programming experience. The second year also entailed a lot of programming. But all that programming was for one project: the NEA.
This really deserves a section on its own, as it came to define our class’ second year of A Level CS. NEA stands for non-exam assessment, which is the coursework portion of the A Level. All students are required to apply their programming skills to build something cool and write about the development process.
I thoroughly enjoyed the “build something cool” part. I used this opportunity to learn the Django framework to build a website that Mr Wood had expressed interest in using: an online puzzle of the week that the CS department could use. I spent months wrapping my head around various web development concepts and its implementation in Django. In these months, I found that I could not get much support from the department, because the teachers did not have experience with Django. So I found myself consulting with friends, and spending an unhealthy amount of time on Stack Overflow.
It was frustrating, and my classmates felt the frustration as well. In hindsight, this experience taught me a lot about how to troubleshoot online, digest new documentation, and read a lot of online articles. It was frustrating and difficult at the time, but then again, nothing worth doing is ever easy. These skills have served me well even in university, so I see that experience as a good thing. However, I know many of my classmates had a very different experience, but I’ll let them explain their perspectives in their own articles.
After we had built our project, we had to “write about the development process”. I won’t sugarcoat this: it was painful. Painful! I honestly feel that the writeup was an enormous waste of time because I didn’t learn anything. It was an excessively tedious process that sucked the fun out of programming and left our entire class feeling pressured and burdened, physically and mentally. Upon hearing our feedback, we know that our teachers have already began taking a different approach to the writeup to avoid the situation that we faced. Hopefully it works, because it could be hugely demoralizing for students trying to learn computer science. I still remember racing through Red Bulls and pulling all nighters in the last week before the deadline. Not fun.
Learning To Think
It feels strange to split my experience into “Learning To Code” and “Learning To Think”, because I believe that learning to think is inherent in learning to code. From the sections above, you can see that I genuinely enjoyed the first year of programming, and learned a lot in the second year. I would say that this experience was significant in improving my problem-solving and critical thinking ability. However, it should be noted that programming was just one half of our A Level experience.
The other half was more theoretical. Starting with binary and hexadecimal, we covered a lot of material in our two years: data representation, compiling, assembly code, buses, networks, TCP/IP (and various protocols), finite state machines, boolean algebra, and much more. I didn’t appreciate it then, but looking back, the A Level curriculum has a lot of topics.
In theory, this is great because it gives students a comprehensive understanding of computers and algorithms. But I personally did not find this to be the case. The theory in general was quite a frustrating experience for me because, while the specification covered a lot of material, it rarely went into enough detail to give students a genuine understanding of what was happening; rather, most students resorted to memorizing various definitions and pre-written “explanations” throughout the two years. If you’re a student reading this, please don’t do this. While it may temporarily improve your exam results, your curiosity and ability to think critically will deteriorate over time.
With this mind, I made it a goal to really understand the content covered in class, even if the specification didn’t require it. My first approach was to ask questions in class, but I often found that I did not receive satisfactory answers. As a result, in most classes, I found myself absorbed in my computer instead of listening to the PowerPoint presentation; the Internet simply provided me with more satisfactory answers than the classroom. In hindsight, I can see that this was disrespectful to my teacher, but given the same situation again, I would do the same thing.
While this attitude resulted in a more satisfactory and fundamental understanding of the topics covered, it didn’t come with drawbacks. The main one was my lack of contribution in many classes. Because I was so absorbed in my computer, I often spent the whole lesson not saying anything and simply reading the Internet. As a university student, I feel a greater appreciation for small classes in high school that foster discussion and collaboration. It’s a shame I didn’t take advantage of this in my theory classes.
It was also quite exhausting to constantly read up on every topic covered in class to truly understand it. What made all of this much worse, though, was the framing of the questions on the exam itself. I’m sure my classmates can empathize with the thought that it often felt that the exam was testing our knowledge of the specification, not our understanding of it. One example is how mark schemes would simply give a mark if a certain word or phrase was mentioned. In this sense, I don’t blame my classmates who spent their time memorizing definitions and explanations, because it was a short-cut to a good grade. In short, perhaps the problem was not with my teachers or classmates or myself, but rather a fundamental misalignment of incentives in an exam-based education.
With this said, I should mention that my math and physics A Levels were also exam based, and covered as much (if not more) content than the computer science A Level, yet I was rarely just taught to memorize something for the exam. And even in those cases, teachers would usually provide an engaging explanation when questioned.
The purpose of the paragraphs above is not to disparage my computer science teachers. I appreciate that it’s a very difficult job to teach a new curriculum with a massive spread of topics, especially when the specification itself doesn’t go into much depth. I also appreciate that a lot of students (and parents) value an A* higher than intellectual engagement, making it that much harder for teachers. Nevertheless, I hope that any teachers reading this will pause to reflect on how their teaching style impacts their students, and what real value their students are gaining from their class.
This was a fun article to write, which speaks to the fact that my A Level experience was memorable for me. As a university student now, it was also fun to compare and contrast the teaching and learning experience from high school and university (I’ll write another article dedicated to this later).
Writing convention suggests that I should provide some kind of conclusion here, but to be honest, I don’t have one. The only thing I know is that I love computer science, and while there was a lot of room for improvement, I don’t regret taking A Level CS.