If you like DNray Forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...

 

Enhancing Programming Skills

Started by xLRWreltyheene, Aug 29, 2023, 06:52 AM

Previous topic - Next topic

xLRWreltyheeneTopic starter

After completing my Python studies through books, I've encountered challenges when it comes to creating algorithms. There are times when I struggle to articulate them effectively in a programming language.
I attempted to read Kormen's book but found it difficult to grasp due to my limited mathematical background (which is only at the grade 9 level).
Do you have any recommendations for additional reading or areas of study? Should I consider delving into higher mathematics to better understand algorithms?
  •  


Rooferguycx

If you're having difficulties articulating algorithms effectively, one approach could be to focus on improving your problem-solving skills and gaining a deeper understanding of fundamental programming concepts. While a solid foundation in mathematics can certainly help with algorithmic thinking, it is not always a prerequisite. Here are a few recommendations to help you improve:

1. Online courses: Enroll in online courses specifically designed to teach algorithmic thinking and problem-solving skills. Websites like Coursera, Udemy, and edX offer a wide range of courses on algorithms and data structures.

2. Practice coding challenges: Solve coding challenges on websites such as LeetCode, HackerRank, or CodeWars. These platforms provide a range of problems of varying difficulty levels. By solving different types of problems, you'll develop a better understanding of algorithms and gain more proficiency in expressing them in code.

3. Algorithm visualization tools: Explore algorithm visualization tools like VisuAlgo or Algorithm Visualizer. These tools visually represent how algorithms work step by step, helping you understand their inner workings and improve your ability to articulate them effectively.

4. Read beginner-friendly books: Look for books that explain algorithms in a beginner-friendly manner without requiring an extensive mathematical background. Some recommended titles include "Grokking Algorithms" by Aditya Bhargava and "Introduction to the Design and Analysis of Algorithms" by Anany Levitin.

recommendations to help you improve your algorithmic skills:

1. Online communities and forums: Engage with online communities and forums focused on programming and algorithms. Platforms like Stack Overflow and Reddit have active communities where you can ask questions, seek guidance, and learn from experienced programmers.

2. Code reviews and collaborations: Practice pairing with more experienced programmers or participate in code review sessions. This will help you gain insights into different approaches and receive feedback on your code and algorithm designs.

3. Read algorithm analysis books: While you mentioned Kormen's book was challenging, you can still explore other introductory algorithm analysis books that cater to a wider range of backgrounds. "Algorithms Unlocked" by Thomas H. Cormen or "The Algorithm Design Manual" by Steven S. Skiena are two options you may find helpful.

4. Master data structures: Algorithms often rely on different data structures. Focus on mastering the fundamental data structures such as arrays, linked lists, trees, graphs, and hash tables. Understanding these data structures will make it easier to design and implement algorithms.

5. Seek mentorship: If possible, find a mentor who can guide you through the learning process. A mentor can provide personalized advice, share their own experiences, and help you refine your algorithmic thinking skills.
  •  

Boockeviecy

In my view, there is not much connection between mathematics and programming. When I was in school, my friend excelled at math just as much as I did, but when it came to programming, they struggled. The education system, both in school and in college, unfortunately, focuses on teaching standard methods to solve standard problems in mathematics.

However, creating an algorithm, even a simple one, requires a certain level of creativity. In programming, there are a few fundamental concepts such as variables, input-output, loops, functions, and C++ which can be a useful bonus, especially when combined with rapid application development (RAD).

Even if we take a typical program like solving a quadratic equation, there are moments where creativity comes into play. How should we name the variables? Should the coefficients be entered by the user or hard-coded? What happens after the program ends? Do we stop or solve another equation? And what if instead of a quadratic equation, a linear one is given? How do we handle that? And if the equation is provided as a string like "2x^2+3x-10=0," can we still solve it?

And so on, there are many more considerations when programming something like tic-tac-toe. Mathematics, on the other hand, is not necessarily required. If you need to program the trajectory of a satellite, you just need to refer to books on numerical methods, which are abundantly available. From a programming perspective, it's quite straightforward.

Typically, these programs involve reading data, performing complex calculations using formulas, and outputting results. Of course, there are certain knowledge requirements, such as understanding pointers, how they are stored, avoiding undesirable comparisons of float variables with zero, and how arrays are stored. All these topics are covered extensively in programming books.

Here's my suggestion: try solving the same programming problem using different approaches or, at the very least, contemplate different strategies. It's a great exercise to expand your programming skills and discover new perspectives.

As for me, I started working in a software company during my first year of college. I primarily write code in C/C++ and its various iterations; I haven't delved into newer languages like Python yet.
  •  

iekkmooeca

Having knowledge of a language's syntax does not equate to knowing the entire language. Complete your sentence until the end. What aspects of the language are clear to you, and what remains unclear? I have encountered many individuals who have extensively read books on mathematics and algorithms but struggle to apply their knowledge effectively. Higher mathematics, as you refer to it, involves a level of abstraction where real-world problems are transformed into expressions or equations. For instance, let's consider the scenario of determining the amount of wallpaper needed to cover a room. You would measure the dimensions of the walls, determine the width of the wallpaper canvas, formulate an equation, and voila! The same principle applies to programming. A concrete task is presented, and it must be translated into a particular programming language, creating an abstraction or a model. The true value of mathematics lies in its ability to cultivate the skill of working with abstractions. The more proficient you become at thinking in abstractions, the better equipped you will be to solve problems, not only in programming but in various domains.

My main message is that merely studying books is not a productive use of time. Instead, seek out a problem and commence solving it. Throughout the process, you will encounter numerous questions and actively search for answers in books, specialized websites, and other resources. Additionally, you will develop the ability to ask meaningful questions. Since you mentioned completing your Python studies, allow me to present you with a problem: why is there no tail recursion optimization in Python?

It is vital to emphasize that hands-on experience and practical problem-solving are crucial components of mastering any subject matter, including programming languages. Merely reading books and acquiring theoretical knowledge is insufficient in fully grasping the nuances of a programming language. By actively engaging with problems and seeking solutions, one can enhance their understanding and practical skills.
  •  


If you like DNray forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...