If you plan on learning a new programming language, one good way to get to know the language better is by using it to solve the computational problems found on the Project Euler site.
Currently there are about 385 problems to be solved, however more are added regularly. They start out relatively easy but become more difficult and challenging. As you progress throughout the problems you will find that certain problems often involve similar things. For instance many of the problems involve prime numbers, so as you progress further you can create libraries in your code that can include common functions, such as those that can check whether a given number is a prime number, or a function that can generate prime numbers, etc.
Some of the easier problems can be solved by “brute force” approaches, i.e. your program calculates all the possible paths to calculate the greatest sum, however the more difficult problems would require trillions of iterations and computations using the same brute force approach. Therefore you’ll have to find different and more elegant solutions in order to find the answers.