Welcome to the course! We're going to have a lot of fun, but first we need to set things up just a bit, more conceptually and technically.
So what is software testing and why do we need it? We can think of software testing in a couple ways. Our textbook defines it as "a way of providing an estimate of software quality to stakeholders". Stakeholders are basically anyone who has an interest in the software under development. This can include other developers, customers, managers, and so on. When we test our software we instill confidence (or lack thereof) in our stakeholders, which allows them to make effective decisions about whether our software is complete and how it should be used at any given point in time.
Another way of thinking about software testing is as a set of processes that we can use to help us build software that "works" (for some definition of the word). This course will focus on these processes, but keep in mind that the reasons we ought to use these processes are numerous and varied. We shouldn't just go through the motions, we should internalize the idea of software testing just as we internalize ideas like object-oriented design or memory management.
We will use the Unix / Linux environment for our projects during the semester. We're going to do this not because this environment is fundamentally "better" but because it is very common in industry and academia and is possible to satisfy on basically any modern computer system. You will have several options:
If you need help setting up one of these options please come talk to me. You might want to jump ahead to next week's notes once you have everything installed.