.. _software_tools: Software development tools fundamentals ======================================= Writing software is hard. There are lots of ways that code might not do exactly what you want, or might have bugs or other issues. For some people it's a part time activity, but for many people it's a full time job that they're paid for, and that customers pay a lot of money for. It thus shouldn't be surprising that there are lots of tools that have been created to help with writing software. Fundamentally, code is a usually a piece of text that you can edit in many different programs. However we strongly recommend using dedicated tools that have been made for writing code. These contain lots of functions (and we're only really going to scratch the surface) for helping to ensure you write high quality code, and to help you debug your code when things go wrong. This section provides a brief walk though of some of the most common software development tools. There are quite a few sub-topics here. The aim isn't necessarily for you to be an expert on all of these by the end of this course. For each sub-topic we'll give some information on the extent to which we're going to use it in this course, and so the extent to which you need to know it (for the exam and similar). The other sub-topics are more to give you a starting point for if you do want to go deeper in your own time. .. toctree:: :maxdepth: 1 :hidden: software_development_tools/ide software_development_tools/comments software_development_tools/docstrings software_development_tools/documentation_tools software_development_tools/static_code_analysis software_development_tools/debugger software_development_tools/profiler software_development_tools/version_control software_development_tools/environment_control software_development_tools/automated_testing software_development_tools/continuous_integration software_development_tools/formatters software_development_tools/code_reviews software_development_tools/buddy_programming software_development_tools/libraries software_development_tools/licensing software_development_tools/pseudocode software_development_tools/ai_tools