Student use of Artificial Intelligence and Internet resources ------------------------------------------------------------- One of the advantages of learning programming and software development is the huge number of resources that are available online to help you. In order to provide an easy on-ramp, we're starting off with relatively simple examples. It's thus likely that you could find the solutions to many tasks just by searching online or by asking AI tools. You're welcome to use online resources to help your learning, and indeed when programming in practice it's very common to search online for documentation and assistance with the task you're currently looking at. It's also common for us to use `libraries `_. That is, functions that we download (for free or paid for) that do pieces of what we want, so that we don't have to code everything from scratch. Don't just copy and paste from the Internet though! There are a few reasons for this: - Our aim is to train you to be highly skilled and valuable engineers who can provide solutions to problems, not to be engineers who can only copy and paste solutions others have already come up with. To get the most out of the course, you need to think about how you would code a solution, and try it out. That way you can learn what works and what doesn't work. If it doesn't work first time (or second, or third) that's OK. - Just copying resources from the Internet would be a bit like running a marathon by getting on a bike half way round. You might have made it to the end, but you haven't actually run a marathon. You're only kidding yourself (and others) if you think you have. To really learn programming, you have to put the thought process in and try things yourself. The labs are to give you the opportunity to do this. - We'll touch briefly on `software licenses `_ later, but remember that most software comes with terms and conditions saying what you can and can't do with it. In a commercial setting, being compliant with these terms is very important. Just because a potential solution, or answer to a question, is on the Internet, doesn't mean that you can legitimately use it. Similar comments apply to the use of artificial intelligence, and features such as GitHub co-pilot or ChatGPT. We've long had auto-complete functions available for programming, where code and variable names get automatically filled in via predictive text functions. These are tools to help ensure your code is correct. Artificial intelligence is really just the next generation of this functionality, allowing whole blocks of code to be generated. This is quickly transforming how we do programming, and hopefully making it both quicker and with fewer errors present. Again though: - If the artificial intelligence does all of the work, then you haven't actually learnt programming. In the same way that you don't learn a language by using Google translate, and you don't learn maths by using a calculator, you don't learn programming by getting everything auto-completed. You first need a thorough understanding of how to programme (or speak French, or add/multiply/integrate). Once you have this understanding, then you can use the amazing tools that we now have available to make the task quicker and with fewer bugs. - Our understanding of artificial intelligence is evolving, but in general it is the programmer, the human, who is responsible for any work. Lots of electrical and electronic engineering is applied in safety critical situations, whether that be in a power plant, in healthcare, in a plane, or somewhere else. It is thus *you* who needs to be able to prove, and sign off, that any code is working and has been adequately tested. Even if you use artificial intelligence to help, you will need to take responsibility for your code and being able to explain it, particularly (in the hopefully unlikely) case that it goes wrong. On the flip side, if something works well and is used by lots of people (or makes lots of money) it is the developer who gets the credit and money, not the artificial intelligence. - As noted above, software is usually distributed with a `licenses `_, specifying particular terms and conditions that have to be met. When using artificial intelligence functions, you need to ensure that the code used for training the intelligence satisfies any requirements present (which is quite hard to do). Otherwise, you can find functions from others leaking into your code, which you don't have a right to use. For a commercial product this could create substantial liabilities (if you use other people's work they generally want recognising, and/or paying for it), and as above, it is the programmer, not the artificial intelligence who is responsible. For the avoidance of doubt, see the course's :ref:`statement on academic malpractice `. See also the :ext_uom_ai_policy:`University's guidance on the use of artificial intelligence <>`.