Learning to Code
As an Informatics student, having a strong programming ability and knowing how to efficiently learn new languages is essential to success in later years. Here are some tips on how to approach it in the beginning.
Start from Fundamentals
When learning a new language, it can be tempting to jump into a medium-difficulty tutorial or straight into a project. However, if you are just starting with learning to code, it is important that you understand the underlying programming patterns that make up your language.
- Make sure you understand loops, if-statements, and variable assignment thoroughly
- If you are learning an Object-Oriented language – refresh on Classes and Objects as well as OOP Concepts
- If you are learning a Functional Language – refresh on functions, recursion, list comprehensions, maps, zips, and other Functional Programming (FP) Concepts
Once you understand the core concepts of programming paradigms, they become transferrable across languages which makes the burden of learning a language much lighter.
A really useful book for learning to code is ‘How to Write Good Programs: A Guide for Students’ by Perdita Stevens. Perdita is a Professior at the University who lectured the first year course on Object-Oriented Programming when I was in first year. Her book provides guidance on testing, debugging, and documentation as well as student-specific tips about scoring good grades on programming assignments.
Making small practice projects is my favourite way of learning a new language. Gaining hands-on experience is crucial to becoming fluent in that language. These projects do not need to be complex or impressive. As long as they challenge your current ability, then they are perfect.
Some starter project ideas that I used
- Make a 2-player game of Connect Four
- Develop a discord bot with Discord.js
- Automate a process
If you are looking for further inspiration for project ideas in Python, I would recommend reading ‘Automate the Boring Stuff with Python’ by Al Sweigart. This book has some really interesting projects ranging from Pattern Matching with Regular Expression to Image Manipulation and GUI Automation.
Enter Hackathons and Coding Competitions
Hackathons are social gatherings where you get into groups and have a set amount of time to develop some application, usually centred around a theme or proposal. Not only are hackathons a fantastic way to make connections in industry and meet other programmers, they also challenge you to learn new technologies.
Edinburgh is home to many hackathons. The Edinburgh University Computer Society (CompSoc) organises a yearly ‘Hack the Burgh’ hackathon for students across the country and industry leaders often appear at these events. Keep an eye out for different Hacakthons – usually big-tech companies organise them annually. Some hackathons I have previously been apart of are:
- Microsoft Student Hackathon
- Huawei Data Science Hackathon
- UpReach Tech500 Hackathon
(Plus, there may be a sweet prize at the end 😊)
Deepen and Apply Your Knowledge
Once you are becoming more comfortable with programming and the language of your choice, challenge yourself further to gain a deep understanding of the language and its features.
- Look at most used standard libraries and documentation
- Research applications made with these technologies
- Scroll through Stack Overflow and respond to people’s queries
The biggest misconception about Computer Science is that a degree in Computer Science is a degree in Programming. This is equivalent to saying a degree in Medicine is a degree in operating instruments. Programming is a tool used by Computer Scientists to apply their knowledge. Throughout your Informatics degree at Edinburgh University, you will be learning a lot of theoretical content. To truly master this theory content, try applying it in some program. Not only will this help you understand the theoretical concepts but also develop your programming ability.
Unfortunately, you cannot become a Software Engineer overnight. Programming is a skill and, like any other skill, takes time to be developed. Practise consistently and you will get there!
A very useful website and YouTube channel containing detailed programming videos is linked below. I would recommend using it to expand your programming skills.
Blog post originally written by Donald Jennings, Informatics Communications Intern 2022.
Edited by Dimona Videnlieva, Informatics Communications Intern 2023.