Although I love CS & programming, I am bad at maths. My logic to develop programs is weak. What should I do to improve my logical skills and where can I learn the essential maths for programming?

Actually,

Most of the "professional programming" doesn't need much of math apart from basic arithmetic and some coordinate geometry knowledge.
It is only the useless learning system which requires a good knowledge of maths. In most of the books there are questions of finding complex mathematical solutions but these thing never ever come in use in programming done in most IT firms.

You don't need maths skills to be a good developer but you do need them to be a great one.
Here is a great article about this thing -
http://www.skorks.com/2010/03/yo...


So, it means I have to be good at maths for be

Actually,

Most of the "professional programming" doesn't need much of math apart from basic arithmetic and some coordinate geometry knowledge.
It is only the useless learning system which requires a good knowledge of maths. In most of the books there are questions of finding complex mathematical solutions but these thing never ever come in use in programming done in most IT firms.

You don't need maths skills to be a good developer but you do need them to be a great one.
Here is a great article about this thing -
http://www.skorks.com/2010/03/yo...


So, it means I have to be good at maths for becoming a great developer, but how much? Actually not much.
Link to know how much math you need to know -
http://inventwithpython.com/blog...

The math taught in school has almost no use in programming. There are many things taught to us that would even not be useful in other fields.
Some years ago I had the same question. So, I began surfing all over the Internet to find something useful. This was the time I came to know about this fantastic channel - Coding Maths.



Here is the link - https://www.youtube.com/user/cod...


But hey, it's very important to practice. Just reading the above mentioned articles and watching these coding maths videos won't make you an expert.
I won't say that Practice makes a man perfect but I will say that
Right practice makes a man perfect.
School math is good for just marks. The best approach will be learning algorithms, watching these coding maths videos and practicing.


Hope it helps.


Let’s be in touch, follow me here on Quora, turn on the notifications for me and ask me about Android, Windows, Phones, Tablets, Hardware, Programming, Game Development and Tech.


Image - I am very thankful to whoever provided this image. This image doesn't belong to me. I am not the owner of this image . All rights of this image are reserved with their owner.

Only certain types of programming require advanced math skills. You should pick an area of programming to focus on and study programs that are written in that area.

For example, you could pick Web programming and study WordPress. Or you could pick OS programming and see how Linux and its GNU utilities are put together.

Unless you're doing statistical programming or heavy-duty AI or scaling to millions of users, the math involved in programming is typically lightweight.

On the other hand, if you're just trying to be a top-rank coder, you will need to aim for that specifically. To practice your pro

Only certain types of programming require advanced math skills. You should pick an area of programming to focus on and study programs that are written in that area.

For example, you could pick Web programming and study WordPress. Or you could pick OS programming and see how Linux and its GNU utilities are put together.

Unless you're doing statistical programming or heavy-duty AI or scaling to millions of users, the math involved in programming is typically lightweight.

On the other hand, if you're just trying to be a top-rank coder, you will need to aim for that specifically. To practice your programming, you can also take some online coding contests.

I just wrote an answer related to that at Douglas Green's answer to What are the essential mathematics skills needed to be a good programmer?. In that answer, I recommended the book "Competitive Programming", 3rd Edition by Steven Halim and taking practice problems from UVa Online Judge.

That's what I would do to polish my math and problem-solving skills. Some reading and lots of practice.

I am sure you are not bad in every area of maths! I am very good at coordinate geometry however very bad at trigonometry and Vectors' .

so there is no or very less connection between maths and logic, my grandfather is not educated, but he managed lot of business with ease, and are good with logic.

Just try indulging yourself in programming world, try solving real life problem and creating different thing...

Programming is becoming easy day by day, and if you work hard you surly going to succeed

Join the club. A lot of programmers including me really love programming but are bad at maths. The thing is to be an programmer you only need basic of maths. But to be a Professional one you do need a level of mastery over Maths. Because they are required in complex topics mainly Big Data and as such.

For become a good programmer , you need to practices for programming everyday and other thing is that for develop a logic you can solve a puzzle game and aptitude question.and learn fundamental of c language.

School math is enough to carry out most of the thing at job, unless you are trying for Competitive programming, then you need to learn many such math topics. Please check the following post.

Mohmad Yakub's answer to Why do some very smart people suck at programming?

Aside from Discrete Math that some have recommended, here are some practical tips for improving your logical and coding skills over the next couple of years.

Build a strong foundation

You can’t succeed in software engineering without a solid foundation.

This entails computer architectures, operating systems, networks, processes, data structures, algorithms, and everything in-between.

Programming itself is easy. Analyzing the available technical stack and how the different pieces fit together is the core principle of engineering.

Look for patterns

This is valid both in programming and in other fields

Aside from Discrete Math that some have recommended, here are some practical tips for improving your logical and coding skills over the next couple of years.

Build a strong foundation

You can’t succeed in software engineering without a solid foundation.

This entails computer architectures, operating systems, networks, processes, data structures, algorithms, and everything in-between.

Programming itself is easy. Analyzing the available technical stack and how the different pieces fit together is the core principle of engineering.

Look for patterns

This is valid both in programming and in other fields of study.

Software development is built upon the foundation discussed above, and common problems solved over time.

Over time, you’ll build a pattern-matching mindset that helps you identify a problem and find the right solution. This is what “design patterns” in engineering are derived from.

Keep solving different programming problems

Practice makes perfect.

The more you program, the easier it becomes to find a working solution that you’ve implemented previously.

Take a sample web application as an example.

  • You have the front-end and the back-end.
  • Data is probably stored in a database.
  • You have a templating engine rendering data upon different requests.
  • Requests are handled by routers or controllers.
  • There’s an underlying data model that transfers requests between the application and the database.
  • You have performance implications for high-scale cases.
  • Data should be sanitized and escaped for security reasons.
  • There’s an authentication engine handling roles and users within the back-end.

These principles are similar (if not the same) across applications. After successfully delivering a few apps, it gets dramatically easier to apply your existing knowledge to new problems.

Reverse-engineer business cases

Instead of pushing forward, think backwards.

Analyze the core business problems and figure out how to get there.

A library application is mainly a solution to a library’s problem for classifying, organizing, finding books. Think as a librarian for a moment.

  1. What problems are they facing at work?
  2. What steps can be automated?
  3. How can a programmatic solution support their goals?
  4. What would a user love to find books quickly?

The list goes on, but once you understand the problem at hand, you can reverse-engineer it and deliver.

Break a problem into phases

Having the said problem, break it down into logical pieces.

“Build a desktop software” isn’t an actionable item. It’s built upon thousands of tiny tasks, grouped into components, bundled together into an application.

Categorize these and find the links between. Write down as many straightforward tasks as possible.

Pick a process that helps you iterate, one task at a time, towards your goal.

This is much more bearable than working against vague expectations and having to rebuild your architecture multiple times on-the-fly.

Solve various puzzles

Puzzles help with creative and logical thinking.

They expose you to different analytical problems. Crosswords, sudoku, games like Go, online puzzles, chess.

Games are also logic-driven, defined by patterns, designed to accommodate different strategies.

Building these mental models will be practical in software development as well.

Take care of your health

Sleep and eating habits play a role in your learning process.

The better you arrange your own lifestyle, the easier it is to maintain enough energy and motivation to keep learning.

The learning curve for software engineering is steep. But once you get some progress, it’s significantly easier to add on top of your existing knowledge.

While new frameworks and libraries pop up all the time, it’s the core foundation that matters. And you need to be ready to face these obstacles.

Focus

Multitasking, procrastination, and interruptions are the enemy of progress.

Allocate uninterrupted time for studying and practicing development. Block several hours a day and work on solving actionable problems.

All of the tips above would be handy once you have several hours at hand for programming. And logical thinking will build itself upon your best practices along with solving practical business problems with programming code.

Programming is a skill that will be developed over a period of time. Some of tips are here:

  1. Practice. Practice makes a man perfect.
  • Write lots of programs, especially big programs. A lot of good practices become obvious once you've made the typical mistakes.
  • Writing small programs lets you write more programs in the same amount of time; this will improve some of your programming skills much more rapidly, but others not at all.
  • Modify existing programs written by other people. Reading code without having previous knowledge of it is a valuable skill - you can't debug without it --- and you don't get

Programming is a skill that will be developed over a period of time. Some of tips are here:

  1. Practice. Practice makes a man perfect.
  • Write lots of programs, especially big programs. A lot of good practices become obvious once you've made the typical mistakes.
  • Writing small programs lets you write more programs in the same amount of time; this will improve some of your programming skills much more rapidly, but others not at all.
  • Modify existing programs written by other people. Reading code without having previous knowledge of it is a valuable skill - you can't debug without it --- and you don't get much practice with it when you're writing programs from scratch by yourself. If you reflect on what you've found hard to understand, it can also help you learn how to write maintainable code. Also, this lets you work on many more big programs than you would have time to write yourself from scratch, which helps a lot with those skills that only apply to large programs.

2. Study others code.

  • This will help in improving your own coding skills. You will no longer remain biased towards a single approach for doing the stuff.

3. Review your code.

  • Find some peers with whom you can review your code. People of similar skill levels can teach each other a lot. And this gets around problems with sharing your "bad code" with a senior person who might give you a harsher critique than you want (not to mention a bad performance review).

4. Learn different programming languages and broaden your scope.

  • Learn multiple programming languages. Each language you learn will give you ideas about how to do things better in other languages. (The worst programmers I know are the ones who think that language X is the only one they need to know.)

5. Understand the feedbacks.

  • If somebody complains that they don't understand your code, find out what it is they don't understand. ("That guy is an idiot" is generally not the reason.)
  • Learn to quit habits and to adopt new habits.
  • Take a break. It's hard to do any of these things when you're already coding all week, as fast as you can.

In the end, remember that no App is completely bug free. Bugs are unavoidable because programmers are humans.

Hope this helps!

Source: HowToImproveProgrammingSkills.

There are 2 sets of people.

  1. The one with gifted logical thinking who can break the problem into simpler parts and solve the question. They might not have good command on the language but they definitely will excel in problem solving.
  2. The one who knows the language in and out. Knows about the data structure, library, can implement the question easily once they understand the logic but takes quite a time figuring out the logic and strategy of the problem.

Just like any other skill, Practice is the key to excel in coding.

Coding is a combination of data structures and algorithm. DSA is the ABC of cod

There are 2 sets of people.

  1. The one with gifted logical thinking who can break the problem into simpler parts and solve the question. They might not have good command on the language but they definitely will excel in problem solving.
  2. The one who knows the language in and out. Knows about the data structure, library, can implement the question easily once they understand the logic but takes quite a time figuring out the logic and strategy of the problem.

Just like any other skill, Practice is the key to excel in coding.

Coding is a combination of data structures and algorithm. DSA is the ABC of coding. Don't jump into development or machine learning until you're extremely confident in DSA.

The major algorithms like divide and conquer, backtracking, dynamic programming will largely increase your logic building and problem solving skill.

  • Don't over think. Spend appropriate time with a problem. If you still can't figure it out, walk away and get back later.
  • Before typing on the IDE, first solve the complete problem in your mind. Avoid jumping straightway to code.
  • Code by hand. In most of the interviews you'll be provided with a paper or white board so practice coding without IDE.
  • Learn to use the debugger. It's going to save a lot of your time if you practice fixing the error with the help of debugger.
  • Never memorize the code. Understand the logic, practice the same code at regular intervals but don't memorize.
  • You don't need to know about every library or framework. Nobody knows everything. Know how to google stuff. Get comfortable in using websites like github, stackoverflow.
  • Be consistent and never stop learning. Even if you have solved the problem always look into all the different approaches to solve similar problems.

And finally, code with passion. Don't let the burden bury you. Never give up. It might be tough but keep on pushing yourself. You'll soon get there.

Edit: I have been receiving numerous DMs asking how to kick-start the journey of coding:

  1. Get hold of any particular language. (C++/JAVA recommended)
  2. Strengthen your data structures and algorithm. Take up some structured online courses and practice. (refer bio for more)
  3. Choose a development domain; be it machine learning, app/web development or game development and start learning through project creation.

Happy learning 💻

I think most programmers cannot share their thinking styles with non-programmers — as evidenced by the many “Just try harder” answers here. :D

The key to programming is to think as if you’re building a house. The problem with this is, most of today’s population doesn’t know how to build a house.

And instead of purchasing the bricks, you’re making them from minerals you dig out of the ground, one by one. After you’ve poured out thousands of bricks, you have to let them harden for a week. Then you have to use more cement and cement them into place for your house. You have to keep in mind the desig

I think most programmers cannot share their thinking styles with non-programmers — as evidenced by the many “Just try harder” answers here. :D

The key to programming is to think as if you’re building a house. The problem with this is, most of today’s population doesn’t know how to build a house.

And instead of purchasing the bricks, you’re making them from minerals you dig out of the ground, one by one. After you’ve poured out thousands of bricks, you have to let them harden for a week. Then you have to use more cement and cement them into place for your house. You have to keep in mind the design you want, and plan the brick laying accordingly.

Programming is much the same way. When you were pouring the bricks, you weren’t thinking of the house plans. You were thinking about how to make the best bricks possible. When programming, you don’t need to think of the entire program while working on a single function. Instead, make your functions, THEN lay them together to form the planned way you want your software to look. You have to have a vision of how your software should work at this point, just as you have a vision of how your house is going to look after the bricks harden and need to be laid down.

At any time, you can change your design plan because you’ll have the tools you need at this point. First focus on what tools you need. Then bend them to your very will.

  • Code as much as possible… practice is the key…
  • Do not believe that ‘someone’ will teach you entire coding skills. It is true that lectures and teachers may help you, but at the end of the day, you have to give efforts by your own too.
    • Be the incharge of yourself. It will allow you to learn more things quickly. You have not to wait for your teacher to come on that topic.
    • Teachers can only give information, it’s all about you that how you get and learn it.
  • Work on Data structures the most.
  • Must do competitive programming on the language you are interested in.
  • Set practical specific goals and deadlines
  • Code as much as possible… practice is the key…
  • Do not believe that ‘someone’ will teach you entire coding skills. It is true that lectures and teachers may help you, but at the end of the day, you have to give efforts by your own too.
    • Be the incharge of yourself. It will allow you to learn more things quickly. You have not to wait for your teacher to come on that topic.
    • Teachers can only give information, it’s all about you that how you get and learn it.
  • Work on Data structures the most.
  • Must do competitive programming on the language you are interested in.
  • Set practical specific goals and deadlines for learning coding or to make a project.
  • Plan before coding; but planning too much before coding is also bad.
  • Endlessly research technologies without spending time actually writing code is worthless.
  • Choose a programming language that suits you. For general purposes, Python is best option. You should learn C/C++ as well, it will give you deep inside of how to code.
  • Take small steps. Don’t just try to make a big leaps, start with small coding problems and let your skills grow continuously over time.
  • Seeing someone else’s code is not a crime - if you have tried your best to solve that problem. It will definitely give your mind other dimensions of thinking how to code a problem.
  • Do not think that coding is too difficult. Once you know all basic ideas and functions, it will seem to be too easy.
    • But don’t think either that is too easy and you will learn it after some-days… Making mistakes is not a ‘crime’ but procrastination is…
  • Help others :
    • While explaining code, the concepts will be more clearer.
  • Use Google. In today’s case if you know ‘what to do ?’ - your good problem-solving skills; Google can tell you ‘How to do ?’
  • Don’t get desperate too early. At first, you might not be able to solve all problems, but have faith in yourself. Learn continuously.
  • Know the full expressive power of your language :
    • e.g., C++ has STL function libraries which gives you predefined functions with best possible complexities; e.g., algorithm, vector, string, etc.
  • Always dry-run the code or use Debugger. It will give you actual picture how your code is working.
  • And don’t waste much of your time thinking how you learn coding, just roll your sleeves up and jump in the ground to make actual efforts.

See : Why does programming look hard to me? What are the basic rules to learning a programming language?

Upvote the answer if you find it worthy …

Visit my profile for more Tech/ Programming answers : Keshav Kabra