Software failures happen all the time. Sometimes it’s a little bug that makes a program difficult to use; other times an error might crash your entire computer. Some software failures are more spectacular than others.
In 1996, The ARIANE 5 rocket of the European Space Agency was launched for its first test flight: Countdown, ignition, flame and smoke, soaring rocket... then BANG! Lots of little pieces scattered through the South American rainforest. Investigators had to piece together what happened and finally tracked down this tiny, irrelevant bug. A piece of software onboard the rocket which was not even needed had reported a value that was too big to be stored. An error was stored instead, but other software interpreted the error as saying the rocket was 90 degrees off course. Thankfully, no one was on board but the failure still caused about $370 million of damage.
Software engineering is all about how we can create software despite this enormous size and complexity while hopefully get a working product in the end. It was first introduced as a topic of computer science in the 1960s during the so-called "software crisis" when people realized that the capability of hardware was increasing at incredible speeds while our ability to develop software is staying pretty much the same.
As the name software engineering suggests, we are taking ideas and processes from other engineering disciplines (such as building bridges or computer hardware) and applying them to software. Having a structured process in place for developing software turns out to be hugely important because it allows us to manage the size and complexity of software. As a result of advances in software engineering, there are many success stories of large and complex software products that work well and contain few bugs. For example, Google's huge projects (Google search, Gmail, etc.) are built by teams of thousands of engineers, yet they still manage to create software that does what it should.
People often become frustrated with computers and other digital devices. At some point when using these devices, you are likely to become annoyed that the system did something you didn't want it to do, or you can't figure out how to get the computer to do what you want, but why is that? Humans made computers, so why are computers often so frustrating for humans to use?
Human-computer interaction (HCI) is about trying to make programs useful, usable, and accessible to humans. It goes way beyond choosing layouts, colors, and fonts for an interface. It's strongly influenced by the psychology of how people interact with digital devices, which means understanding many issues about how people behave, how they perceive things, and how they understand things so that they feel that a system is working to help them and not hinder them. By understanding HCI, developers are more likely to create software that is effective and popular. If you ask people if they have ever been frustrated using a computer system, you’ll probably get a clear message that HCI isn’t always done well.
This chapter explores user interfaces, usability, and overall user experience with technology.
In this lesson, students add variables to two different exemplary apps to keep track of a score or a count of some number of button clicks. The major topic is variable in scope and understanding the differences, benefits, and drawbacks, of using global versus local variables. This lesson focuses more on using global variables since in event-driven apps that’s what you need to keep track of data across multiple events.
The very basics of a simple if statement are also presented in this lesson, mostly to highlight the difference between the = and == operators. Finally, students are asked to apply what they’ve learned about variables, scope, and if statements, to make their own “clicker” game modeled after one of the exemplars they saw during the lesson.
Students will be able to:- use global variables to track numeric data in an app.- give a high-level explanation of what “variable scope” means.- debug problems related to variable scoping issues.- modify existing programs to add and update variables to track information.- create a multi-screen "clicker" game from scratch.
Note: You will need to create a free account on code.org before you can view this resource.