1.10. Limitations of the course

This is an introductory course to programming in general. It doesn’t assume you have previous programming experience. As such, there are many more advanced factors that could be covered, on nearly every topic. Our aim here isn’t to do this. Our aim is to give a broad introduction so that you can move forwards, programming with confidence. There are always more programming languages, more libraries, more development frameworks that could be covered. By the end of the course, you should be positioned to be able to explore these for yourself to meet the needs of whatever project your working on.

In general, we’re only going to consider making command line applications. That is, those without a Graphical User Interface (GUI). We’ll introduce the command line, as you may not have seen it before. With Python, we’ll perform data visulisation. That is, plotting data, but we won’t make a fully interactive GUI. With Rust, we won’t cover graphical interfaces at all.

Nearly every program on your laptop or desktop probably has a GUI, but designing good GUIs could easily form a course by itself. We’re going to focus on the core of the program, the programming logic that operates in the background to determine what should be displayed in the GUI. We’ll then just display the output as simple text, or possibly store it in a file, and will assume that we could make a nice GUI to display it later on if we wanted to. (Or that we’re making an application for a server. Servers often don’t have GUIs installed because they introduce lots of security vulnerabilities, and by default servers tend to send any output to a different computer to be displayed.) If you do want to make a GUI, typically we use a framework made by somebody else to provide pre-defined buttons and other graphical elements. This means that we only need to place the graphical elements to make the GUI, rather than coding everything from scratch. GTK and Qt are maybe the primary choices for frameworks for cross-platform development, but are many other GUI frameworks, particularly if you’re only targeting one operating system.

We’ll assume throughout that you are developing your code on a laptop or desktop type machine, with your code to run on a similar machine. This means the computer is running Windows, macOS, or Linux. (Chromebooks are based on Linux and should be OK.) There is software that lets you write and run programs on iOS/iPadOS/Android devices, but we won’t consider these. We also won’t consider programming for microcontrollers or embedded systems in this course.

The course is cross-platform, for students to follow whether their main operating system is Windows, macOS, or Linux. We thus won’t be using any operating system specific features which might enable better performance if you know you only need to target one platform. This also guides some of the choices we make for which development software to use.