I recommend a disciplined an organized approach. Scattered YouTube videos, PDF files, and trial and error are only going to get you frustrated real fast with a language like C#., especially if you don't have a lot of experience writing programs, doing abstract math proofs, or using other object based languages. (HTML / CSS / Scripting) does not count.Practice is the most important in learning a language. Gotta first write bullshit programs like Hello World, calenders, list sorting programs. A lot of bullshit programs that don't do anything. The more you practice the better you get. Takes years to be a functional programmer. Takes years and an inherent knack of it to be a good one. It's like playing a musical instrument, not an easy one, but a hard one like violin. C# has all the tedious syntax issues of C, some of the nuances of assembly, and the abstractions of all other object based languages.I suggest getting to the point where you can write your first junior Monopoly game (smaller board, simple rules, and only for one player) using ascii art as a first milestone.
Oh I forgot to mention... for what purpose?The platforms and development environments are probably even more important than the language these days. .NET, Java SE/EE, etc. The reason is that a lot of functions and routines that we used to have to look up in algorithm books are built-in to the libraries. Saves a ton of time! This why some people I know won't hire .NET programmers. It's because 98% of .NET people are idiots who couldn't come up with working logic or algorithms to solve a simple problem, like finding the shortest path from point A to point B in a maze. Actually, the maze program would be another good practice. Write a program that presents a 20x20 matrix. Insert X number of random blocks. Write program in C# to find shortest path from 1,1 to 20,20 (assuming that path is not blocked by randomly placed blocks.) Also, do this in a object oriented way. Don't cheat and write a C program. Write a real C# program.
It's because 98% of .NET people are idiots who couldn't come up with working logic or algorithms to solve a simple problem, like finding the shortest path from point A to point B in a maze. Actually, the maze program would be another good practice. Write a program that presents a 20x20 matrix. Insert X number of random blocks. Write program in C# to find shortest path from 1,1 to 20,20 (assuming that path is not blocked by randomly placed blocks.) Also, do this in a object oriented way. Don't cheat and write a C program. Write a real C# program.
I'm not sure what the definition of a "simple" algorithmic problem is, but shortest-path problems aren't really trivial.
Purr1n, did you work as a programmer/dev. before going to EC?
Depth search first and breadth search first. The algorithms are simple, among the learned in algorithms 101.
I write a few custom hacking tools now and them. Been doing ethical hacking since 2003.