Learning Programming: My unconventional recommendations of Programming Language, Tools, Resources and Strategy

Learning Programming: My unconventional recommendations of Programming Language, Tools, Resources and Strategy

"What programming language should I learn first?" and "How should I learn programming?" are very common questions asked by a lot of students and beginners who want to get into software development and Computer Science.?

My opinion and recommendation regarding that is a little unconventional. It's how I would begin programming if I could go back in time. I didn't start with them but they were very helpful during my journey of becoming a good programmer.??

Often Python is recommended as the first language due to being easy and sometimes due to being used for AI and Data Science. It's a decent choice but still I recommend something else.

My top recommendation for learning programming is through a tool named Processing, which uses Java Programming, but adds some simplifications and functionality that makes it fun and simple. Processing makes it very easy to create programs with graphics and interactivity, like games and simulations e.g. you can draw shapes, text and images on given locations on screen through one line of code and define what happens on mouse clicks and key presses. You can learn more about Processing and projects developed in it here:

Why Processing-Java?

Following are my five reasons for having this opinion:

  1. ?I believe that the first programming language shouldn’t be too high level and simplistic, so one could properly learn low level programming concepts and also be able to later learn other languages easily. However it shouldn’t be too difficult to work with for beginners. Java has a good balance. It’s more high level than C++ but not as simple as Python. Using Processing, removes the overhead of Java’s extra syntax, setups and complex GUI development, making it even easier and more focused on the logic than syntax. Once you are good at programming, it’s quick and easy to learn the syntax of a new language, especially if you are switching to an easier language like Python.
  2. I think, one of the most helpful things, when beginning to learn programming, is to enjoy it and develop interest in it. It should look fun and rewarding, not dull and tedious. Graphics and visualization are great at developing interest and providing motivation as well as feedback. It’s fun to use programming to create little worlds that you can see, instead of printed values and text. If something is highly visual then you can easily share the video and showcase your skills, building a portfolio and also gaining more motivation to willingly do more programming.
  3. ?Java is good for learning Object Oriented Programming (OOP) and usually the OOP courses in universities are taught in Java, so it can be helpful with learning OOP through university course or learning OOP concepts in general. Java syntax is quite similar to C++ so it will also be useful in the Fundamentals of Programming course, which usually uses C/C++.
  4. Developing games is a nice way to learn programming and logic building. They have a lot of moving parts and interacting components and often require developing detailed algorithms. They can have logic involving a lot of programming concepts and can involve OOP and data structures too. Developing a game from scratch requires designing and developing complex logic, spending time and getting a good amount of practice. Processing makes it easy to develop small games from scratch.?
  5. Processing has a lot of nice and easy libraries for doing a variety of things. They can be browsed and installed through one click, and come with examples to run. You can get really creative with them. My final year project in BS involved Robotics, Computer Vision, IoT and AI, and it was implemented using Processing.

Tips for learning programming

Following are my five tips related to learning programming:

  1. Do a lot of practice and make a lot of projects having significant size and complexity. Being a good programmer requires being comfortable with programming and repeatedly going through many scenarios during programming. It’s something that you learn by doing. Build a good projects portfolio. Your code can also be easily reused by you later.
  2. Don’t get much into specific tools and frameworks until you have good programming and logic building experience. Otherwise you won’t get to practice that properly. Don’t rush and focus on tools when the time is right.
  3. Think of your own examples for using the concepts that you’ve learned, and implement them. The examples in courses and online tutorials are nice too if you do them yourself, but your own examples will be much more memorable and interesting for you. Also, think of project ideas that would utilize most of the things that you want to learn well, and implement them.
  4. Video lectures are very useful in general but when it comes to learning programming languages, it can be faster, more organized and effective to use books or websites with articles and lists of topics. You can also combine that learning with video lectures. Learning something from multiple sources is quite effective. Making own notes to consult later can be helpful too.??
  5. Develop good theoretical knowledge of data structures, algorithms, and OOP. Once you are good at programming in general, then you should focus more on writing efficient code and practicing advanced coding problems on platforms like HackerRank and LeetCode.?

Learning Resources for Processing-Java

Following are some learning resources for learning Processing-Java:

You can watch TheCodingTrain playlists for Programming with Processing, starting from this one?

You can also check official Processing tutorials on its website

To learn more about Java syntax, check these tutorials

You can check Processing documentation here:

For learning Processing you can use following book:

  • Processing: An Introduction to Programming - J.L.Nyhoff and L.R.Nyhoff

You can also use this book for learning Java in depth and using as reference:

  • Java: The Complete Reference - Herbert Schildt

For learning Data Structures & Algorithms in Java you can use this book:

  • Data Structures & Algorithms in Java – M.T.Goodrich and R.Tamassia

For learning more about Algorithm design you can use following books:

  • Grokking Algorithms – A.Y.Bhargava
  • The Algorithm Design Manual – S.S.Skeina

You can also check this book for programming problems and interview preparation.

  • Cracking The Coding Interview - G.L.McDowell

Other options for learning programming

There are a couple of alternatives that I also recommend, if you don’t want to use Processing-Java.

P5.JS

Following are some resources for learning it:

You can learn p5.js, which is like a JavaScript version of Processing. JavaScript is the most popular programming language nowadays, and very common in web development. P5.js allows using JavaScript code in a simple way with Processing’s easy graphical visualizations, without getting into advanced web development frameworks. It can be nice if you want to pursue web development later after becoming a good programmer.

For learning p5.js, you can check Daniel Shiffman’s TheCodingTrain’s lessons on p5.js using his playlists on it. You can also check his other tutorial playlists. Following are the links

You can also check these other P5.js tutorials:

To learn more about JavaScript syntax, check these tutorials

You can also go through this course for making some fun stuff with P5.js involving mathematics.

Python

Python is also nice if you want to learn an easy language quickly or want to get into AI and Data Science soon.? Following are some resources for learning it:

You can do this Python crash course specialization

If you have good programming experience in other languages and want to learn quickly then you can use "The Quick Python Book" or w3schools as reference for syntax. Make sure to practice. LearnPython allows interactive learning, running code online and practicing, which can be very useful. DataCamp Python courses also have a nice way to run code online and practice through tests.

w3schools:

LearnPython:?

DataCamp:?

You can also develop games and visual stuff in Python using the PyGame library, once you have good familiarity with Python.

I’m also developing a library which acts as a wrapper for PyGame and allows easily creating graphical programs in Python using code structure very similar to Processing. You can check that here:

Processing also has a Python mode but it has some limitations. It can also be used for learning programming and Python fundamentals with graphical programs. You can install that mode and check its examples.

Muhammad Hamid Saeed

Software Engineer | Game Developer | CUI Grad 25'

2 年

Amazing! You covered the whole thing in one article. It was worth reading. Although I learned java, Javafx, swing but didn't know about Processing. Quite helpful...

回复

要查看或添加评论,请登录

Imroze Aslam Malik的更多文章

社区洞察

其他会员也浏览了