1. Software Carpentry

    Software Carpentry presents an intensive course on basic software development practices for scientists and engineers that "introduces them to the 10% of modern software engineering that will satisfy 90% of their needs".

    It covers the topics:

    • Shell programming
    • Version control
    • Automating builds
    • Python
    • Systematic debugging
    • Higher-level programming
    • Testing
    • Coding style and reading code
    • Data crunching
    • Web programming and security
    • Software development project tools and processes

    If you program for a hobby, or even professionally, this may teach you a few strategies and techniques to improve your skills or the quality of the programs you produce.