Microsoft Office 2003
Computer Concepts
Chapter Twelve: Computer Programming
A Guide to this Instructor’s Manual:
We have designed this Instructor’s Manual to supplement and enhance your teaching experience through classroom activities and a cohesive chapter summary.
This document is organized chronologically, using the same heading in blue that you see in the textbook. Under each heading you will find (in order): Lecture Notes that summarize the section, Figures and Boxes found in the section (if any), Teacher Tips, Classroom Activities, and Lab Activities. Pay special attention to teaching tips, and activities geared towards quizzing your students, enhancing their critical thinking skills, and encouraging experimentation within the software.
In addition to this Instructor’s Manual, our Instructor’s Resources CD also contains PowerPoint Presentations, Test Banks, and other supplements to aid in your teaching experience.
For your students:
Our latest online feature, CourseCasts, is a library of weekly podcasts designed to keep your students up to date with the latest in technology news. Direct your students to , where they can download the most recent CourseCast onto their mp3 player. Ken Baldauf, host of CourseCasts, is a faculty member of the Florida State University Computer Science Department where he is responsible for teaching technology classes to thousands of FSU students each year. Ken is an expert in the latest technology and sorts through and aggregates the most pertinent news and information for CourseCasts so your students can spend their time enjoying technology, rather than trying to figure it out. Open or close your lecture with a discussion based on the latest CourseCast.
Table of Contents
|Chapter Objectives |2 |
|Section A: Programming Basics |2 |
|Section B: Procedural Programming |4 |
|Section C: Object-Oriented Programming |7 |
|Section D: Declarative Programming |10 |
|Section E: Secure Programming |12 |
|Glossary of Key Terms |14 |
Chapter Objectives
Students will have mastered the material in Chapter Twelve when they can:
• Describe the roles of computer programmers and software engineers
• Categorize today’s popular computer programming languages by generation and paradigm
• Explain the process of planning, coding, and testing a computer program
• Describe the advantages and disadvantages of generic text editors, program editors, and VDEs for coding computer programs
• Define the term algorithm and describe how it relates to procedural programming
• Identify various tools that programmers use to plan programs, such as flowcharts, structured English, pseudocode, UML diagrams, and decision tables
• Follow the control structures for a procedural program
• Describe the major concepts of object-oriented programming, such as objects, classes, inheritance, messages, methods, polymorphism, and encapsulation
• Create some basic facts and rules using Prolog syntax
• Describe how a declarative language, such as Prolog, satisfies goals by instantiation
• Describe vulnerabilities in software program code and explain the steps programmers can take to write more secure code
• List steps that consumers can take to avoid vulnerabilities that exist in software with code defects
SECTION A: PROGRAMMING BASICS (674)
Background
LECTURE NOTES
• Discuss why students should learn basic facts about programming.
• Note word processing software exceeds 750,000 lines of code. Discuss how new features increase this size and increase the complexity of the code.
Computer Programming and Software Engineering
LECTURE NOTES
• Discuss that a computer program is a set of step-by-step instructions that tell a computer how to solve a problem. Have the student create a set of step-by-step instructions to solve a very simple problem like opening their book and finding this chapter.
• Explain that the first computer programs were written in binary code and thus computer programs are often referred to as code.
• Use Figure 12-1 to discuss a simple computer program.
• Have the student calculate how many days of coding a program would have to spend to write Vista with 50 million lines of code at 20 lines per day. Could it be written by one person in their lifetime?
• Discuss the difference between computer programmers and software engineers.
FIGURES
• Figure 12-1, Figure 12-2
CLASSROOM ACTIVITIES
1. Review binary code. Have the student write their name in binary to get an idea of the complexity of writing a program in binary.
2. Quick Quiz:
• The average person can only write, test and document __________ lines of code in one day. (Answer: 20.)
• True or False. Software Engineers have the skills to design, code, test and document software but they tend to focus on designing and testing activities. (Answer: True.)
Programming Languages and Paradigms
LECTURE NOTES
• Discuss the definition of a programming language.
• Using Figure 12-3, discuss keywords and parameters. Have the student imagine what other keywords there might be such as read.
• Discuss the categories of programming languages.
• Discuss how languages are categorized by low-level and high-level. Ask the students to discuss the factors that place a language in one of these categories. Do the same for program generation.
• Look at Figure 12-7 and discuss the various languages.
• Discuss what a programming paradigm is using Figure 12-8.
FIGURES
• Figure 12-3, Figure 12-4, Figure 12-5, Figure 12-6, Figure 12-7, and Figure 12-8
CLASSROOM ACTIVITIES
• As an outside the class activity, have the students categorize each of the languages listed in Figure 12-7 by generation. Compare the categories in class.
Quick Quiz:
• Third generation languages used easy-to-remember command words. One third generation language used extensively for business was __________. (Answer: COBOL.)
• Prolog is an example of a___________ generation language. (Answer: fifth)
Programming Planning
LECTURE NOTES
• Discuss how you must develop a method for solving a problem whether it is by a computer or by a human.
• Discuss the characteristics of a good problem statement.
• Discuss the difference between an assumption, known information, a variable and a constant.
• Discuss the difference in the predictive methodology and the agile methodology.
FIGURES
• Figure 12-9, Figure 12-10
CLASSROOM ACTIVITIES
1. Assign a Project: Have the students write a problem statement for a problem of your choice. Perhaps use something that is happening on campus or on the news.
Program Coding
LECTURE NOTES
• Discuss a text editor. Talk about how a word processor and a text editor are not the same. Demonstrate how a text editor can be used to enter code. Show how the editor does not do any automatic indention or coloring.
• Discuss a program editor and demonstrate with the same program.
• If available do the same with a VDE.
FIGURES
• Figure 12-11, Figure 12-12, Figure 12-13, Figure 12-14
CLASSROOM ACTIVITIES
• 1. Write a small program in an IDE and demonstrate how it works.
Program Testing and Documentations
LECTURE NOTES
• Discuss syntax and logic errors. Show an example of each.
• Discuss a debug tool. Demonstrate how it works.
• Discuss documentation and the value and need of it.
FIGURES
• Figure 12-15, Figure 12-16
Program Tools
LECTURE NOTES
• Discuss an SDK and an IDE. If you have an IDE demonstrate how it is used.
• Discuss what components are and how they are used.
• Discuss an API. Show them the Java API as an example.
FIGURES
• Figure 12-17, Figure 12-18
SECTION B: PROCEDURAL PROGRAMMING (689)
Algorithms (689)
LECTURE NOTES
• Explain that algorithms are a series of steps for carrying out a task that can be written down and implemented.
• Walk through the exercise shown on page 699. Show the changes in the screen output and N. You might right a program that would actually run the code and place print statements showing the changes to the variable N.
• Use Figure 12-20 to show the steps contained in one of the pizza program algorithms. Compare this to Figure 12-21, which extends these steps and provides more detail.
FIGURES
• Figure 12-19, Figure 12-20, Figure 12-21
CLASSROOM ACTIVITIES
1. Group Activity: Divide the class into two groups and have each group write an algorithm for a simple task that can be completed in the classroom. Have the groups exchange algorithms and attempt to carry out each other’s instructions. Were any steps left out? Was each group able to successfully complete the algorithm?
2. Quick Quiz:
• A(n) _________ is a set of steps for carrying out a task that can be written down and implemented. (Answer: algorithm.)
• True/False: The traditional approach to programming uses a procedural paradigm. (Answer: True.)
• True/False: Algorithms are usually written in a format that is specific to a particular programming language. (Answer: False.)
Expressing an Algorithm (692)
LECTURE NOTES
• Introduce pseudocode using Figure 12-22, which shows the pizza problem algorithm expressed in pseudocode.
• Explain that as with structured English, there are variations on the conventions used to write pseudocode, but one standard convention has the following features:
• A limited set of non-computer language specific command words are used, e.g., display, input, IF...THEN, output.
• The command words are often indicated in bold.
• An arrow symbol (() indicates that the value of a variable changes, e.g., SquareInches1 ( Size1 * Size1.
• The = symbol is used in logical expressions, e.g., If Shape1 = “round”.
• The commands associated with an IF...THEN statement or other control structures are indented.
• Output messages are surrounded by quotes.
• Figure 12-23 shows a flowchart for the pizza program. Review the flowchart symbols before you walk through the program flow.
• Discuss what a walkthrough is and its importance.
• Figure 12-24 shows how to conduct a walkthrough and check the pseudocode for the pizza program.
FIGURES
• Figure 12-22, Figure 12-23, Figure 12-24
CLASSROOM ACTIVITIES
1. Assign a Project: Have students sketch a flowchart for the algorithm they created in the previous section. Have them make sure to correct any errors that were discovered.
2. Quick Quiz:
• _________ is a notational system for algorithms that has been described as a mixture of English and your favorite programming language. (Answer: Pseudocode.)
• Before finalizing the algorithm for a computer program, you should perform what? (Answer: A walkthrough.)
Sequence, Selection, and Repetition Controls (695)
LECTURE NOTES
• Discuss control structures.
• Compare a sequence control, Figure 12-25, which changes the order of instructions the computer performs, to a selection control (Figure 12-27), which tells the computer what to do based on whether a condition is true or false.
• Explain that repetition controls are also called loops or iterations, and repeat one or more instructions until a condition is met. The flowchart in Figure 12-28 demonstrates the looping process.
• Discuss which types of controls you might use in the pizza program—sequence, selection, or repetition—and for what purpose. Students may need to use all types within the flowchart or program.
TEACHER TIP
Students might need some help with the sections on control structures, depending on the depth of understanding you wish them to develop. The text is written with the goal that students will be able to list the three types of control structures (sequence, selection, and repetition controls) and describe the purpose of each.
FIGURES
• Figure 12-25, Figure 12-26, Figure 12-27, Figure 12-28, Figure 12-29
CLASSROOM ACTIVITIES
Quick Quiz:
• During ____________ the first instruction in the program is executed first, then the second instruction, and so on, to the last instruction in the program. (Answer: sequential execution.)
• True/False: Control structures are instructions that specify the sequence in which a program is executed. (Answer: True.)
• List at least two of the most frequently used repetition commands. (Answers: FOR…NEXT, DO…WHILE, DO…UNTIL, WHILE…WEND.)
Procedural Languages and Applications (700)
LECTURE NOTES
• Discuss what makes a program a procedural language.
• List some of the most popular procedural languages.
• Review the advantages and disadvantages of the procedural paradigm as discussed on page 701.
TEACHER TIP
There is a tendency to classify a computer language into a single category— statements such as “COBOL is a procedural language” and “BASIC is an interpreted language” are typical. However, a computer language has many characteristics. For example, BASIC provides high-level commands, is usually interpreted, and is procedural. The approach in Chapter 12 is to apply characteristics to computer languages, rather than to attempt to classify them into a single category. You should reinforce this idea for your students.
SECTION C: OBJCET-ORIENTED PROGRAMMING (702)
Objects and Classes (702)
LECTURE NOTES
• Explain that the object-oriented paradigm is based on the idea that the solution for a problem can be visualized in terms of objects that interact with each other.
• Point out that an object is defined as a unit of data that represents an abstract or real-world entity.
• Examples of objects are shown in Figure 12-30.
• Distinguish between an object and a class. There can be many objects but in order to organize similar objects, a class is created. A class is a template for a group of objects with similar characteristics.
• Discuss class attributes and how they are used to describe the object. Review the examples in Figure 12-31. Discuss that any of these can be public or private based on the availability of the object.
• Discuss the data types associated with the class and review the UML (unified modeling language) diagram in Figure 12-32. The class is named, the data types are defined, and the type of attribute is designated.
FIGURES
• Figure 12-30, Figure 12-31, Figure 12-32
CLASSROOM ACTIVITIES
1. Class Discussion: Display the class attribute data types on an overhead monitor or whiteboard and have students describe each one and provide an example of each one. Refer to Figure 12-31 if necessary. Discuss what kinds of attributes the pizza program might have and what type of variables those would be.
2. Quick Quiz:
• A(n) _________ is a unit of data that represents an abstract or real-world entity, such as a person, place, or thing. (Answer: object.)
• True/False: The object-oriented paradigm is based on the idea that the solution for a problem can be visualized in terms of objects that interact with each other. (Answer: True.)
• In terms of object-oriented programming, what is a class? (Answer: A template for a group of objects with similar characteristics.)
Inheritance (704)
LECTURE NOTES
• Explain that in object-oriented terms, inheritance refers to passing certain characteristics from one class to other classes. Compare this to passing genes from a parent to a child. Ask where they got the color of their eyes for example. Ask if they have any special talents that one of their parents has such as swimming or playing ball. This process produces new classes with inherited attributes, creating a superclass and subclasses.
• Review the hierarchical structure in Figure 12-33.
TEACHER TIP
Consider using examples other than the pizza program to demonstrate the use of inheritance. For example, if a program needs to compute a shipping cost based on the weight of the items they will need the item and its weight. The weight will be added to other items’ weight producing a total weight. This total weight will then be used in a calculation to determine the shipping cost.
FIGURES
• Figure 12-33, Figure 12-34
CLASSROOM ACTIVITIES
1. Quick Quiz:
• ____________ refers to passing certain characteristics from one class to other classes. (Answer: Inheritance.)
• True/False: A subclass is any class from which attributes can be inherited. (Answer: False.)
• True/False: A subclass is any class that inherits attributes from a superclass. (Answer: True.)
• What is the set of superclasses and subclasses that are related to each other called?. (Answer: Class hierarchy.)
Methods and Messages (705)
LECTURE NOTES
• Explain that a method is a segment of code that defines an action.
• A method can perform a variety of tasks, such as exiting a program, a calculation or producing output.
• Point out that methods can be defined along with the class they affect.
• Discuss that methods are activated by call statements.
• Define polymorphism and review the diagram in Figure 12-37 to identify the use of polymorphism. Explain that Java knows which method to use based on the type of pizza or the class.
TEACHER TIP
This section uses Java programming code as examples. Most students at this level have not had any programming experience so this may be difficult to understand at this time.
FIGURES
• Figure 12-35, Figure 12-36, Figure 12-37, Figure 12-38
CLASSROOM ACTIVITIES
1. Assign a Project: Using the algorithm the student’s developed in the earlier section, ask the students to identify what actions need to take place and what method might be used.
2. Quick Quiz:
• A(n) __________ is a segment of code that defines an action. (Answer: method.)
• True/False: A method can perform only one task. (Answer: False.)
• A method is activated by what? (Answer: A message.)
Object-Oriented Program Structure (709)
LECTURE NOTES
• Discuss using classes and methods.
• In Figure 12-39, the structure of the program is given with the definitions, method, calculations, and outputs.
• Use Figure 12-40 to identify each part of the program structure using Java code.
• Explain that the final step in the program structure is to run the program and display the output.
TEACHER TIP
When discussing classes, objects, and methods, I compare the class to a manufacturing plant and the object to the widget. The method then is the action the widget can perform.
FIGURES
• Figure 12-39, Figure 12-40, Figure 12-41
Object-Oriented Languages and Applications (711)
LECTURE NOTES
• Discuss the origin of object-oriented languages, including SmallTalk.
• Discuss some object-oriented languages in use today. These include C++, Visual Basic, and Java.
• Point out that advantages of object-oriented languages include an approach that is cognitively similar to the way humans perceive their world, and encapsulation, which allows objects to be reused in different ways.
CLASSROOM ACTIVITIES
1. Class Discussion: Have students review sample Java code, identifying methods and classes.
2. Quick Quiz:
• A(n) ______ is any class that inherits attributes from a superclass. (Answer: subclass.)
• True/False: Polymorphism provides OO programs with easy extensibility and can help simplify program code. (Answer: True.)
• A segment of code that defines an action is known as a(n) ______.
a. method
b. message
c. subclass
d. class
(Answer: A.)
SECTION D: DECLARATIVE PROGRAMMING (713)
The Declarative Paradigm (713)
LECTURE NOTES
• Explain that unlike procedural languages, which tell the computer how to solve a problem, a declarative language describes the problem.
• Point out that declarative languages are useful for programs that manipulate ideas and concepts, rather than numbers.
• Discuss the decision table in Figure 12-43. Talk about how it would help to decide which pizza is the best choice.
FIGURES
• Figure 12-42, Figure 12-43
CLASSROOM ACTIVITIES
• Class Discussion: Ask students to discuss how the procedural, object-oriented, and declarative paradigms are similar and different. Refer to Figure 12-42 for information about each.
• Have the student create a decision table for a problem and demonstrate how it works in making decisions.
•
Prolog Facts (714)
LECTURE NOTES
• Explain that in the context of a Prolog program, a fact is a statement that provides the computer with basic information for solving a problem.
• Discuss what an argument and predicates are and their relationship.
• Review and discuss the coding statements syntax as shown in Figure 12-44.
• Discuss goals, constants and variables, and their meanings in Prolog.
• Explain the meaning of instantiation as applied to Prolog.
FIGURES
• Figure 12-44, Figure 12-45, Figure 12-46, Figure 12-47
CLASSROOM ACTIVITIES
1. Quick Quiz:
• A(n) ____________ represents one of the main subjects that a fact describes. (Answer: argument.)
• The __________ describes the relationship between the arguments. (Answer: predicate.)
• True/False: A Prolog fact follows specific syntax rules. (Answer: True.)
• Finding a value for a variable is referred to as _________. (Answer: instantiation.)
• True/False: Prolog is a procedural programming language. (Answer: False.)
Prolog Rules (718)
LECTURE NOTES
• Explain that a Prolog rule consists of a head, body, and connecting symbols, as shown in Figure 12-48.
• The Prolog Fact program uses the facts to make decisions and then produces a solution.
• Review the completed code in Figure 12-50.
FIGURES
• Figure 12-48, Figure 12-49, Figure 12-50
CLASSROOM ACTIVITIES
1. Class Discussion: On an overhead projector or whiteboard, display a Prolog rule. Have students identify the head, the clauses that form the body of the rule, and the connecting symbol.
Input Capabilities (720)
LECTURE NOTES
• Explain that Prolog, like other languages, allows coding for user input.
• Use Figure 12-51 to point out the series of prompts that asks the user for the price, size, and shape of pizza 1 and pizza 2. Explain that this data is then used to produce the price of the pizza.
FIGURES
• Figure 12-51
Declarative Languages and Applications (722)
LECTURE NOTES
• Explain that declarative languages are most suitable for problems that pertain to words and concepts rather than numbers.
• Examples given are genealogy, or street and highway databases for mapping routes.
• Point out that declarative languages give more flexibility in solving problems.
FIGURES
• Figure 12-52
CLASSROOM ACTIVITIES
1. Class Discussion: Have students review a problem statement and list the facts needed to solve the problem.
2. Quick Quiz
• In the context of a Prolog program a(n) ______ is a statement that provides the computer with the basic information for solving a problem. (Answer: fact.)
• True/False: An argument represents one of the main subjects that a fact describes. (Answer: True.)
• Given the following Prolog fact: sizeof(room,area). Room is an example of a(n) ________.
a. variable
b. argument
c. end of a fact
d. beginning of a fact
(Answer: B.)
SECTION E: SECURE PROGRAMMING (723)
Black Hat Exploits (723)
LECTURE NOTES
• Explain buffer overflow, also called buffer overrun.
• Discuss the error message in Figure 12-54 and why it is problematic.
TEACHER TIP
Consider having students compare their experiences with black-hat exploits. What steps have they taken to prevent them?
FIGURES
• Figure 12-53, Figure 12-54
CLASSROOM ACTIVITIES
1. Class Discussion: Ask students what types of black hat exploits they’ve heard of or dealt with.
2. Quick Quiz:
• A(n) ____________ is a condition in which data in memory exceeds its expected boundaries and flows into memory areas intended for use by other data. (Answer: buffer overflow or buffer overrun.)
• What are the two languages most commonly used for professional software development? (Answers: C, C++.)
• True/False: Today’s operating systems, utilities, and application software are impervious to black-hat exploits. (Answer: False.)
Secure Software Development (725)
LECTURE NOTES
• Discuss formal methods and the fact that they are necessary for security and safety crucial applications. Talk about the added cost and time for development that cause them not to be used for every application.
• Explain that a threat model defines a set of possible attacks to consider.
• Discuss STRIDE and how it can help software developers anticipate threats from attackers.
• Point out that a threat model allows you to assess the probability, the potential harm, the priority, etc. of attacks, and from this point on try to minimize or eradicate the threats.
• Use Figure 12-56 to explain what an attack tree is.
• Discuss defensive programming and the techniques associated with it.
TEACHER TIP
Figure 12-57 shows a digital certificate. Ask students if they’ve encountered certificates like the one shown. If possible, demonstrate one to the class.
FIGURES
• Figure 12-55, Figure 12-56, Figure 12-57
CLASSROOM ACTIVITIES
1. Assign a Project: Ask students to sketch an attack tree illustrating a potential attack intended to steal students’ passwords.
2. Quick Quiz:
• ____________ is a technique that can be used to identify potential vulnerabilities by listing the key assets of an application, categorizing the threats to each asset, ranking the threats, and developing threat mitigation strategies that can be implemented during coding. (Answer: Threat modeling.)
• _________ categories help software developers anticipate threats from attackers. (Answer: STRIDE.)
• True/False: Offensive programming is an approach to software development in which programmers anticipate what might go wrong as their programs run, and take steps to smoothly handle those situations. (Answer: False.)
Mitigation (728)
LECTURE NOTES
• Explain what can happen when bugs are discovered.
• Ask the students if they have ever entered yes when asked if they want to debug.
• Review the use of patches.
• Discuss the steps consumers can take to avoid security problems, as listed on page 729.
TEACHER TIP
Survey students about their experience with software patches. Are they tolerant of (or exasperated by) the need to install patches to keep their computers safe from security threats?
FIGURES
• Figure 12-58
CLASSROOM ACTIVITIES
1. Assign a Project: Have students design an attack tree for accessing a password-protected Web site, using as a model the attack tree shown in Figure 12-56.
2. Quick Quiz:
• Some of the most common examples of ______ error messages appear during unsuccessful login attempts. (Answer: verbose.)
• True/False: Formal methods add little to the cost and time of software development, so they tend to be used very often. (Answer: False.)
• Proprietary software can benefit from a(n) ________ with other in-house programmers.
a. redirection
b. walkthrough
(Answer: B)
c. input filtering
d. factcheck
Glossary of Key Terms
• agile methodology (681)
• algorith (689)
• API (687)
• argument (714)
• assembly language (677)
• assumption (680)
• attack tree (726)
• buffer overflow (723)
• class (702)
• class attribute (703)
• class hierarchy (704)
• code (674)
• component (687)
• computer programming (675)
• constant (680)
• control (683)
• control structures (695)
• debugger (685)
• decision table (714)
• declarative paradigm (713)
• defensive programming (726)
• encapsulation (712)
• event (684)
• event-driven paradigm (685)
• event-handling code (684)
• fact (713)
• fifth-generation languages (678)
• first-generation language (677)
• flowchart (692)
• form design grid (683)
• formal methods (725)
• fourth-generation languages (678)
• function (696)
• functional paradigm (713)
• goal ( 715)
• high-level language (676)
• IDE (integrated development environment) (686)
• inheritance (704)
• instantiation (717)
• iteration (698)
• keyword (676)
• known information (680)
• logic error (685)
• loop (698)
• low-level language (676)
• message (706)
• method (705)
• multiparadigm languages (679)
• object (702)
• object-oriented paradigm (702)
• parameters (676)
• particle renderer (687)
• pathfinder algorithms (687)
• polymorphism (707)
• predicate (714)
• predictive methodology (681)
• private attribute (703)
• problem statement (680)
• procedural language (689)
• procedural paradigm (689)
• procedure (696)
• program editor (682)
• programming language (676)
• programming paradigm (679)
• properties (683)
• pseudocode (692)
• public attribute (703)
• remarks (686)
• repetition control structure (698)
• runtime error (685)
• SDK (software development kit) (686)
• second-generation language (677)
• selection control structure (697)
• sequence control structure (695)
• sequential execution (695)
• signed code (727)
• structured English (692)
• subclass (704)
• subroutine (696)
• superclass (704)
• syntax (676)
• syntax error (685)
• third-generation languages (677)
• threat modeling (725)
• variable (680)
• VDE (visual development environment) (683)
• walkthrough (694)
Top of Document
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- progress basic query course maine
- microsoft office 2003
- basic unix part i
- open command and control openc2 language
- computer science programming
- intellivision mattel electronics spatula city
- computer hardware and software
- qbasic lesson 2 understanding numeric variables and
- color computer disk basic
- computer mathematics and the graphing calculator
Related searches
- download microsoft office onenote 2016
- microsoft office onenote free download
- microsoft office business plan template
- microsoft office onenote
- download microsoft office for free
- microsoft office 365 crm
- download microsoft office for free windows 10
- microsoft office 2016 download for window
- microsoft office 365 office download
- microsoft office 2007 download office 2007 microsoft
- office 2003 converter pack download
- microsoft office onenote 2003 download