curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10....

27
AOIT Introduction to Programming Lesson 4 Program Design and Problem Solving Teacher Resources Resource Description Teacher Resource 4.1 Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py, half_circle.py (separate ZIP file) Teacher Resource 4.2 Presentation and Notes: Software Development Cycle (includes separate PowerPoint file) Teacher Resource 4.3 Assessment Criteria: Snowman Program Package Teacher Resource 4.4 Guide: Teaching Reflection Teacher Resource 4.5 Reflection Prompts (separate PowerPoint slide) Teacher Resource 4.6 Key Vocabulary: Program Design and Problem Solving Teacher Resource 4.7 Bibliography: Program Design and Problem Solving Copyright © 2009–2016 NAF. All rights reserved.

Transcript of curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10....

Page 1: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to Programming

Lesson 4Program Design and

Problem SolvingTeacher Resources

Resource Description

Teacher Resource 4.1 Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py, half_circle.py (separate ZIP file)

Teacher Resource 4.2 Presentation and Notes: Software Development Cycle (includes separate PowerPoint file)

Teacher Resource 4.3 Assessment Criteria: Snowman Program Package

Teacher Resource 4.4 Guide: Teaching Reflection

Teacher Resource 4.5 Reflection Prompts (separate PowerPoint slide)

Teacher Resource 4.6 Key Vocabulary: Program Design and Problem Solving

Teacher Resource 4.7 Bibliography: Program Design and Problem Solving

Copyright © 2009–2016 NAF. All rights reserved.

Page 2: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Teacher Resource 4.2

Presentation Notes: Software Development CycleBefore you show this presentation, use the text accompanying each slide to develop presentation notes. Writing the notes yourself enables you to approach the subject matter in a way that is comfortable to you and engaging for your students. Make this presentation as interactive as possible by stopping frequently to ask questions and encourage class discussion.

This presentation defines the software development cycle and explains why it is needed for a project of any size.

It discusses and illustrates two process models, the waterfall model and the iterative (or incremental) model, and it explains why the iterative model is generally preferred.

Most software organizations implement the iterative model using a team approach.

The presentation explains how teams that make up a typical software organization work and shows how the design and implementation methodology in this class uses a simplified team model.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 3: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Ever since the first software projects that required more than one or two programmers, formal software development processes have existed. Any project with a number of people can be chaotic unless everyone on the team (or teams) knows exactly what needs to be done, who will do what, and when the final project needs to be delivered. In an environment as complex as computer programming, the problems would be intolerable without a structured process.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 4: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Which model is likely to flow downward? Which model is likely to be circular?

An iterative model is a repeating cycle.

An iterative software development model builds a product one “release” at a time. A given release might not have all the new features or bug fixes that customers would like to see, but each release is an improvement over the last one and can be done relatively quickly. A popular software development methodology based on the iterative model is the agile development process.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 5: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Steps in the waterfall model:

1. Specify the problem (write the problem statement).

2. Specify the requirements and analyze them (that is, try to understand what needs to be done).

3. Design the solution:

4. Write the algorithm.

5. Write pseudocode and apply stepwise refinement to add detail.

6. Create a flowchart for the solution.

7. Implement the solution (write the code).

8. Verify (test) the solution.

9. Deploy (deliver to the intended audience) the solution, and maintain it (for example, fix any bugs found after deployment).

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 6: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Historically, software organizations assumed they would have only a single major release of their product (with possibly additional minor releases). The organizations found that they often needed to do major changes after a product had been in the field for a while, and their processes and organizational structure didn’t allow for change of the magnitude that was required.

The waterfall process could still be suitable for small and simple products, or for products that are expected to have only one release. Even when using this waterfall model, it is very common for organizations to work through the steps and still go back and make corrections.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 7: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

The iterative software development model is a circular or cyclic process developed in response to the linear nature of the waterfall model. It allows the software developers to take advantage of what is learned during the development of early incremental versions of the software. Here are the steps:

1. Create the problem statement (for a commercial software organization, whatever is known today about what customers want and will buy).

2. Add detail in the form of requirements.

3. Begin initial planning. Create and assemble the software development team and other teams. Create a project schedule.

4. Design the program. Decide which “chunks” of code to write and in what order to write them.

5. Prototype one or more parts of the solution to test the validity of the design. A prototype is a simple version of the final program.

6. Implement the solution (code the program) by carrying out the design.

7. Test, fix bugs, verify the fix, and test again.

8. Deploy the initial solution by making it available to customers.

9. Do product maintenance, as needed.

10. Evaluate the success of the solution.

Go back to step 1. Feed the results of the evaluation into a new or revised problem statement and list of requirements. Keep repeating the process (that is, iterate) as long as the product is being sold and used.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 8: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

The agile development process is a popular software development methodology based on the iterative model. In this process, requirements and solutions evolve through collaboration between cross-functional teams.

The agile process requires a disciplined project management process, with frequent discussion, inspection, and adaptation. Collaboration and teamwork are important because team members work in their area of specialization, but they may also be called on to work on other tasks. Each team member is held accountable, and there is an agreed-to set of best practices. The key objective is rapid delivery of a high-quality product that aligns customer needs with organizational goals.

Agile development originated in the software code development world, but it is equally applicable to documentation development, both in software and other domains.

Image retrieved from https://commons.wikimedia.org/wiki/File:Agile_Software_Development_methodology.jpg on April 5, 2012, and reproduced here under the terms of the Creative Commons Attribution-ShareAlike 3.0 Unported license (http://creativecommons.org/licenses/by-sa/3.0/deed.en). Original poster by VersionOne, Inc.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 9: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Most professional software organizations now use some variation on the iterative software development model.

Programmers are often encouraged to prototype the most complex pieces of code so that these pieces can be reviewed and tested early in the cycle.

New code and major revisions are broken down into manageable increments.

Smaller and more frequent releases allow programming teams to consider product changes that are especially important to customers.

The iterative model allows programming teams to even reconsider the original problem statement if customer needs and preferences change over time.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 10: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

The team approach to software development allows different people in a larger organization to be working on different parts of the process at the same time. It also allows them to work on different product releases at the same time.

The marketing team writes requirements that originate with customers who purchase and use the software product.

The management team creates the project plan and schedule and assigns individual and team responsibilities.

The architecture and design team creates the design for the entire product and decides how the “chunks” of code that make up the project fit with each other and how they need to be written.

The software development team writes the pieces of code and tests them individually (this is often called unit testing).

The test team starts testing as the pieces of code begin to be linked together. They complete testing with a “system test” of the entire product. Through this process they find and report bugs to the developers. The developers fix the bugs and replace the chunks of code where the bugs occurred.

The information development team writes the product documentation.

The customer support team helps customers install, set up, and use the software product, and the team reports bugs found in the field for the software developers and information developers to fix.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 11: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

The way our programming pairs work together, and the interaction they have with other programming pairs (for example, reviewing each other’s designs and coded programs), is something like the way professional programming teams operate.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 12: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

The projects we’ve done so far in class are not as complex as a typical professional programming project. Nevertheless, we are using a simplified version of the iterative model. The Snowman project is a good example.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 13: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

The Snowman project goes through two “iterations” of this process. That is, it goes around the entire circle twice.

You might want to look at this slide at the end of Lesson 4. By then you should understand the process very well!

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 14: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Understanding and following the software development process in this class builds skills useful in the professional programming environment.

Presentation notes

Copyright © 2009–2016 NAF. All rights reserved.

Page 15: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Teacher Resource 4.3

Assessment Criteria: Snowman Program PackageStudent Names: ______________________________________________________________

Date: _______________________________________________________________________

Using the following criteria, assess whether the students met each one.

Met Partially Met

Didn’t Meet

Program Package: Contains all components: (1) snowman design document, (2) printout of the complete Snowman program, (3) completed peer evaluation checklist, and (4) snowman_advanced.py program in the Lesson 4 folder.

□ □ □

Design Document: The problem statement clearly states what the program is supposed to do. □ □ □Design Document: The requirements can be met with the tools available in this course at this time. □ □ □Design Document: The algorithm represents a complete solution to the problem statement. □ □ □Design Document: The algorithm contains an appropriate level of detail for the target audience and contains both major and minor steps in the correct order.

□ □ □

Design Document: The document is neat and legible and does not contain spelling or grammatical errors. □ □ □Program Printout: The comments accurately describe the Python statements and are detailed enough so that peer students can understand the entire program.

□ □ □

Program Printout: The comments do not contain spelling or grammatical errors. □ □ □Python Code: The program meets the requirements stated in the design document. □ □ □Python Code: The program runs without errors. □ □ □Additional Comments:

_____________________________________________________________________________

_____________________________________________________________________________

Copyright © 2009–2016 NAF. All rights reserved.

Page 16: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Teacher Resource 4.4

Guide: Teaching ReflectionThis guide provides ideas for improving students’ ability to reflect on their learning. It includes specific suggestions for helping students reflect on meeting the learning objectives of a lesson. Students participating in NAFTrack Certification will benefit from practicing reflective writing, since they will respond to reflection prompts as part of the NAFTrack Certification process.

All thinking requires some type of reflection in order for learning to take place. Reflection is a cluster of skills that involves observing, questioning, and putting ideas and experiences together to give a fresh meaning to them all. The reflection activities throughout this course bring students a sense of ownership of what they have learned and a better understanding of themselves and their abilities.

Build your students’ reflection skills by starting with easier reflection questions that lead to more complex ones. The list below, based on Bloom’s Taxonomy, helps students break down what they need to think about so that they gain confidence and strengthen their metacognition. Because each question takes the previous answer a step further, students can come up with answers to each question and eventually wind up with everything they need to work with to craft an answer for the highest-level reflection questions.

Learning Levels (From Lower to Higher Order) Examples of Reflection Questions

Remembering (retrieving, recognizing, recalling) What can I remember? What did I do?

Understanding (constructing meaning) What do I think it means? What conclusions did I come to? What are my takeaways? What did I get out of it?

Applying (extending learning to a new setting) How could I use this [knowledge, experience] again? In what new way could this be valuable?

Analyzing (breaking material apart, seeing how the parts fit together and what the overall purpose is)

What are the different parts of this [experiment, assignment, project, experience]? As a whole, what is the purpose/main idea?

Evaluating What has this [project, assignment, experience, experiment] taught me about myself—my strengths, my challenges? What am I proud of? What could I do better next time? What are my contributions? I used to think…but now I think….

Creating Is there another, better way to put the pieces of this [project, assignment, experience, experiment] together? What could I [create, write, plan] next?

Another source of ideas for teaching reflection: http://www.visiblethinkingpz.org/

Follow these tips to guide students in responding to reflection questions on learning objectives:

Copyright © 2009–2016 NAF. All rights reserved.

Page 17: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

● Read the reflection question aloud to the class and have students rephrase the question using their own words.

● Explain that they should use the reflection question to describe what they have learned during the lesson as it relates to the learning objective.

● Review the meaning of the learning objective before students get started on their reflections.

● Refer to the examples below, which represent good responses to these types of reflection questions.

ExampleBelow is an example learning objective with example student reflection prompts and responses. Although students only encounter the actual NAFTrack Certification prompts once they are on the NAFTrack Certification assessment platform, examples like these give students a sense of the type of reflection they will be asked to engage in. You can copy and paste these examples into a Word document for students to review and discuss as a class. You can add more prompts for students to answer, or customize this content to best suit your students and your goals for them.

Learning objective

● Identify ways that computers impact our everyday lives at home, school, and work

Prompts and responsesThink of the assignments that you completed during this lesson. Choose one to use as your work sample as you answer the questions below.

● Explain how completing this work sample helped you to meet this learning objective. Describe the ideas and skills that you used.

1. I chose the short essay that I wrote as my work sample. It helped me meet this learning objective because it covers the four main ways that information technology and computers affect my daily life and future career. My essay explains how supercomputers have become a part of every industry from the technology and medical fields, to agriculture, construction, and even national defense. To write my essay, I learned about many ideas that were new to me. I learned about emerging technologies and how the use of laptops, smartphones, and tablets have changed the way people learn and work. The skills I used are writing and researching. I had to practice putting my research into my own words so that I wouldn’t plagiarize. Being able to organize information is another skill I used.

● Describe what you could improve about your work sample.

2. I tried really hard to make my essay organized, but now I see ways I could have laid information out to make it easier to read. I don’t think I wrote enough details about how technology impacts my life personally. It would have been good to include more details about the technology I use daily and what I’ll need to learn for my future career choice.

Promoting Reflection in the ClassroomYou can also use the following sample questions to promote a culture of reflection in your classroom—during class and small-group oral reflections, during PowerPoint presentations, and when students are having a discussion and you want to draw them out more.

Copyright © 2009–2016 NAF. All rights reserved.

Page 18: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

● Can you discuss that more?

● Why do you think that happens?

● What evidence do you have to support that?

● Do you see a connection between this and _________?

● Does this remind you of anything else?

● How else could you approach that?

● How could you do that?

Copyright © 2009–2016 NAF. All rights reserved.

Page 19: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Teacher Resource 4.6

Key Vocabulary: Program Design and Problem Solving

Term Definition

agile development process A group of methodologies that focus on rapid iterative and incremental development, introduced by a document called the Agile Manifesto in 2001. In recent years, the process has gained in popularity with many software development groups.

algorithm Instruction or set of instructions explaining how to solve a problem.

audience The intended users of a computer program or program package.

coding cycle The process of writing code, running it, and debugging it.

comment Note in a computer program indicating the purpose and function of a complete program, a section of the program, or an individual line of code. Comments are always delimited (that is, “set off”) by a special character before (and sometimes also after) the text.

Example (Python): # This program draws a red circle.

deliverable A completed computer program, program package, or software product, ready to be delivered to the intended audience. In a professional programming environment, a program package may include items such as release notes, installation instructions, and usage documentation (both for the external customer as well as for the follow-on programming team that will work on the next version of the program).

deployment Delivery of a software product to the intended audience.

design cycle The process of creating a model of how computer code can be written to provide the functionality or features to solve the problem described in the problem statement and requirements list.

design document A description of how code will be structured and written to provide the necessary functionality described in the problem statement and requirements. The document also serves to record agreement by the participating groups and individuals on what the code will and will not do.

extensible design Computer program design that considers and allows for future work beyond the current version of the program.

Copyright © 2009–2016 NAF. All rights reserved.

Page 20: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

feature The functionality of a software project called for in the problem statement and requirements.

iterative (incremental) process

One model for the software development process. A cyclic process.

natural-language procedure

A description of an algorithm in a natural language (such as English).

peer evaluation A review of all or part of a software project by fellow software programmers.

problem statement A generic description of the problem to be solved by a software project. It describes the output to be produced but not the specifics of how the output is to be produced by the software (that is, what is to be done but not how it is to be done).

program development cycle

All the steps in the process of designing, coding, testing, debugging, and deploying a software project.

prolog Comments at the beginning of a source program that provide general information about it. Information may include who wrote the program, when it was written, what it does, and copyright notices, if required. Such comments are sometimes called “source code comments” or “source code documentation,” and they are important in ensuring that code is reusable. In many software engineering organizations, the content and format of the prolog is consistent across groups and projects.

prototype Formal definition: Original type, form, or instance of something serving as a typical example, basis, or standard for other things of the same category.

In programming, a prototype, typically created early in a programming project, serves as a model for later versions of the program created as the software development cycle progresses. One important advantage of prototyping is to find and work through difficult programming problems before too much is invested in a particular program design.

A prototype is sometimes called a proof of concept. Early visibility of a program design in the form of a running prototype gives users an idea of what the final system will look like and gives programmers some reassurance that the design can be implemented as expected.

release A single deployment of a software product.

requirement A statement indicating an element, a feature, or functionality that must be included in a computer program.

Copyright © 2009–2016 NAF. All rights reserved.

Page 21: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Example (snowman.py program): The arms must point downward at 45 degrees.

revision cycle The process of incorporating review comments about a document into revisions of a later version of the document.

software development process

The key “big picture” steps needed to produce a computer program that solves the original problem and meets the stated requirements.

Example: (1) Write the problem statement, (2) write the requirements, (3) create the design document, (4) review and approve the design document (and so on).

stepwise refinement A version of an algorithm or procedure that adds more detail by breaking steps into multiple smaller steps.

test cycle The process of testing software, finding bugs in it, fixing the bugs, and then testing it again to verify that the bugs have been fixed.

waterfall process One model for the software development process. A linear process, suitable for small and simple products, or products that are expected to have only one release.

Copyright © 2009–2016 NAF. All rights reserved.

Page 22: curriculum.naf.orgcurriculum.naf.org/packaged/assets/downloads/technolog…  · Web view2019. 10. 18. · Python Programs: snowman_basic.py, snowman_advanced.py, line.py, square.py,

AOIT Introduction to ProgrammingLesson 4 Program Design and Problem Solving

Teacher Resource 4.7

Bibliography: Program Design and Problem SolvingThe following sources were used in the preparation of this lesson and may be useful for your reference or as classroom resources. We check and update the URLs annually to ensure that they continue to be useful.

PrintDawson, Michael. Python Programming, 2nd ed. Boston: Thompson Course Technology PTR, 2006.

Donaldson, Toby. Python, 2nd ed. Berkeley, CA: Peachpit Press, 2009.

Downey, Allen, Jeffrey Elkner, and Chris Meyers. How to Think Like a Computer Scientist: Learning with Python. Wellesley, MA: Green Tea Press, 2002.

Guzdial, Mark. Introduction to Computing and Programming in Python (A Multimedia Approach). Upper Saddle River, NJ: Pearson Education, 2005.

Hetland, Magnus Lie. Beginning Python: From Novice to Professional, 2nd ed. Berkeley, CA: Apress, 2008.

Lutz, Mark. Learning Python, 3rd ed. Sebastopol, CA: O’Reilly Media, 2008.

Sande, Warren, and Carter Sande. Hello World!: Computer Programming for Kids and Other Beginners. Greenwich, CT: Manning Publications, 2009.

Online“Agile Software Development.” Wikipedia, http://en.wikipedia.org/wiki/Agile_software_development (accessed December 11, 2014).

“Iterative and Incremental Development.” Wikipedia, http://en.wikipedia.org/wiki/Iterative_and_incremental_development (accessed December 11, 2014).

“Natural Language Processing.” Wikipedia, http://en.wikipedia.org/wiki/Natural_language_processing (accessed December 11, 2014).

“Software Design.” Wikipedia, http://en.wikipedia.org/wiki/Software_design (accessed December 11, 2014).

“Waterfall Model.” Wikipedia, http://en.wikipedia.org/wiki/Waterfall_model (accessed December 11, 2014).

Copyright © 2009–2016 NAF. All rights reserved.