Scitech  Learning to code bit by bit

Should you take your first step in class or online?

When it comes to learning new skills, it’s all about getting the right start. Computer programming, also commonly referred to as coding, is emerging as an essential skill to have for both academia and university life. From creating apps to run on your phone to harnessing the world’s computational power for science, the uses of coding are broad and varied. Software is embedded in many facets of the modern world, and as society becomes increasingly technical, literacy in coding and other technical subjects grows more and more necessary. Students are often drawn to learn to code because of the immediate practical applications it can offer, and not because of the theoretical approach usually seen in university classes. Michael Golfi, a software engineering student, agrees: “Once I found how useful programming is, I was hooked.” For Luke Anderson-Trocmé, a graduate biology student, it was the academic potential that inspired him to start learning coding. “I’m planning on doing a lot of bioinformatics in my graduate degree,” he said. “Nowadays, a little bit of coding knowledge can go a long way.”

However, it can be hard for students without prior experience to break into the field and take their first step in programming. McGill offers introductory programming classes that are available to all students through the School of Computer Science, but many students are also tempted by the plethora of free online resources available for coding acquisition. Is one of these two contrasting learning styles superior for students who want to get started? Ultimately, whether or not a classroom-based or web-based coding education is right for you depends on your learning style. University classes provide constant, tangible pressure to keep up and succeed at the pace of the class. They can provide direction, context, and ongoing personalized support through a planned syllabus and a network of teaching assistants and tutorials. If you learn best by watching others and going step-by-step, the classroom might be the best first step to take. “If you’ve never touched a text editor and have no clue what programming is, it can be daunting to get into,” notes Charles Clermont, a mechanical engineering undergraduate. The vast field of computer science is surrounded by walls of technical jargon and obscure technological concepts, posing accessibility barriers to interested students. Introductory classes are a great stepping stone into the world of coding and disassembling the accessibility barrier: according to Clermont, “A course is a first step; it’s like what learning arithmetic is to learning mathematics.”

There are currently 800 students, spread across three sections, taking their ‘first step’ into coding at McGill this fall through COMP 202. The lecture-style class has a professor who guides students through the basics of computer logic and Java programming, from binary numbers to the beginnings of object-oriented programming. In the coding community, the course has mixed reviews. Anderson-Trocmé, who had no prior computer science knowledge, spoke highly of his experience: “The course was very approachable, and I felt like I learned a lot.” In contrast, Clermont finds that “courses can be very slow and boring. You can learn most of it much faster with any ‘introduction to programming’ book.” Mohamed Adam Chaieb, an undergraduate software engineer, acknowledges the benefit of university computer science classes, but notes that they can be intangible at times: “Courses are definitely helpful, but they are more theoretical [and] although they try to show you applications, it’s up to you to find a way to use it.”

“I personally recommend that people learn programming through these online courses rather than take a minor in Software Engineering or Computer Science.”

– Usman Ehtesham, a recent McGill electrical enginnering graduate

Online interactive platforms offer alternative ways to learn to code outside of the traditional university context. Codecademy is one of those platforms, offering step-by-step, interactive, tutorial-style courses that teach students to code, compile, and see results instantly within your web browser. The platform is appealing to beginners because no installation is required to get started, there is a structured approach to learning code like in classrooms, and there is an online community of experts and fellow students that actively answer questions. There is a catch: while the courses offered on Codecademy are free, they offer no university credits or certificate of completion.

Universities continue to retain their authority when it comes to issuing computer science- and software engineering-related course credits, minors, and degrees that remain particularly important for job interviews in the technology industry. However, this is changing with the burgeoning presence of massive open online courses (MOOCs). Interested students are now able to enrol in online computer courses on Coursera to earn a certificate of completion or distinguishment to present to potential employers. Coursera is also starting to offer “specializations,” such as a Fundamentals of Computing track accredited by Rice University. These specializations often involve taking a series of related courses and then participating in a two-week cumuluative review session and exam at the end of the series, all online. Although still reliant on the accreditation of a host university, these specializations are often much cheaper, with each course costing about $60, while retaining the same sense of authenticity.

Usman Ehtesham, a recent McGill electrical engineering graduate, learned to code through both a software engineering minor and through various online courses. He advocates for the latter: “I personally recommend that people learn programming through these online courses rather than take a minor in Software Engineering or Computer Science.” In addition to saving money, he says, “there are many more options to choose from, whereas in a minor you can do only six to eight courses.” Ehtesham’s comment reflects on the abundance of online courses and content; from tutorials to eBooks to challenges, both free and paid materials are available in every programming language at every skill level.

In contrast to classroom learning, learning online is decidedly more self-directed and independent. As a result, motivation and dedication are essential to success. Ehtesham notes, “One issue with online courses could be losing motivation within the first few weeks, as students may feel no pressure.” Students enrolled in university classes are pushed to keep up to pass the course with a decent grade. However, for the independent learner, online material can help you advance faster and further than the traditional classroom-structured approach of learning. Clermont affirmed that “[reading books] had a greater impact on my coding than courses ever did,” while noting the extra effort required for this type of learning.

Ehtesham continues, “if one has the motivation to learn coding, and does not want to spend extra money on a minor, then online courses is definitely the way to go. […] The next step from that is and should be working on your own project or contributing to an open source project.” Open source projects in computer science are projects in which the code itself is available to the public and editable. These are, in his opinion, “the best way to become a proficient programmer.” In addition to the experience gained from participating and creating these projects, employers are often more interested in past experience than credentials due to the practical nature of coding.

If you’re generally more self-motivated, self-paced, and independent, online resources may offer you more freedom than classrooms in terms of course pace and the breadth and depth of coverage. The already vast collection of online materials will only continue to grow as the internet evolves with the advancement of technology. Whether you learn through sets of exams and assignments in class or through tutorials and challenges online, learning to code is beneficial. Golfi notes, “I believe that anybody can learn programming with enough willpower and elbow grease.”