Skip to main content
Loading

How to Get Started with Programming

By Patrick liu

August 03, 2018

Computer science is indeed one of the fastest growing fields today, due to its infinite application in projects and vast array of roles in the industry. Programming is appealing because of its unique creative freedom – one that allows you to synthesize abstract concepts with logical bits of code.

But how does one start to learn programming?

Delving into any academic field is no simple feat, but computer science may be a special case. While subjects such as physics and math denote theory, observation, and continuous developments in our understanding of the world around us, computer science is a subject that relies on applying learnt tools. In other words, once a student grasps the fundamentals and inner workings of the computing mindset, he or she has the potential to render complex abstractions concrete through programming.

In terms of programming fundamentals, sites such as codeacademy are a great resource for learning the necessary basics of programming. A recommended starting language is Python, given its simple syntax and similarities to pseudo code. In fact, Python has gained traction in the past decade not only because of its low barrier of entry, but also because of its powerful capabilities and packages in data science and machine learning (and even graphics). If you choose to take the codecademy tutorial route, however, it is vital that you are actively processing what you are typing on the screen and understanding your objective. It is admittedly very easy to get distracted and to just follow the tutorial instructions without any thinking involved.

Another popular beginning language is Java, as seen by the infamous AP Computer Science curriculum in high schools. Java is known for being object-oriented, which is why I am not an avid supporter of it being a beginning language; It would be more fitting as a secondary option. Many of my classmates were actually turned away and intimidated by the apparent complexity of the language syntax. For instance, printing to console in Python is literally “print”, while Java would be “System.out.println()”. Preferences of a language are completely dependent on the student, however. Java has been a stable, reliable language since its birth, but it is not as “trendy” as Python, and definitely has its limitations in application and utility. Java fundamentals may also be found on codeacademy (or even an AP Computer Science book).

If you are still looking for more straightforward options, you might take interest in MIT’s Scratch project, a visual-based language based on color-coded blocks. Code blocks are conveniently categorized by themes, allowing users as young as elementary students to effortlessly create games and animations. You can also find inspiration in other projects in the Scratch community, as well as their “source-code”.

Programming fundamentals are, well, fundamental to the understanding the programming, but they alone may not be sufficient enough for the ambitious objectives we students set for ourselves today. It is crucial that you practice synthesizing programming skills, and apply multiple fundamentals in a single sitting. Students may practice this through more advanced courses, or independent projects.

A well-known and reputable course for introductory computer science is Harvard’s own CS50, which may be found on edX – an educational platform that hosts free (and paid) courses from field-specialized and prestigious universities. CS50 is unique in the way that it revolves around C, an older language that is computer-efficient/fast, but more complex than the others. In addition, students will be able to practice fundamentals through problem sets, which is more more hands on compared to the previously stated tutorials. CS50 also has its own community, reaching as far as to Facebook through its many students, who often collaborate and work together. CS50 is meant to be challenging for the high school student, but is definitely worth the effort as you progress through units and reinforce programming skills.

In terms of web development, FreeCodeCamp is an amazing resource, and is similar in style to codeacademy (but more interactive). As you go through tutorials, you will be able to change code and observe visual differences on a rendered monitor. FreeCodeCamp has implemented courses in powerful languages such as HTML 5, CSS 3, Git, and even React.js. By the end of the courses -which is in-depth with an estimated 300 hours in completion- you will master the elements of full stack web  design necessary for developing tasteful websites.

There are many platforms for app design, the most accessible being Android App Inventor (also from MIT), which is similar in functionality to Scratch with its block code concept. If you are passionate about iOS apps and dragging and dropping, Swift (own independent language) may be the language for you – However, you must have a Mac device for developing capabilities. If you wish to deploy apps to the Google Play Store, Android Studio (Java) is the developing tool for you. React Native, a framework hosted by Facebook, provides a unique opportunity for cross-platform development through JSX (Javascript with XML syntax). CS50 is also hosting a Mobile App Development Course for React Native, which will most definitely provide thorough insight into the app development framework.

I am no professional or the most capable programmer myself, but I firmly believe with the right amount of drive, creativity, and resources, you can take programming projects to a whole nother m- level. Independent, self-motivated projects are often one of the best ways to practice real programming after the fundamentals. If you have a specific idea for a program or a programming project, start drawing out different features I recall

I hope this has been helpful, and from student to student, I genuinely wish that you continue (or start) your path on programming.

Also, Stack Overflow is your best friend. 😉

Related articles:

Leave a Reply

Your email address will not be published. Required fields are marked *