Hi im trying to learn software engineering at home but m confused about two things
should i learn coding 1st or learn algorithms 1st i already started learning coding but some people said that i should learn algorithms 1st then i started looking for algorithms courses online but most of them require knowledge in programming to understand so what should i do !!

Recommended Answers

All 11 Replies

I'd suggest learning coding first if you need to pick one. Give yourself an understanding of how to code and do some small projects, etc. Then when you come to learn algorithms you'll be able to see how your code could be improved. Your previous mistakes and in-efficient code will help the new stuff make sense.

That's an extremely broad topic... Without programming there's no software. Without algorithms there's no programming.
Of course implementing an algorithm in a computer program requires programming. But you can envision an algorithm and describe it in other contexts as well, without writing any need at all.
For example a sorting algorithm you can play out using a flat surface and for example a supply of coins or different coloured jellybeans, or different sized screws, whatever you have at hand.

You need to know what you're modeling before you can start coding it in software after all.

Algorithm is the step by step procedure to solve any problem. So you have to study the algorithm first. Then only you start with any other things in any programming language. The importance of studying the algorithm is necessary.

There is a great book by Niklaus Wirth (the inventor of Pascal and Modula programming languages) called "Algorithms + Data Structures = Programs". This is one of the bibles of software engineering. My copy is from the 1980's, but it has been revised and updated a number of times since then. You can find it on Amazon. Well worth spending some time and money on. You may also be able to find copies on the internet. This was, at the time, one of the most important text books for learning software engineering.

FWIW, one of my best friends, Bruce Ravenel, one of the inventors of the Intel x86 processor family, was a graduate student of Wirth at the University of Colorado (Wirth was a visiting professor then). He (Bruce) is the person who got me into software engineering.

commented: rubberman i trust your answers they are always helpful but you didnt specify algo or programming can u give me few steps to follow and start my way +1

thanks guys for your your kind replies @rubberman i trust your answers they are always helpful but you didnt specify algo or programming can u give me few steps to follow and start my way through S.E

Actually, the chicken came first then the egg.

did it? If the chicken came out of an egg that wasn't a chicken egg, how could it have been a chicken :)

commented: Ok. Voting up, but this is silly! +13

Although algorithms in general are used outside programming (eg in maths), in this context an algorithm is a way of solving a programming problem. If you don't have some knowledge of programming then the algorithms will make little or no sense to you.

I'm 100% voting for learning at least some programming first.

commented: THanks +1

@JamesCherrill - I agree. I learned some programming first - Fortran in Engineering School, BASIC, dBase-II, and then C and C++ (along with Cobol, Dibol, Snobol, SmallTalk, Prolog, and others over time). These days, Java, JavaScript, PHP, and more. However, soon after I started, I realized that just programming was not sufficient and I needed a more fundamental understanding of algorithms - what they are, how to develop them, etc. I learned by reading and studying the giants of the software engineering discipline.

So, learning a language, and then using that to express algorithms is a good approach. What language is not important, but something that is inherently object oriented is a good idea, such as Java, C++, Python, et al.

commented: thanks a lot +1

Of course you can study algorithms first, but you have to be aware that a particular pet algorithm may not be stable or very efficient in the computer language you use later. The language you are coding in is usually picked by your employer, not you.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.