/wwckl-learn-coding

Materials/suggestions to get yourself started

Learn Coding Self-Starter Guideline

The BIG Idea

We want to challenge you to learn coding or understand the basics of programming for 3 months. We believe 3 months is a fair commitment. We'll be suggesting some materials based on some objectives we crafted. You can either use it as reference at your own pace or not. Above all, the key is practise.

We'd also like to hear your feedback if this guideline is useful, please drop us comments to our Self-Starter Coder FB Group.

Who should find this useful?

  • You are curious to learn coding and don't know where to begin
  • You are not sure if coding is for you and willing to invest 3 months to find out once and for all
  • You have technical background and feels like it's time to pick up a new skill to advance your career

Contributors

The BIG Picture

There are tonnes of stuff to learn in the coding and computer science world. It is growing as we prepare this guide. So, we will try to give you a bird's eye view of what we are trying to cover through this incredibly clever illustrated Venn Diagram by Jan Schaumann. We have highlighted what we want to cover in red.

WWCKL Self Starter Venn Diagram

Suggested Material

Objective: Create your own portfolio page.

Learn HTML / CSS

HTML and CSS forms the basics of webpages and it's easy to get started!

Objective: To understand the basics of Data Structure (DS).

For beginners

For those who want to get solid programming skills regardless of a programming language

Python

C

Why would you want to study C ?

Programming languages are often not "close to metal". People who want to truely understand how computer programs work on a processor should descend further down the abstraction level. C is an excellent gateway to it.

  • This course is old, from 1991, but still very relevant and is a gentle and introduction to C.

Ruby

Why would you want to study Ruby?

Ruby is a very high level language (meaning it's very similiar to English language) because it was designed with the goal of making coding fun.

  • Learn some basic Ruby syntax with this interactive website - TryRuby.org
  • Codecademy provides a basic Ruby course on learning the syntax, as well as basic programming concepts.
Try Ruby on Rails

Ruby on Rails is a Ruby framework, meaning a lot of the more commonly used functions have been packed to easier-to-use commands. Ruby on Rails was designed to improve developer productivity, so it's super easy to create an entire app with just a few short commands.

C# (for beginners)

Tutorial - Learn C# from Scratch

Android / Java for mobile development

If you want to learn to code for the mobile platform, you can start with Java for Android. Here are some resources: https://developer.android.com/training/index.html

Swift for iOS mobile development

If you want to learn to code for the iOS / Apple development platform, you can start with the materials here: https://developer.apple.com/swift/

Objective: Practise the new language with algorithm for at least 20 hours.

According to Josh Kaufman, "... with a little bit of of practise, you get really good, really quickly". He said that 20 hours of practise are sufficient to get you from beginner to intermediate level very quickly. If you are interested to hear more of his theory, listen to his inspiring talk on TED Talk.

There are some good sites with real algorithm interview questions you may start with. The neat part is, there are alot of submissions of answers from people which you may refer as well.

Objective: Have a basic idea of what Computer Science entails

Teach Yourself Computer Science is a good site to begin.

Objective: Obtain a deeper appreciation of how computer programs work

Structure and Interpretation of Computer Programs : This book is one of the all time greatest courses on how computer programs work. As a side effect, working through the exercise makes you a comptant LISP (Clojure/Scheme et al.) programmer, and a super good functional programmer by extension.

Objective: Obtain a deeper appreciation of programming concepts/ideas.

History of computer science and its evolution.

This article talks about how you can learn any programming language if you can understand that all languages are essentially an abstraction to solve a specific problem. Hence, knowing the history of computer science is fundamental. Watch this lecture by Ras Bodik - you may start from 42:07 onwards if you want to skip to the history portion. ENIAC

The Art of Unix programming

This book talks about the Unix philosophy and the Unix way. Modern application architectures can be traced back to how the Unix operating system works, and its legacy lives on in operating systems we use (MacOS, Android, iOS, Linux distributions). This is a must read since Unix figures so much in your lives as programmers and the underlying philosphy is neglected very often.

Deeper down the rabbit hole.

For people who are curious like Alice.

Objective: Obtain an understanding of your operating system

Being familiar with your operating system is something akin to being familiar with your house and its layout. You know where things are and what to do with them - and to a programmer, her house is the operating system.

GNU/Linux operating systems

These are the freely available descendants of ye olde Unix operating systems. They also power a lot of servers. Since servers tend to eschew graphical environments and provide you a command line interface to work with, picking up some CLI chops might be a good idea. The Digital Ocean Community's tutorial is a gentle introduction to CLI. Of course the best way is to DIY, install a Linux distribution such as Debian.

Recommended Resources (i.e. MOOC, Books, Youtube Videos, Blogs)