Game Submenu

AP Computer Science Principles (CSP) Study Guide - Unit 3

BIG IDEA 3: ALGORITHMS AND PROGRAMMING

3.1 Variables and Assignments

  • Variable Types: Numeric, string, boolean
  • Assignment Operations: Setting and changing variable values
  • Constants: Variables that don’t change
  • Naming Conventions: Readable and meaningful names
  • Scope: Global vs. local variables

3.2 Data Structures

  • Lists/Arrays: Ordered collections of items
  • Dictionaries/Maps: Key-value pairs
  • Sets: Unordered collections with no duplicates
  • Objects: Custom data structures
  • Nested Structures: Lists of lists, etc.

3.3 Mathematical Expressions

  • Arithmetic Operators: +, -, *, /, %
  • Assignment Operators: =, +=, -=, etc.
  • Order of Operations: PEMDAS in programming
  • Rounding and Truncation: Managing decimal places
  • Mathematical Libraries: Using math functions

3.4 Strings

  • String Operations: Concatenation, substring, etc.
  • String Methods: Length, find, replace, etc.
  • String Formatting: Creating formatted output
  • Character Access: Indexing into strings
  • String Immutability: Understanding string behavior

3.5 Boolean Expressions

  • Logical Operators: AND, OR, NOT
  • Comparison Operators: ==, !=, <, >, <=, >=
  • Truth Tables: Understanding logic combinations
  • Short-Circuit Evaluation: How boolean expressions are processed
  • DeMorgan’s Laws: Transforming boolean expressions

3.6 Conditionals

  • If Statements: Single path selection
  • If-Else: Two-path selection
  • If-Elif-Else: Multi-path selection
  • Nested Conditionals: Conditions within conditions
  • Switch/Case Statements: Alternative to multiple if statements

3.7 Nested Conditionals

  • Structure: Organization of nested if statements
  • Complexity Management: Keeping code readable
  • Boolean Algebra: Simplifying nested conditions
  • Approaches to Nesting: Different styles and practices
  • Complex Decision Trees: Building decision-making logic

3.8 Iteration

  • For Loops: Iterating a specific number of times
  • While Loops: Iterating based on a condition
  • Nested Loops: Loops within loops
  • Loop Control: Break and continue statements
  • Infinite Loops: Causes and prevention

3.9 Developing Algorithms

  • Algorithm Definition: Step-by-step problem solutions
  • Algorithm Design: Planning before coding
  • Pseudocode: Writing human-readable algorithm descriptions
  • Flowcharts: Visual representations of algorithms
  • Algorithm Analysis: Efficiency and effectiveness

3.10 Lists

  • List Creation: Making and initializing lists
  • List Operations: Accessing, adding, removing elements
  • List Methods: Common list manipulation techniques
  • List Traversal: Iterating through lists
  • 2D Lists: Working with grid-like data
  • Algorithm: How binary search works
  • Requirements: Sorted data
  • Implementation: Writing binary search code
  • Time Complexity: O(log n) efficiency
  • Applications: When to use binary search

3.12 Calling Procedures

  • Procedure Definition: Creating reusable code blocks
  • Parameters: Passing data to procedures
  • Return Values: Getting data from procedures
  • Procedure Calls: Invoking procedures in code
  • Stack Frames: Understanding procedure execution

3.13 Developing Procedures

  • Procedural Abstraction: Breaking code into modules
  • Parameters and Return Types: Designing procedure interfaces
  • Documentation: Writing clear procedure descriptions
  • Testing Procedures: Validating correct behavior
  • Procedure Libraries: Building reusable components

3.14 Libraries

  • Standard Libraries: Built-in language functionality
  • Third-Party Libraries: External code packages
  • API Documentation: Reading and using library docs
  • Library Installation: Adding libraries to projects
  • Library Usage: Importing and calling library functions

3.15 Random Values

  • Random Number Generation: Creating random values
  • Seeding: Controlling randomness
  • Range Selection: Getting random values in specific ranges
  • Applications: Games, simulations, encryption
  • Pseudorandom vs. True Random: Understanding limitations

3.16 Simulations

  • Simulation Definition: Modeling real-world systems
  • Monte Carlo Methods: Using randomness in simulations
  • Simulation Design: Creating effective models
  • Data Collection: Gathering simulation results
  • Analysis: Interpreting simulation outcomes

3.17 Algorithm Efficiency

  • Time Complexity: How runtime grows with input size
  • Space Complexity: How memory usage grows with input size
  • Big O Notation: O(1), O(log n), O(n), O(n²), etc.
  • Algorithm Comparison: Choosing efficient algorithms
  • Optimization Techniques: Improving algorithm efficiency

3.18 Undecidable Problems

  • The Halting Problem: Undecidability example
  • Limitations of Computing: What computers cannot solve
  • Computational Complexity: P, NP, NP-complete problems
  • Heuristics: Approximation solutions
  • Practical Implications: Real-world undecidable problems