Exam #1 will be given on **Wednesday, September 28th** during regular class hours. It will begin at 2pm and you will have 75 minutes to complete the exam. The exam will cover the introductory materials from the first day of class, as well as Chapters 1-8 of Sprankle. No notes or reference materials will be allowed for use during the exam. You will be allowed a calculator to check your math, but you probably won't need it.

The format of the exam will be as follows:

**Multiple Choice.**There will be a series of multiple choice questions to test your basic knowledge of terms and problem-solving concepts.**Short Answer.**You will be asked to define, identify, or explain various problem-solving concepts based on the material that has been discussed in lecture.**Problems.**In this section, you will be asked to solve problems. For example, you may be given flowchart segments and asked to describe or list what the output would be. Alternatively, you may be asked to design a flowchart to perform a particular action. These problems will be similar to the lab activities and homework you have completed for this class.

For examples of each of the types of questions you'll see on the exam, here is a mini exam (key) I have created for you.

**Introduction and Chapter 1: General Problem-Solving Concepts**

- Be able to define a computer, as well as the elements of the IPOS cycle (with examples)
- Know and be able to sort the six steps of the problem-solving process
- What is an algorithm? What are the four major components of algorithms in computer science?
- How do algorithms differ from heuristic solutions? (Be able to give examples of each.)
- Know the two common types of algorithms studied in computer science
- Understand the basic functionality of the linear (sequential) search and the binary search algorithms

**Chapter 2: Beginning Problem-Solving Concepts**

- Understand the difference between constants and variables
- Be able to use the rules to properly name a variable (and tell when a variable name violates the rules)
- Know the three major data types, as well as when you might use each
- Be able to recognize and interpret when/how a function is being used
- Be able to define operators, operands, and resultants (and recognize examples of each)
- Know all of the various mathematical, logical, and relational operators
- Be able to complete a truth table for the NOT, AND, and OR operators
- Know and be able to apply the order of operations for the various operators
- Be able to convert a mathematical equation or expression into one a computer would understand
- Be able to evaluate the result of an expression or equation

**Chapter 3: Planning Your Solution**

- What is syntax? What is the difference between a syntax error and a logic error?
- Know all of the basic flowchart symbols
- Be able to describe the "flow" of a basic flowchart that uses modules

**Chapter 4: Introduction to Programming Structure**

- Define module and be able to provide and explain the multiple benefits of using modules in your solutions
- Be able to list the three basic categories of logic structures

**Chapter 5: Problem-Solving with the Sequential Logic Structure**

- Know how to complete the four-column data dictionary based on the contents of a flowchart
- Be able to read or design a flowchart using sequential logic

**Chapter 6: Problem-Solving with Decisions**

- Be able to describe, read, and interpret basic and nested if/then/else structures
- Understand the difference between straight-through, positive, and negative logic
- Know how to design a solution containing straight-through, positive, or negative logic for a given problem
- Be able to determine when case logic might be appropriate
- Know how to read a case logic structure to determine what might happen based on particular input
- What is a "code" and how does it relate to the case logic structure?
- What are some factors that can help you decide which decision logic structure to use?

**Chapter 7: Problem-Solving with Loops**

- What is the difference between incrementing and accumulating?
- Know and understand the terms "initialize" and "priming read" in relation to Dr. Rita's While Loop Checklist!
- Understand the major similarities and differences between While loops and Repeat/Until loops in relation to (1) test location, (2) when the loop is broken, (3) priming reads, and (4) minimum number of iterations
- Know how to construct basic While, Repeat/Until, and Automatic-Counter loops
- Be able to follow the logic of a nested loop to determine what the output would be based on given input
- Know the basic definition of recursion

**Chapter 8: Arrays**

- Be able to define arrays and understand when you might use them