# UTPA STEM/CBI Courses/Computer Science/Selection

Course Title: Computer Science I
Lecture Topic: Selection
Instructor: Laura Grabowski
Institution: UTPA

## Backwards Design

Course Objectives
* Primary Objectives- By the next class period students will be able to:
** Understand concepts of how selection structures work: Test current condition (while program executes), outcome of test, decision based on outcome
** Understand how different selection structures work (if, if/else, nested if/else, switch)
** Write C++ code for different selection structures
* Sub Objectives- The objectives will require that students be able to:
** Write logical and relational expressions
** Identify syntax errors in selection statements
* Difficulties- Students may have difficulty:
** Understanding the underlying concepts involved
** Remembering the correct syntax for the conditional expressions
* Real-World Contexts- The concepts of decision-making are grounded in the real world -- we do it all the time. The details of this lesson, however, relate specifically to the context of learning how to design and write computer programs. In that context, some interesting applications include:
** Designing video games
** Comparison-based searching and sorting algorithms
Model of Knowledge
* Concept Map
** Analysis of problem, requires
*** Critical thinking skills
*** Summarizing skills
** Design of solution (algorithm design), requires
*** Problem decomposition skills
*** Understanding of underlying programming concepts
**** Data types
**** Sequence
**** Control structures
***** Selection -- this lesson
***** Repetition
**** Modular programming (functions)
**** Arrays
**** Abstract data types
***** Structures
***** Classes
**** Pointers
**** Data structures and algorithms
***** Trees
***** Searching
***** Sorting
*** Use of design tools -- pseudo-code writing skills
** Implementation of solution
*** Tools of the trade
**** Learned in Lectures through
***** Slides
***** Analogies
***** Sample programs
***** Group exercises
**** Using C++ to implement underlying concepts (listed above)
**** Applying underlying concepts, covered in lectures using
***** In-class exercises
***** Lab assignments
***** Homework assignments
* Content Priorities
** Enduring Understanding
*** Understand fundamental programming concepts
*** Understand basics of algorithm design
*** Be able to design, write, debug, and test simple programs in C++
** Important to Know and Do
*** Familiarity with programming environments such as Microsoft Visual C++
*** Document algorithm design with tools such as pseudo-code and flow diagrams
** Worth Being Familiar with
*** Time management
Assessment of Learning
* Formative Assessment
** In Class (groups)
*** Pre-lesson quiz after student has read chapter.
*** Team coding exercises: Work with the group to write code for selection statements.
*** Code traces. Walk though code fragments provided and determine how statements will execute based on differing conditions at run-time.
** Homework (individual)
*** Lab assignments using selection
*** Worksheet: writing selection code fragments, executing code traces
* Summative Assessment
** Unit quiz
** Exam

## Legacy Cycle

OBJECTIVE
By the next class period students will be able to:
* Understand concepts of selection structures: Test current condition (while program executes), outcome of test, decision based on outcome
* Understand how different selection structures work (if, if/else, nested if/else, switch)
* Write C++ code for different selection structures
The objectives will require that students be able to:
* Write logical and relational expressions
* Identify syntax errors in selection statements
THE CHALLENGE
You want to enter a game programming contest. You need to write a program to play the game “Rock-Paper-Scissors”. To win the contest, your game must be able to beat a human player in at least five out of ten consecutive games. How can you make your program win the contest?
GENERATE IDEAS
* Play several rounds of two-player “Rock-Paper-Scissors” with your group.
** Make sure everyone understands how the game works.
** Observe, record your ideas about, and then discuss:
*** What strategies did you try?
*** What strategies seem to win?
* Think about and write down your ideas about how you might write an algorithm to implement the game (individually).
* Discuss your algorithm ideas with your group.
* Brainstorm on what you need to implement your algorithms in C++
** What do you know that you can use?
** What do you sort of remember but need to review or have more details on?
** What don’t you know that you need to know in order to solve the problem?
MULTIPLE PERSPECTIVES
* From the group discussions, groups share with class
** What sorts of strategies do you need to implement to program the game?
** What do you know? What do you need to know to solve the problem?
* Lecture on selection (if, if/else, nested if/else) to help students gain understanding of selection structures. Organizing question for the lecture is “What do we need to know in order to write our “Rock-Paper-Scissors” program?
** The rules of the game
** How to compare the players’ actions (relational and logical tests) and make decisions based on what is happening at program run-time (selection).
RESEARCH & REVISE
* Students will work in groups to complete an exercise on writing code for simple selection statements.
* Students will outline their ideas for the “Rock-Paper-Scissors” program.
TEST YOUR METTLE
Students will receive feedback on their exercise solutions and on their game program ideas. Students will be given a quiz at the beginning of the next class.
GO PUBLIC
Students will be able to answer the questions about how to make run-time decisions in a program. Students will also complete lab assignments and homework assignments that focus on using selection structures.

## Pre-Lesson Quiz

For Questions 1-4, use the following declarations to evaluate the given expressions as TRUE or FALSE.
   int x = 8; int y = 15; double myVal1 = 2.5; double myVal2 = 5.8;