\select@language {english}
\contentsline {chapter}{\numberline {1}Context}{1}{chapter.1}
\contentsline {section}{\numberline {1.1}Motivation for This Book}{1}{section.1.1}
\contentsline {subsection}{\numberline {1.1.1}Pedagogy}{1}{subsection.1.1.1}
\contentsline {subsection}{\numberline {1.1.2}C\# and Mono}{1}{subsection.1.1.2}
\contentsline {section}{\numberline {1.2}Resources Online}{2}{section.1.2}
\contentsline {section}{\numberline {1.3}Downloading Text, Source Code, and Videos}{3}{section.1.3}
\contentsline {subsection}{\numberline {1.3.1}Example Source Code and Videos}{3}{subsection.1.3.1}
\contentsline {subsection}{\numberline {1.3.2}Primary Book Site (cs.luc.edu)}{4}{subsection.1.3.2}
\contentsline {subsection}{\numberline {1.3.3}Mirror Book Site (courseclouds.com)}{4}{subsection.1.3.3}
\contentsline {section}{\numberline {1.4}Computer Science, Broadly}{4}{section.1.4}
\contentsline {subsection}{\numberline {1.4.1}Information Processing}{4}{subsection.1.4.1}
\contentsline {subsection}{\numberline {1.4.2}Algorithms}{5}{subsection.1.4.2}
\contentsline {subsection}{\numberline {1.4.3}Data Representation}{5}{subsection.1.4.3}
\contentsline {subsection}{\numberline {1.4.4}Instruction Representation}{6}{subsection.1.4.4}
\contentsline {subsection}{\numberline {1.4.5}Program Development Cycle}{7}{subsection.1.4.5}
\contentsline {subsection}{\numberline {1.4.6}Key Computer Science Areas}{7}{subsection.1.4.6}
\contentsline {section}{\numberline {1.5}Chapter Review Questions}{8}{section.1.5}
\contentsline {chapter}{\numberline {2}C\# Data and Operations}{9}{chapter.2}
\contentsline {section}{\numberline {2.1}A Sample Scala Program}{9}{section.2.1}
\contentsline {section}{\numberline {2.2}Lab: Editing, Compiling, and Running with Xamarin Studio}{12}{section.2.2}
\contentsline {subsection}{\numberline {2.2.1}Goals}{13}{subsection.2.2.1}
\contentsline {subsection}{\numberline {2.2.2}Steps}{13}{subsection.2.2.2}
\contentsline {subsubsection}{For further reinforcement}{20}{subsubsection*.3}
\contentsline {section}{\numberline {2.3}Arithmetic}{20}{section.2.3}
\contentsline {subsection}{\numberline {2.3.1}Csharp}{20}{subsection.2.3.1}
\contentsline {subsection}{\numberline {2.3.2}Division and Remainders}{21}{subsection.2.3.2}
\contentsline {subsubsection}{Divisible by 17 Exercise}{23}{subsubsection*.4}
\contentsline {subsubsection}{Mixed Arithmetic Exercise}{23}{subsubsection*.5}
\contentsline {section}{\numberline {2.4}Variables and Assignment}{23}{section.2.4}
\contentsline {subsection}{\numberline {2.4.1}Literals and Identifiers}{27}{subsection.2.4.1}
\contentsline {subsubsection}{Assignment Exercise}{27}{subsubsection*.7}
\contentsline {subsubsection}{Another Assignment Exercise}{28}{subsubsection*.8}
\contentsline {section}{\numberline {2.5}Syntax Template Typography}{28}{section.2.5}
\contentsline {subsection}{\numberline {2.5.1}Declaration Syntax Options}{28}{subsection.2.5.1}
\contentsline {subsection}{\numberline {2.5.2}Assignment Syntax}{28}{subsection.2.5.2}
\contentsline {section}{\numberline {2.6}Strings, Part I}{28}{section.2.6}
\contentsline {subsection}{\numberline {2.6.1}String Concatenation}{29}{subsection.2.6.1}
\contentsline {subsubsection}{Four Copies Exercise}{29}{subsubsection*.9}
\contentsline {subsubsection}{Sum String Exercise}{29}{subsubsection*.10}
\contentsline {subsubsection}{Ints and Strings Added}{29}{subsubsection*.11}
\contentsline {section}{\numberline {2.7}Writing to the Console}{30}{section.2.7}
\contentsline {section}{\numberline {2.8}C\# Program Structure}{31}{section.2.8}
\contentsline {subsection}{\numberline {2.8.1}Indentation Help}{32}{subsection.2.8.1}
\contentsline {subsection}{\numberline {2.8.2}Compiler Error Help}{33}{subsection.2.8.2}
\contentsline {subsection}{\numberline {2.8.3}Sequential Execution}{34}{subsection.2.8.3}
\contentsline {subsubsection}{Play Computer Exercise}{35}{subsubsection*.12}
\contentsline {subsubsection}{Another Play Computer Exercise}{35}{subsubsection*.13}
\contentsline {section}{\numberline {2.9}Combining Input and Output}{36}{section.2.9}
\contentsline {subsection}{\numberline {2.9.1}Reading from the Keyboard}{36}{subsection.2.9.1}
\contentsline {subsection}{\numberline {2.9.2}Numbers and Strings of Digits}{37}{subsection.2.9.2}
\contentsline {subsection}{\numberline {2.9.3}Example Projects and the Source Repository}{38}{subsection.2.9.3}
\contentsline {subsection}{\numberline {2.9.4}Running our Xamarin Studio Examples Solution}{39}{subsection.2.9.4}
\contentsline {subsection}{\numberline {2.9.5}Copying and Modifying Our Example Xamarin Studio Projects}{39}{subsection.2.9.5}
\contentsline {subsubsection}{Interview Exercise/Example}{39}{subsubsection*.14}
\contentsline {subsubsection}{Exercise for Addition}{40}{subsubsection*.15}
\contentsline {subsubsection}{Exercise for Quotients}{40}{subsubsection*.16}
\contentsline {section}{\numberline {2.10}String Special Cases}{40}{section.2.10}
\contentsline {subsection}{\numberline {2.10.1}Multiline String Exercise}{41}{subsection.2.10.1}
\contentsline {section}{\numberline {2.11}Substitutions in Console.WriteLine}{41}{section.2.11}
\contentsline {subsection}{\numberline {2.11.1}Output With \texttt {+}}{41}{subsection.2.11.1}
\contentsline {subsection}{\numberline {2.11.2}String Format Operation}{41}{subsection.2.11.2}
\contentsline {subsubsection}{Format Reading Exercise}{43}{subsubsection*.17}
\contentsline {subsubsection}{Exercise for Format}{43}{subsubsection*.18}
\contentsline {subsubsection}{Madlib Exercise}{44}{subsubsection*.19}
\contentsline {subsection}{\numberline {2.11.3}Overloading}{44}{subsection.2.11.3}
\contentsline {section}{\numberline {2.12}Value Types and Conversions}{44}{section.2.12}
\contentsline {subsection}{\numberline {2.12.1}Type int}{44}{subsection.2.12.1}
\contentsline {subsection}{\numberline {2.12.2}Type long}{45}{subsection.2.12.2}
\contentsline {subsection}{\numberline {2.12.3}Type double}{45}{subsection.2.12.3}
\contentsline {subsection}{\numberline {2.12.4}Numeric Types and Limits}{46}{subsection.2.12.4}
\contentsline {subsection}{\numberline {2.12.5}Casting}{46}{subsection.2.12.5}
\contentsline {subsection}{\numberline {2.12.6}Type char}{48}{subsection.2.12.6}
\contentsline {subsection}{\numberline {2.12.7}Type Boolean or bool}{49}{subsection.2.12.7}
\contentsline {subsection}{\numberline {2.12.8}Overflow to Positive Exercise}{49}{subsection.2.12.8}
\contentsline {section}{\numberline {2.13}Learning to Solve Problems}{49}{section.2.13}
\contentsline {section}{\numberline {2.14}Lab: Division Sentences}{51}{section.2.14}
\contentsline {subsection}{\numberline {2.14.1}Overview}{51}{subsection.2.14.1}
\contentsline {subsection}{\numberline {2.14.2}Requirements}{52}{subsection.2.14.2}
\contentsline {subsection}{\numberline {2.14.3}Xamarin Studio Reminders and Fixes}{53}{subsection.2.14.3}
\contentsline {section}{\numberline {2.15}Chapter Review Questions}{54}{section.2.15}
\contentsline {chapter}{\numberline {3}Defining Functions of your Own}{57}{chapter.3}
\contentsline {section}{\numberline {3.1}A First Function Definition}{57}{section.3.1}
\contentsline {section}{\numberline {3.2}Multiple Function Definitions}{59}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Poem Function Exercise}{60}{subsection.3.2.1}
\contentsline {section}{\numberline {3.3}Function Parameters}{60}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Birthday Function Exercise}{63}{subsection.3.3.1}
\contentsline {section}{\numberline {3.4}Multiple Function Parameters}{63}{section.3.4}
\contentsline {subsection}{\numberline {3.4.1}Quotient Function Exercise}{64}{subsection.3.4.1}
\contentsline {section}{\numberline {3.5}Returned Function Values}{64}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}Interview String Return Exercise/Example}{67}{subsection.3.5.1}
\contentsline {subsection}{\numberline {3.5.2}Quotient String Return Exercise}{67}{subsection.3.5.2}
\contentsline {section}{\numberline {3.6}Two Roles: Writer and Consumer of Functions}{67}{section.3.6}
\contentsline {section}{\numberline {3.7}Local Scope}{68}{section.3.7}
\contentsline {section}{\numberline {3.8}Static Variables}{69}{section.3.8}
\contentsline {section}{\numberline {3.9}Not using Return Values}{70}{section.3.9}
\contentsline {section}{\numberline {3.10}Library Classes}{71}{section.3.10}
\contentsline {subsection}{\numberline {3.10.1}Function Documentation}{73}{subsection.3.10.1}
\contentsline {subsection}{\numberline {3.10.2}Library Projects in Xamarin Studio (Optional)}{74}{subsection.3.10.2}
\contentsline {subsection}{\numberline {3.10.3}Quotient UI Exercise}{75}{subsection.3.10.3}
\contentsline {section}{\numberline {3.11}Static Function Summary}{75}{section.3.11}
\contentsline {subsection}{\numberline {3.11.1}Function definition}{75}{subsection.3.11.1}
\contentsline {subsection}{\numberline {3.11.2}Function Calls}{75}{subsection.3.11.2}
\contentsline {subsection}{\numberline {3.11.3}Scope}{76}{subsection.3.11.3}
\contentsline {subsection}{\numberline {3.11.4}Static Variables}{76}{subsection.3.11.4}
\contentsline {section}{\numberline {3.12}Chapter Review Questions}{76}{section.3.12}
\contentsline {chapter}{\numberline {4}Basic String Operations}{79}{chapter.4}
\contentsline {section}{\numberline {4.1}String Indexing}{79}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}Indexing Exercise}{80}{subsection.4.1.1}
\contentsline {section}{\numberline {4.2}Some Instance Methods and the Length Property}{80}{section.4.2}
\contentsline {subsection}{\numberline {4.2.1}Summary of String Length and Some Instance Methods}{81}{subsection.4.2.1}
\contentsline {subsubsection}{String Methods Exercise}{82}{subsubsection*.23}
\contentsline {section}{\numberline {4.3}A Creative Problem Solution}{83}{section.4.3}
\contentsline {section}{\numberline {4.4}Lab: String Operations}{85}{section.4.4}
\contentsline {subsection}{\numberline {4.4.1}Goals for this lab:}{85}{subsection.4.4.1}
\contentsline {section}{\numberline {4.5}Chapter Review Questions}{86}{section.4.5}
\contentsline {chapter}{\numberline {5}Decisions}{87}{chapter.5}
\contentsline {section}{\numberline {5.1}Conditions I}{87}{section.5.1}
\contentsline {section}{\numberline {5.2}Simple \texttt {if} Statements}{87}{section.5.2}
\contentsline {subsection}{\numberline {5.2.1}Simple If Exercise}{88}{subsection.5.2.1}
\contentsline {section}{\numberline {5.3}\texttt {if}-\texttt {else} Statements}{89}{section.5.3}
\contentsline {subsection}{\numberline {5.3.1}Scope With Compound Statements}{90}{subsection.5.3.1}
\contentsline {subsection}{\numberline {5.3.2}If-else Exercise}{91}{subsection.5.3.2}
\contentsline {section}{\numberline {5.4}More Conditional Expressions}{91}{section.5.4}
\contentsline {paragraph}{Pay with Overtime Example}{92}{paragraph*.26}
\contentsline {subsection}{\numberline {5.4.1}Wages Play Computer Exercise}{94}{subsection.5.4.1}
\contentsline {subsection}{\numberline {5.4.2}Graduate Exercise}{95}{subsection.5.4.2}
\contentsline {subsection}{\numberline {5.4.3}Roundoff Exercise}{95}{subsection.5.4.3}
\contentsline {section}{\numberline {5.5}Multiple Tests and \texttt {if}-\texttt {else} Statements}{95}{section.5.5}
\contentsline {subsection}{\numberline {5.5.1}Sign Exercise}{97}{subsection.5.5.1}
\contentsline {subsection}{\numberline {5.5.2}Grade Exercise}{97}{subsection.5.5.2}
\contentsline {subsection}{\numberline {5.5.3}Wages Exercise}{97}{subsection.5.5.3}
\contentsline {section}{\numberline {5.6}If-statement Pitfalls}{98}{section.5.6}
\contentsline {subsection}{\numberline {5.6.1}Dangerous Semicolon}{98}{subsection.5.6.1}
\contentsline {subsection}{\numberline {5.6.2}Match Wrong \texttt {if} With \texttt {else}}{99}{subsection.5.6.2}
\contentsline {subsection}{\numberline {5.6.3}Missing Braces}{99}{subsection.5.6.3}
\contentsline {section}{\numberline {5.7}Compound Boolean Expressions}{100}{section.5.7}
\contentsline {subsection}{\numberline {5.7.1}Congress Exercise}{102}{subsection.5.7.1}
\contentsline {subsection}{\numberline {5.7.2}Implication Exercise}{102}{subsection.5.7.2}
\contentsline {section}{\numberline {5.8}Nested \texttt {if} Statements}{102}{section.5.8}
\contentsline {subsection}{\numberline {5.8.1}Cartesian Plane Location Exercise/Example}{103}{subsection.5.8.1}
\contentsline {section}{\numberline {5.9}Chapter Review Questions}{104}{section.5.9}
\contentsline {chapter}{\numberline {6}While Loops}{109}{chapter.6}
\contentsline {section}{\numberline {6.1}While-Statements}{109}{section.6.1}
\contentsline {paragraph}{Loop Planning Rubric}{112}{paragraph*.28}
\contentsline {subsection}{\numberline {6.1.1}Sum To \texttt {n}}{113}{subsection.6.1.1}
\contentsline {section}{\numberline {6.2}While-Statements with Sequences}{117}{section.6.2}
\contentsline {subsection}{\numberline {6.2.1}One Character Per Line}{117}{subsection.6.2.1}
\contentsline {subsubsection}{String Backwards Exercise/Example}{118}{subsubsection*.30}
\contentsline {subsection}{\numberline {6.2.2}Print Vowels Function}{119}{subsection.6.2.2}
\contentsline {subsection}{\numberline {6.2.3}IsDigits Function}{120}{subsection.6.2.3}
\contentsline {subsection}{\numberline {6.2.4}Play Computer With a Loop}{123}{subsection.6.2.4}
\contentsline {subsubsection}{Duplicate Character Exercise}{124}{subsubsection*.31}
\contentsline {section}{\numberline {6.3}Interactive \texttt {while} Loops}{124}{section.6.3}
\contentsline {subsection}{\numberline {6.3.1}Agree Function Exercise}{128}{subsection.6.3.1}
\contentsline {subsection}{\numberline {6.3.2}Interactive Sum Exercise}{128}{subsection.6.3.2}
\contentsline {subsection}{\numberline {6.3.3}Safe Whole Number Input Exercise}{128}{subsection.6.3.3}
\contentsline {section}{\numberline {6.4}Short-Circuiting \&\& and \textbar {}\textbar {}}{128}{section.6.4}
\contentsline {section}{\numberline {6.5}While Examples}{130}{section.6.5}
\contentsline {subsection}{\numberline {6.5.1}Bisection Method}{130}{subsection.6.5.1}
\contentsline {subsection}{\numberline {6.5.2}Savings Exercise}{132}{subsection.6.5.2}
\contentsline {subsection}{\numberline {6.5.3}Strange Sequence Exercise}{133}{subsection.6.5.3}
\contentsline {subsection}{\numberline {6.5.4}Roundoff Exercise II}{133}{subsection.6.5.4}
\contentsline {section}{\numberline {6.6}More String Methods}{134}{section.6.6}
\contentsline {subsection}{\numberline {6.6.1}Count Repetitions in a String Exercise}{135}{subsection.6.6.1}
\contentsline {subsection}{\numberline {6.6.2}Safer PromptInt and PromptDouble Exercise}{135}{subsection.6.6.2}
\contentsline {subsection}{\numberline {6.6.3}Safest PromptInt Exercise}{136}{subsection.6.6.3}
\contentsline {section}{\numberline {6.7}User Input: UI}{136}{section.6.7}
\contentsline {section}{\numberline {6.8}Greatest Common Divisor}{137}{section.6.8}
\contentsline {subsection}{\numberline {6.8.1}Euclid's Algorithm}{137}{subsection.6.8.1}
\contentsline {subsection}{\numberline {6.8.2}GCD ``Brute Force'' Method}{137}{subsection.6.8.2}
\contentsline {subsubsection}{Brute-Force GCD Exercise}{138}{subsubsection*.32}
\contentsline {subsection}{\numberline {6.8.3}GCD Subtraction Method}{139}{subsection.6.8.3}
\contentsline {subsection}{\numberline {6.8.4}GCD Remainder Loop}{140}{subsection.6.8.4}
\contentsline {subsection}{\numberline {6.8.5}Preview: Recursive GCD}{140}{subsection.6.8.5}
\contentsline {section}{\numberline {6.9}Do-While Loops}{141}{section.6.9}
\contentsline {subsection}{\numberline {6.9.1}Loan Table Exercise}{142}{subsection.6.9.1}
\contentsline {section}{\numberline {6.10}Number Guessing Game Lab}{143}{section.6.10}
\contentsline {subsection}{\numberline {6.10.1}Part 1: No Hints; Fixed Secret Number}{144}{subsection.6.10.1}
\contentsline {subsection}{\numberline {6.10.2}Part 2: Add Hints}{144}{subsection.6.10.2}
\contentsline {subsection}{\numberline {6.10.3}Part 3: Add a Random Secret Number}{145}{subsection.6.10.3}
\contentsline {subsection}{\numberline {6.10.4}Part 4: Let the Player Set the Range of Values}{146}{subsection.6.10.4}
\contentsline {subsection}{\numberline {6.10.5}Part 5: Count the Guesses}{146}{subsection.6.10.5}
\contentsline {subsection}{\numberline {6.10.6}Possible Extra Credit Improvements or Variations}{146}{subsection.6.10.6}
\contentsline {section}{\numberline {6.11}Chapter Review Questions}{147}{section.6.11}
\contentsline {chapter}{\numberline {7}Foreach Loops}{149}{chapter.7}
\contentsline {section}{\numberline {7.1}\texttt {foreach} Syntax}{149}{section.7.1}
\contentsline {section}{\numberline {7.2}\texttt {foreach} Examples}{150}{section.7.2}
\contentsline {section}{\numberline {7.3}Chapter Review Questions}{151}{section.7.3}
\contentsline {chapter}{\numberline {8}For Loops}{153}{chapter.8}
\contentsline {section}{\numberline {8.1}For-Statement Syntax}{153}{section.8.1}
\contentsline {subsection}{\numberline {8.1.1}Break and Continue}{154}{subsection.8.1.1}
\contentsline {section}{\numberline {8.2}Examples With \texttt {for} Statements}{156}{section.8.2}
\contentsline {subsection}{\numberline {8.2.1}Tables}{157}{subsection.8.2.1}
\contentsline {subsection}{\numberline {8.2.2}ASCII Codes}{159}{subsection.8.2.2}
\contentsline {subsection}{\numberline {8.2.3}Modular Multiplication Table}{160}{subsection.8.2.3}
\contentsline {subsection}{\numberline {8.2.4}Reversed String Returned}{164}{subsection.8.2.4}
\contentsline {subsection}{\numberline {8.2.5}Exercises}{166}{subsection.8.2.5}
\contentsline {subsubsection}{Head or Tails Exercise}{166}{subsubsection*.35}
\contentsline {subsubsection}{Group Flips Exercise}{166}{subsubsection*.36}
\contentsline {subsubsection}{Reverse String \texttt {foreach} Exercise}{167}{subsubsection*.37}
\contentsline {subsubsection}{Only Letters Exercise}{167}{subsubsection*.38}
\contentsline {subsubsection}{Palindrome Exercise}{167}{subsubsection*.39}
\contentsline {subsubsection}{Nested Play Computer Exercise}{167}{subsubsection*.40}
\contentsline {subsubsection}{Power Table Exercise}{168}{subsubsection*.41}
\contentsline {section}{\numberline {8.3}Lab: Loops}{168}{section.8.3}
\contentsline {section}{\numberline {8.4}Chapter Review Questions}{170}{section.8.4}
\contentsline {chapter}{\numberline {9}Files, Paths, and Directories}{173}{chapter.9}
\contentsline {section}{\numberline {9.1}Files As Streams}{173}{section.9.1}
\contentsline {section}{\numberline {9.2}Writing Files}{173}{section.9.2}
\contentsline {section}{\numberline {9.3}Reading Files}{175}{section.9.3}
\contentsline {subsection}{\numberline {9.3.1}Reading to End of Stream}{175}{subsection.9.3.1}
\contentsline {subsection}{\numberline {9.3.2}Example: Sum Numbers in File}{177}{subsection.9.3.2}
\contentsline {subsubsection}{Safe Sum File Exercise}{178}{subsubsection*.43}
\contentsline {subsection}{\numberline {9.3.3}Example Copy to Upper Case}{178}{subsection.9.3.3}
\contentsline {section}{\numberline {9.4}Path Strings}{179}{section.9.4}
\contentsline {subsection}{\numberline {9.4.1}Paths in C\#}{180}{subsection.9.4.1}
\contentsline {section}{\numberline {9.5}Directory Class}{180}{section.9.5}
\contentsline {section}{\numberline {9.6}File Class}{180}{section.9.6}
\contentsline {section}{\numberline {9.7}Command Line Execution}{181}{section.9.7}
\contentsline {subsection}{\numberline {9.7.1}MCS: Compiling}{181}{subsection.9.7.1}
\contentsline {section}{\numberline {9.8}FIO Helper Class}{182}{section.9.8}
\contentsline {subsection}{\numberline {9.8.1}File Line Removal Exercise}{185}{subsection.9.8.1}
\contentsline {section}{\numberline {9.9}Chapter Review Questions}{185}{section.9.9}
\contentsline {chapter}{\numberline {10}Arrays}{187}{chapter.10}
\contentsline {section}{\numberline {10.1}One Dimensional Arrays}{187}{section.10.1}
\contentsline {subsection}{\numberline {10.1.1}Basic Syntax}{187}{subsection.10.1.1}
\contentsline {subsection}{\numberline {10.1.2}Parameters to Main}{190}{subsection.10.1.2}
\contentsline {subsubsection}{Modified Parameter Print Exercise}{192}{subsubsection*.45}
\contentsline {subsubsection}{Command Line Adder Exercise}{192}{subsubsection*.46}
\contentsline {subsection}{\numberline {10.1.3}String Method Split}{192}{subsection.10.1.3}
\contentsline {subsubsection}{NewUpper Exercise}{193}{subsubsection*.48}
\contentsline {subsection}{\numberline {10.1.4}References and Aliases}{194}{subsection.10.1.4}
\contentsline {subsubsection}{AllToUpper Exercise}{195}{subsubsection*.49}
\contentsline {subsection}{\numberline {10.1.5}Anonymous Array Initialization}{195}{subsection.10.1.5}
\contentsline {subsubsection}{Testing NewUpper Exercise/Example}{195}{subsubsection*.50}
\contentsline {subsection}{\numberline {10.1.6}Default Initializations}{196}{subsection.10.1.6}
\contentsline {subsection}{\numberline {10.1.7}Array Examples and Exercises}{196}{subsection.10.1.7}
\contentsline {subsubsection}{Initialization Exercise}{197}{subsubsection*.51}
\contentsline {subsubsection}{ExtractItems Exercise}{198}{subsubsection*.52}
\contentsline {subsubsection}{IntsFromString Exercise}{198}{subsubsection*.53}
\contentsline {subsubsection}{Trim All Exercise}{198}{subsubsection*.54}
\contentsline {subsubsection}{Count Duplicates Exercise}{198}{subsubsection*.55}
\contentsline {subsubsection}{Mirror Array Exercise}{199}{subsubsection*.56}
\contentsline {subsubsection}{Reverse Array Exercise}{199}{subsubsection*.57}
\contentsline {subsubsection}{Histogram Exercise}{199}{subsubsection*.58}
\contentsline {subsubsection}{Histogram Interval Exercise}{199}{subsubsection*.59}
\contentsline {subsubsection}{Power Table Exercise 2}{200}{subsubsection*.60}
\contentsline {section}{\numberline {10.2}Musical Scales and Arrays}{200}{section.10.2}
\contentsline {section}{\numberline {10.3}Linear Searching}{203}{section.10.3}
\contentsline {subsection}{\numberline {10.3.1}Linear Search}{203}{subsection.10.3.1}
\contentsline {section}{\numberline {10.4}Sorting Algorithms}{205}{section.10.4}
\contentsline {subsection}{\numberline {10.4.1}Exchanging Array Elements}{205}{subsection.10.4.1}
\contentsline {subsection}{\numberline {10.4.2}Bubble Sort}{206}{subsection.10.4.2}
\contentsline {subsection}{\numberline {10.4.3}Selection Sort}{206}{subsection.10.4.3}
\contentsline {subsubsection}{Shuffle Exercise}{208}{subsubsection*.63}
\contentsline {subsection}{\numberline {10.4.4}Insertion Sort}{208}{subsection.10.4.4}
\contentsline {subsection}{\numberline {10.4.5}Shell Sort}{210}{subsection.10.4.5}
\contentsline {subsection}{\numberline {10.4.6}Quicksort a.k.a. Partition Sort}{212}{subsection.10.4.6}
\contentsline {subsection}{\numberline {10.4.7}Random Data Generation}{213}{subsection.10.4.7}
\contentsline {subsection}{\numberline {10.4.8}Timing}{213}{subsection.10.4.8}
\contentsline {subsection}{\numberline {10.4.9}Running the Code}{215}{subsection.10.4.9}
\contentsline {section}{\numberline {10.5}Binary Searching}{216}{section.10.5}
\contentsline {subsection}{\numberline {10.5.1}Elaborated Binary Search Exercise}{218}{subsection.10.5.1}
\contentsline {section}{\numberline {10.6}Lab: Arrays}{218}{section.10.6}
\contentsline {subsection}{\numberline {10.6.1}Overview}{218}{subsection.10.6.1}
\contentsline {subsection}{\numberline {10.6.2}Goals}{219}{subsection.10.6.2}
\contentsline {subsection}{\numberline {10.6.3}Tasks}{219}{subsection.10.6.3}
\contentsline {section}{\numberline {10.7}Lab: Performance}{222}{section.10.7}
\contentsline {subsection}{\numberline {10.7.1}The Experiments}{223}{subsection.10.7.1}
\contentsline {subsection}{\numberline {10.7.2}Starter Project}{223}{subsection.10.7.2}
\contentsline {section}{\numberline {10.8}Multi-dimensional Arrays}{225}{section.10.8}
\contentsline {subsection}{\numberline {10.8.1}Rectangular Arrays (Two Dimensional)}{225}{subsection.10.8.1}
\contentsline {subsubsection}{Row and Column Numbering Exercise}{228}{subsubsection*.67}
\contentsline {subsubsection}{Varying Column Width Exercise}{229}{subsubsection*.68}
\contentsline {subsection}{\numberline {10.8.2}Advanced topic: Array of Arrays}{229}{subsection.10.8.2}
\contentsline {section}{\numberline {10.9}Chapter Review Questions}{230}{section.10.9}
\contentsline {chapter}{\numberline {11}Lists}{233}{chapter.11}
\contentsline {section}{\numberline {11.1}List Syntax}{233}{section.11.1}
\contentsline {subsection}{\numberline {11.1.1}Generics}{233}{subsection.11.1.1}
\contentsline {subsection}{\numberline {11.1.2}List Constructors and Methods}{233}{subsection.11.1.2}
\contentsline {subsection}{\numberline {11.1.3}Interactive List Example}{236}{subsection.11.1.3}
\contentsline {section}{\numberline {11.2}.Net Library (API)}{236}{section.11.2}
\contentsline {section}{\numberline {11.3}Chapter Review Questions}{237}{section.11.3}
\contentsline {chapter}{\numberline {12}Dictionaries}{239}{chapter.12}
\contentsline {section}{\numberline {12.1}Dictionary Syntax}{239}{section.12.1}
\contentsline {section}{\numberline {12.2}Dictionary Efficiency}{241}{section.12.2}
\contentsline {section}{\numberline {12.3}Dictionary Examples}{241}{section.12.3}
\contentsline {subsection}{\numberline {12.3.1}Sets}{241}{subsection.12.3.1}
\contentsline {subsection}{\numberline {12.3.2}Word Count Example}{242}{subsection.12.3.2}
\contentsline {section}{\numberline {12.4}Lab: File Data and Collections}{243}{section.12.4}
\contentsline {subsection}{\numberline {12.4.1}Goals for this lab:}{243}{subsection.12.4.1}
\contentsline {subsubsection}{Overview}{243}{subsubsection*.69}
\contentsline {subsection}{\numberline {12.4.2}Steps}{244}{subsection.12.4.2}
\contentsline {subsubsection}{ReadParagraph}{244}{subsubsection*.70}
\contentsline {subsubsection}{GetParagraphs}{244}{subsubsection*.71}
\contentsline {subsubsection}{GetDictionary}{245}{subsubsection*.72}
\contentsline {subsubsection}{Extra credit}{246}{subsubsection*.73}
\contentsline {section}{\numberline {12.5}Chapter Review Questions}{247}{section.12.5}
\contentsline {chapter}{\numberline {13}Classes and Object-Oriented Programming}{249}{chapter.13}
\contentsline {section}{\numberline {13.1}A First Example of Class Instances: Contact}{249}{section.13.1}
\contentsline {subsection}{\numberline {13.1.1}Making a Datatype}{249}{subsection.13.1.1}
\contentsline {subsection}{\numberline {13.1.2}Class Syntax}{250}{subsection.13.1.2}
\contentsline {subsection}{\numberline {13.1.3}Instance Variables}{251}{subsection.13.1.3}
\contentsline {subsection}{\numberline {13.1.4}Constructors}{252}{subsection.13.1.4}
\contentsline {subsection}{\numberline {13.1.5}Instance Methods}{252}{subsection.13.1.5}
\contentsline {subsection}{\numberline {13.1.6}Getters}{252}{subsection.13.1.6}
\contentsline {subsection}{\numberline {13.1.7}This Object}{253}{subsection.13.1.7}
\contentsline {subsection}{\numberline {13.1.8}Setters}{254}{subsection.13.1.8}
\contentsline {subsection}{\numberline {13.1.9}ToString Override}{255}{subsection.13.1.9}
\contentsline {subsection}{\numberline {13.1.10}Local Variables Hiding Instance Variables}{257}{subsection.13.1.10}
\contentsline {subsubsection}{Lifetime and Scope Exercise/Example}{257}{subsubsection*.74}
\contentsline {section}{\numberline {13.2}Class Instance Examples}{258}{section.13.2}
\contentsline {subsection}{\numberline {13.2.1}More Getters and Setters}{258}{subsection.13.2.1}
\contentsline {paragraph}{Beyond Getters and Setters}{259}{paragraph*.76}
\contentsline {subsubsection}{Statistics Exercise}{261}{subsubsection*.77}
\contentsline {subsubsection}{Unneeded Constructor Code Exercise}{261}{subsubsection*.78}
\contentsline {subsubsection}{Alternate Internal State Exercise}{262}{subsubsection*.79}
\contentsline {subsection}{\numberline {13.2.2}Converting A Static Game To A Game Instance}{262}{subsection.13.2.2}
\contentsline {subsection}{\numberline {13.2.3}Animal Class Lab}{263}{subsection.13.2.3}
\contentsline {subsection}{\numberline {13.2.4}Clock Example}{264}{subsection.13.2.4}
\contentsline {subsubsection}{Alternate Clock Constructor Exercise}{267}{subsubsection*.80}
\contentsline {subsubsection}{Clock With Seconds Exercise}{267}{subsubsection*.81}
\contentsline {subsubsection}{Twelve Hour Time Exercise}{267}{subsubsection*.82}
\contentsline {section}{\numberline {13.3}The Rational Class}{268}{section.13.3}
\contentsline {subsection}{\numberline {13.3.1}Method Parameters of the Same Type}{272}{subsection.13.3.1}
\contentsline {subsection}{\numberline {13.3.2}Pictorial Playing Computer}{273}{subsection.13.3.2}
\contentsline {subsection}{\numberline {13.3.3}ForceMatch Exercise}{277}{subsection.13.3.3}
\contentsline {section}{\numberline {13.4}Planning A Class Structure}{277}{section.13.4}
\contentsline {section}{\numberline {13.5}Classes And Structs}{279}{section.13.5}
\contentsline {section}{\numberline {13.6}Defining Operators (Optional)}{279}{section.13.6}
\contentsline {subsection}{\numberline {13.6.1}Operator Overloading}{279}{subsection.13.6.1}
\contentsline {subsection}{\numberline {13.6.2}Casts in User-Defined Classes}{280}{subsection.13.6.2}
\contentsline {subsubsection}{Operator Overloading Exercise}{281}{subsubsection*.84}
\contentsline {section}{\numberline {13.7}Chapter Review Questions}{282}{section.13.7}
\contentsline {chapter}{\numberline {14}Testing}{283}{chapter.14}
\contentsline {section}{\numberline {14.1}Assertions}{283}{section.14.1}
\contentsline {section}{\numberline {14.2}Attributes}{283}{section.14.2}
\contentsline {section}{\numberline {14.3}Testing the Constructor}{284}{section.14.3}
\contentsline {section}{\numberline {14.4}Testing Rational Comparisons}{285}{section.14.4}
\contentsline {section}{\numberline {14.5}Testing Rational Arithmetic}{285}{section.14.5}
\contentsline {section}{\numberline {14.6}Testing Rational Conversions (to other types)}{286}{section.14.6}
\contentsline {section}{\numberline {14.7}Testing the Parsing Feature}{287}{section.14.7}
\contentsline {section}{\numberline {14.8}Running the NUnit Tests}{287}{section.14.8}
\contentsline {subsection}{\numberline {14.8.1}String Replace NUnit Test Exercise}{289}{subsection.14.8.1}
\contentsline {subsection}{\numberline {14.8.2}Grade File NUnit Test Exercise}{289}{subsection.14.8.2}
\contentsline {chapter}{\numberline {15}Interfaces}{291}{chapter.15}
\contentsline {section}{\numberline {15.1}Rationals Revisited}{291}{section.15.1}
\contentsline {section}{\numberline {15.2}csproject Revisited}{293}{section.15.2}
\contentsline {subsection}{\numberline {15.2.1}Cohesion, Coupling, and Separation of Concerns}{295}{subsection.15.2.1}
\contentsline {subsubsection}{IGame Interface Exercise}{296}{subsubsection*.85}
\contentsline {subsubsection}{Bisection With Function Interface Exercise}{296}{subsubsection*.86}
\contentsline {section}{\numberline {15.3}Chapter Review Questions}{297}{section.15.3}
\contentsline {chapter}{\numberline {16}Recursion}{301}{chapter.16}
\contentsline {chapter}{\numberline {17}Data Structures}{303}{chapter.17}
\contentsline {chapter}{\numberline {18}Appendix}{305}{chapter.18}
\contentsline {section}{\numberline {18.1}Development Tools}{305}{section.18.1}
\contentsline {subsection}{\numberline {18.1.1}About Software Development Kits (SDKs)}{305}{subsection.18.1.1}
\contentsline {subsection}{\numberline {18.1.2}Editing and Building Tools}{305}{subsection.18.1.2}
\contentsline {subsection}{\numberline {18.1.3}About Integrated Development Environments (IDE)}{305}{subsection.18.1.3}
\contentsline {subsection}{\numberline {18.1.4}Our Approach}{306}{subsection.18.1.4}
\contentsline {subsection}{\numberline {18.1.5}Installing Mono and Xamarin Studios}{306}{subsection.18.1.5}
\contentsline {subsection}{\numberline {18.1.6}OS X}{306}{subsection.18.1.6}
\contentsline {subsubsection}{Xamarin Studio Installation - OSX}{307}{subsubsection*.87}
\contentsline {subsection}{\numberline {18.1.7}Windows}{307}{subsection.18.1.7}
\contentsline {subsubsection}{Mono Command Prompt}{307}{subsubsection*.88}
\contentsline {subsubsection}{Xamarin Studio Installation - Windows}{307}{subsubsection*.89}
\contentsline {subsection}{\numberline {18.1.8}Linux}{308}{subsection.18.1.8}
\contentsline {section}{\numberline {18.2}Xamarin Studio}{308}{section.18.2}
\contentsline {section}{\numberline {18.3}Command Line Introduction}{309}{section.18.3}
\contentsline {subsection}{\numberline {18.3.1}Navigating Directories}{309}{subsection.18.3.1}
\contentsline {subsection}{\numberline {18.3.2}Common Commands}{311}{subsection.18.3.2}
\contentsline {subsection}{\numberline {18.3.3}Scripts}{313}{subsection.18.3.3}
\contentsline {subsection}{\numberline {18.3.4}Copy and Paste}{313}{subsection.18.3.4}
\contentsline {subsection}{\numberline {18.3.5}Command Line Shortcuts}{313}{subsection.18.3.5}
\contentsline {section}{\numberline {18.4}Precedence of Operators}{313}{section.18.4}
\contentsline {section}{\numberline {18.5}Homework: Grade Calculation}{314}{section.18.5}
\contentsline {subsection}{\numberline {18.5.1}Program Summary}{314}{subsection.18.5.1}
\contentsline {subsection}{\numberline {18.5.2}Details}{315}{subsection.18.5.2}
\contentsline {subsection}{\numberline {18.5.3}Grading Rubric}{317}{subsection.18.5.3}
\contentsline {subsection}{\numberline {18.5.4}Logs and Partners}{317}{subsection.18.5.4}
\contentsline {section}{\numberline {18.6}Homework: Grade Calculation from Individual Scores}{318}{section.18.6}
\contentsline {subsection}{\numberline {18.6.1}Functional Requirements}{318}{subsection.18.6.1}
\contentsline {subsection}{\numberline {18.6.2}Style Requirements}{319}{subsection.18.6.2}
\contentsline {subsection}{\numberline {18.6.3}Grading Rubric}{319}{subsection.18.6.3}
\contentsline {subsection}{\numberline {18.6.4}Logs and Partners}{319}{subsection.18.6.4}
\contentsline {section}{\numberline {18.7}Homework: Grade File}{320}{section.18.7}
\contentsline {subsection}{\numberline {18.7.1}Brief Problem Statement}{320}{subsection.18.7.1}
\contentsline {subsection}{\numberline {18.7.2}Using C\#}{320}{subsection.18.7.2}
\contentsline {subsection}{\numberline {18.7.3}Requirements}{321}{subsection.18.7.3}
\contentsline {subsection}{\numberline {18.7.4}Hints}{322}{subsection.18.7.4}
\contentsline {subsection}{\numberline {18.7.5}Grading Rubric (25 points)}{323}{subsection.18.7.5}
\contentsline {section}{\numberline {18.8}Homework: Book List}{324}{section.18.8}
\contentsline {subsection}{\numberline {18.8.1}Book class}{325}{subsection.18.8.1}
\contentsline {subsection}{\numberline {18.8.2}BookList class}{325}{subsection.18.8.2}
\contentsline {subsection}{\numberline {18.8.3}TestBookList class}{326}{subsection.18.8.3}
\contentsline {subsection}{\numberline {18.8.4}Grading Rubric}{326}{subsection.18.8.4}
\contentsline {subsection}{\numberline {18.8.5}Extra Credit}{327}{subsection.18.8.5}
\contentsline {section}{\numberline {18.9}Group Project}{329}{section.18.9}
\contentsline {subsection}{\numberline {18.9.1}Objectives}{329}{subsection.18.9.1}
\contentsline {subsection}{\numberline {18.9.2}Overview}{330}{subsection.18.9.2}
\contentsline {subsection}{\numberline {18.9.3}Your Team}{330}{subsection.18.9.3}
\contentsline {subsection}{\numberline {18.9.4}Roles}{330}{subsection.18.9.4}
\contentsline {subsection}{\numberline {18.9.5}The process}{331}{subsection.18.9.5}
\contentsline {subsection}{\numberline {18.9.6}Splitting Up The Coding}{332}{subsection.18.9.6}
\contentsline {subsection}{\numberline {18.9.7}Weekly reports}{332}{subsection.18.9.7}
\contentsline {subsection}{\numberline {18.9.8}Intermediate deliverables}{333}{subsection.18.9.8}
\contentsline {subsection}{\numberline {18.9.9}Final Deliverables}{333}{subsection.18.9.9}
\contentsline {section}{\numberline {18.10}Lab: Version Control}{334}{section.18.10}
\contentsline {subsection}{\numberline {18.10.1}Goals}{335}{subsection.18.10.1}
\contentsline {subsubsection}{Before We Proceed}{335}{subsubsection*.93}
\contentsline {subsection}{\numberline {18.10.2}Steps}{335}{subsection.18.10.2}
\contentsline {subsubsection}{Create Bitbucket.org account}{335}{subsubsection*.94}
\contentsline {subsubsection}{Create repository at Bitbucket}{336}{subsubsection*.95}
\contentsline {subsubsection}{Set up your Mercurial commit username}{337}{subsubsection*.96}
\contentsline {subsubsection}{Clone a repository from Bitbucket}{338}{subsubsection*.97}
\contentsline {subsubsection}{Add an .hgignore and Hello World file to your project}{339}{subsubsection*.98}
\contentsline {subsubsection}{Create an initial structure for your project}{341}{subsubsection*.99}
\contentsline {subsubsection}{Create and Test Content}{341}{subsubsection*.100}
\contentsline {subsubsection}{Verify that your stuff really made it to bitbucket.org}{342}{subsubsection*.101}
\contentsline {subsubsection}{Working between lab and home (or home and lab)}{344}{subsubsection*.102}
\contentsline {subsubsection}{Getting our examples}{344}{subsubsection*.103}
\contentsline {section}{\numberline {18.11}Mercurial and Teamwork}{345}{section.18.11}
\contentsline {subsection}{\numberline {18.11.1}Planning and Communication}{345}{subsection.18.11.1}
\contentsline {subsection}{\numberline {18.11.2}Typical Scenario}{345}{subsection.18.11.2}
\contentsline {subsection}{\numberline {18.11.3}Conflict Avoidance}{346}{subsection.18.11.3}
\contentsline {subsection}{\numberline {18.11.4}E-mail Notifications}{347}{subsection.18.11.4}
\contentsline {subsection}{\numberline {18.11.5}Communication is Key to Success}{347}{subsection.18.11.5}
\contentsline {section}{\numberline {18.12}Acknowledgments}{347}{section.18.12}
\contentsline {chapter}{Bibliography}{349}{chapter*.105}
