knowt logo

Chapter 7: Creative Development

Creativity in Computer Science

  • Computer Science is full of opportunities to be creative.

  • Creativity is a way to express your personal ideas, color combinations, fonts, wording, and images, among countless other options.

  • Entertainment software is abundant, for instance.

    • These must be creative for people to watch or play them.

    • From audio and visual files to mobile apps and everything in between, there are a lot of tools to utilize to create your own.

    • These programs enable the production and refinement of "rough sketches" to highly detailed, "finished" ones.

    • Software tools can be used to generate a sample or functioning prototype before investing time and money in a "ready to sell" version, depending on the desired objective.

Computing Innovations

  • Computer artifacts are anything created by a person using a computer.

    • These include, but are not limited to, apps, games, images, videos, audio files, 3D-printed objects, and websites.

  • There are many types of innovations, but computing innovations have to include a computer program as part of its functionality.

  • Computing innovations can be a physical device, such as the GPS, or a virtual one, such as MapQuest or Google Earth.

  • A computing innovation’s purpose can be to solve a problem, such as needing directions on how to get somewhere or something that is entirely new.

Collaboration

  • Collaboration has many benefits in the software development world.

    • By working with project sponsors to determine its goal and then closely with individuals who will use the product to understand its functioning, collaborative initiatives routinely save time and produce better results by providing different views and ideas throughout the development process.

    • Team members discussing and negotiating design ideas can create exciting meetings.

  • Consensus building is an important process and skill, and newly formed teams often go to workshops to develop or improve their communication and consensus building skill set.

  • Communication among team members is crucial as they program separate modules that will need to work together for the total solution.

  • Pair programming is one commonly used method to help facilitate collaboration as well as create correct code.

  • Technology makes it possible to collaborate with people in a variety of locations even if you are programming for yourself or a smaller organization.

  • Online tools such as shared documents to record progress, problems, and solutions can aid in collaboration, especially when team members are in different locations from each other.

Development Process

  • A development process helps individuals and teams bring their ideas to fruition.

  • Many people have a method or their own process to follow to get their creative juices flowing.

  • This can be a traditional process, similar to an outline or timeline a person might follow, or an approach that is more “trial and error” or exploratory in nature.

Key Steps for Successful Project Development

Investigation

  • To comprehend the issue, this phase involves research.

    • Without understanding your goals and constraints, you cannot build a good solution.

    • The sooner you discover any limits, the better you can plan for them.

  • This step also defines the project's goals.

    • Interview all program solution stakeholders to understand their needs.

    • Before writing code, understand the problem.

Design

  • This phase involves taking the requirements identified and creating some form and functionality around them.

  • The investigative phase provides information about what the project should do.

  • The design determines how the requirements will be met.

  • Brainstorming—This is a process of identifying as many ideas as possible without commenting or evaluating them until the process is done.

  • Storyboarding—This process is used in many fields, such as making videos as well as game design.

    • There are layouts available for use, and you identify the functionality that goes together and identify the data and where it comes from, how it is processed, and where it goes next.

  • Modules—Designers will often group features of an application that belong together into a module or component.

  • User interface—Designing how someone uses the software is the key to its success and the speed with which it may be adopted.

    • All of the interactions both into and out from each step that people will see and use are considered the “user interface.”

  • Testing strategy—It may sound strange to think of testing this early in the process.

    • Testing approach should be chosen before code is written.

    • From the investigation phase's requirements, you know the software's functions.

    • Ensure the testing plan meets all requirements.

  • Prototyping: Prototyping is a very effective process, especially when working with users on design or a new technology they will use.

    • It can be a mockup of the user interface screens to give users a starting point for suggestions.

Testing

Program Basics

  • Lines of code written in a programming language make up a software program.

  • The code can run or “execute” its specified instructions on a computer.

  • Sections of the code are sometimes referred to as a code segment.

  • Segments work together to perform a certain function.

  • Input is data provided to the program by someone using it, through a sensor, a file of data, a microphone, an image, or some other method.

  • Event-driven programming relies on an event to occur to trigger code to run.

  • Output can include writing to a file for use by another program, displaying a message or image on a device, playing a song or video, or printing a 3D object, among others.

Test Plans

  • All program functionality must be adequately tested as well to ensure program correctness.

  • This includes testing with valid and invalid data as well as “boundary” cases, which are those on the edge of program limitations.

  • Testing should also ensure that all features work in the way the user needs them to.

  • Debugging: Debugging means finding and correcting errors in your program.

Types of Errors

  • Syntax errors deal with things like punctuation or missing parentheses ( ) and typos.

    • These are identified when you try to compile your program and must be corrected before the program will run.

  • Runtime errors do not cause an error at compile time but occur when the program is executing.

  • Logic errors occur when the program produces unexpected results.

  • Overflow errors occur in computers when an integer is larger than the programming language can hold.

Reflection

  • An iterative development process is a repetitive one.

    • The steps are repeated several times throughout the project as new information is gathered or clarified, testing is performed and revisions are needed, or customers change their mind about what they need.

    • Feedback is a significant step in this process.

  • An incremental development process breaks the pieces of the program into smaller sections.

    • A section is coded, tested, modified, tested, and so on until it is working.

    • Then work begins on another section.

    • Once it is working, it is also tested for any interactions with sections of code already completed.

    • Then work begins on the next module, and the cycle continues.

    • The overall software system is built piece by piece, or incrementally, until completed.

Documentation

  • Program documentation is the “guide” to how the program is designed to work.

  • Documentation will be created as the program is being developed by the programmers to accurately record what a program is intended to do.

  • Well-named variables and procedures can be somewhat “self documenting” by describing their purpose, but do not take the place of additional documentation.

  • Documentation is so useful when you either return later to modify the code or a team member has to pick up your code and understand what it is doing to successfully make modifications.

Next Chapter:

Chapter 8: Data

I

Chapter 7: Creative Development

Creativity in Computer Science

  • Computer Science is full of opportunities to be creative.

  • Creativity is a way to express your personal ideas, color combinations, fonts, wording, and images, among countless other options.

  • Entertainment software is abundant, for instance.

    • These must be creative for people to watch or play them.

    • From audio and visual files to mobile apps and everything in between, there are a lot of tools to utilize to create your own.

    • These programs enable the production and refinement of "rough sketches" to highly detailed, "finished" ones.

    • Software tools can be used to generate a sample or functioning prototype before investing time and money in a "ready to sell" version, depending on the desired objective.

Computing Innovations

  • Computer artifacts are anything created by a person using a computer.

    • These include, but are not limited to, apps, games, images, videos, audio files, 3D-printed objects, and websites.

  • There are many types of innovations, but computing innovations have to include a computer program as part of its functionality.

  • Computing innovations can be a physical device, such as the GPS, or a virtual one, such as MapQuest or Google Earth.

  • A computing innovation’s purpose can be to solve a problem, such as needing directions on how to get somewhere or something that is entirely new.

Collaboration

  • Collaboration has many benefits in the software development world.

    • By working with project sponsors to determine its goal and then closely with individuals who will use the product to understand its functioning, collaborative initiatives routinely save time and produce better results by providing different views and ideas throughout the development process.

    • Team members discussing and negotiating design ideas can create exciting meetings.

  • Consensus building is an important process and skill, and newly formed teams often go to workshops to develop or improve their communication and consensus building skill set.

  • Communication among team members is crucial as they program separate modules that will need to work together for the total solution.

  • Pair programming is one commonly used method to help facilitate collaboration as well as create correct code.

  • Technology makes it possible to collaborate with people in a variety of locations even if you are programming for yourself or a smaller organization.

  • Online tools such as shared documents to record progress, problems, and solutions can aid in collaboration, especially when team members are in different locations from each other.

Development Process

  • A development process helps individuals and teams bring their ideas to fruition.

  • Many people have a method or their own process to follow to get their creative juices flowing.

  • This can be a traditional process, similar to an outline or timeline a person might follow, or an approach that is more “trial and error” or exploratory in nature.

Key Steps for Successful Project Development

Investigation

  • To comprehend the issue, this phase involves research.

    • Without understanding your goals and constraints, you cannot build a good solution.

    • The sooner you discover any limits, the better you can plan for them.

  • This step also defines the project's goals.

    • Interview all program solution stakeholders to understand their needs.

    • Before writing code, understand the problem.

Design

  • This phase involves taking the requirements identified and creating some form and functionality around them.

  • The investigative phase provides information about what the project should do.

  • The design determines how the requirements will be met.

  • Brainstorming—This is a process of identifying as many ideas as possible without commenting or evaluating them until the process is done.

  • Storyboarding—This process is used in many fields, such as making videos as well as game design.

    • There are layouts available for use, and you identify the functionality that goes together and identify the data and where it comes from, how it is processed, and where it goes next.

  • Modules—Designers will often group features of an application that belong together into a module or component.

  • User interface—Designing how someone uses the software is the key to its success and the speed with which it may be adopted.

    • All of the interactions both into and out from each step that people will see and use are considered the “user interface.”

  • Testing strategy—It may sound strange to think of testing this early in the process.

    • Testing approach should be chosen before code is written.

    • From the investigation phase's requirements, you know the software's functions.

    • Ensure the testing plan meets all requirements.

  • Prototyping: Prototyping is a very effective process, especially when working with users on design or a new technology they will use.

    • It can be a mockup of the user interface screens to give users a starting point for suggestions.

Testing

Program Basics

  • Lines of code written in a programming language make up a software program.

  • The code can run or “execute” its specified instructions on a computer.

  • Sections of the code are sometimes referred to as a code segment.

  • Segments work together to perform a certain function.

  • Input is data provided to the program by someone using it, through a sensor, a file of data, a microphone, an image, or some other method.

  • Event-driven programming relies on an event to occur to trigger code to run.

  • Output can include writing to a file for use by another program, displaying a message or image on a device, playing a song or video, or printing a 3D object, among others.

Test Plans

  • All program functionality must be adequately tested as well to ensure program correctness.

  • This includes testing with valid and invalid data as well as “boundary” cases, which are those on the edge of program limitations.

  • Testing should also ensure that all features work in the way the user needs them to.

  • Debugging: Debugging means finding and correcting errors in your program.

Types of Errors

  • Syntax errors deal with things like punctuation or missing parentheses ( ) and typos.

    • These are identified when you try to compile your program and must be corrected before the program will run.

  • Runtime errors do not cause an error at compile time but occur when the program is executing.

  • Logic errors occur when the program produces unexpected results.

  • Overflow errors occur in computers when an integer is larger than the programming language can hold.

Reflection

  • An iterative development process is a repetitive one.

    • The steps are repeated several times throughout the project as new information is gathered or clarified, testing is performed and revisions are needed, or customers change their mind about what they need.

    • Feedback is a significant step in this process.

  • An incremental development process breaks the pieces of the program into smaller sections.

    • A section is coded, tested, modified, tested, and so on until it is working.

    • Then work begins on another section.

    • Once it is working, it is also tested for any interactions with sections of code already completed.

    • Then work begins on the next module, and the cycle continues.

    • The overall software system is built piece by piece, or incrementally, until completed.

Documentation

  • Program documentation is the “guide” to how the program is designed to work.

  • Documentation will be created as the program is being developed by the programmers to accurately record what a program is intended to do.

  • Well-named variables and procedures can be somewhat “self documenting” by describing their purpose, but do not take the place of additional documentation.

  • Documentation is so useful when you either return later to modify the code or a team member has to pick up your code and understand what it is doing to successfully make modifications.

Next Chapter:

Chapter 8: Data