Students aspiring to program come in all varieties. Some are good, some are not so good and this categorization is strictly within the same pool.
The frustrating part (for me) is that the good programmers have a long way to go to become competent developers. And the not-so-good programmers are not so good for no fault of their own. I find that the assignments that they do, either in college or elsewhere are unambitious and are too focused on specific concepts.
Many students seem to think sites such as leetcode are all that is required. I beg to differ – these are fine for preparing for interviews, but not for becoming good developers.
Here’s a series of assignments that will take you beyond your current capabilities will teach you more about algorithms and data structures than you currently know, help you learn how to use the right tools, techniques, and skills, and get you started on building your portfolio of work.
The first group doesn’t even ask you to write any code:
The next group is focused on the basics:
- Command line / options
And a few complicated ones:
- Matrix multiplication
- Random walks
And the skills needed for
- Shared-memory multiprocessing
- Distributed-memory multiprocessing