Concept List
The following is a numbered list of concepts for the AP Computer Science (Python Version) course. Each concept is a short Title Case label (max 32 characters) that represents a distinct learning objective or knowledge unit.
Foundational Concepts (1-20)
- Computer Science
- Computational Thinking
- Algorithms
- Abstraction
- Decomposition
- Pattern Recognition
- Stepwise Refinement
- Problem Solving
- Binary Number System
- Bits and Bytes
- Character Encoding
- ASCII and Unicode
- Computer Hardware
- CPU and Memory
- Input and Output Devices
- Operating Systems
- Programming Languages
- Compiled vs Interpreted
- Python Language
- Python Interpreter
Python Basics (21-50)
- Python REPL
- Python Scripts
- Comments in Code
- Variables
- Variable Assignment
- Variable Naming Rules
- Data Types
- Integer Type
- Float Type
- Boolean Type
- String Type
- Type Function
- Type Conversion
- Implicit Type Conversion
- Explicit Type Casting
- Arithmetic Operators
- Integer Division
- Modulo Operator
- Operator Precedence
- String Concatenation
- String Repetition
- F-String Formatting
- Print Function
- Input Function
- Multiple Assignment
- Constants Convention
- Augmented Assignment
- Expressions
- Statements
- Code Readability
Boolean Logic and Comparisons (51-65)
- Boolean Expressions
- Comparison Operators
- Equal and Not Equal
- Greater and Less Than
- Logical Operators
- And Operator
- Or Operator
- Not Operator
- Short-Circuit Evaluation
- Truthiness and Falsiness
- Boolean Conversion
- Chained Comparisons
- Order of Operations
- De Morgan's Laws
- Truth Tables
Control Flow (66-90)
- Control Flow
- Sequential Execution
- Conditional Statements
- If Statement
- If-Else Statement
- Elif Statement
- Nested Conditionals
- Ternary Expression
- Match Statement
- Loops
- For Loop
- While Loop
- Range Function
- Loop Variable
- Loop Body
- Infinite Loops
- Break Statement
- Continue Statement
- Nested Loops
- Loop Patterns
- Accumulator Pattern
- Counter Pattern
- Sentinel Value Pattern
- Flag Variable Pattern
- Loop Else Clause
Strings (91-115)
- String Basics
- String Indexing
- Negative Indexing
- String Slicing
- Slice Notation
- String Immutability
- String Length
- String Methods
- Upper and Lower Methods
- Strip Method
- Split Method
- Join Method
- Find and Replace Methods
- Startswith and Endswith
- String Iteration
- String Comparison
- Escape Characters
- Raw Strings
- Multiline Strings
- String Formatting
- Format Method
- String Validation Methods
- In Operator for Strings
- Character Methods
- String Reversal
Functions (116-150)
- Functions
- Function Definition
- Function Call
- Parameters
- Arguments
- Return Statement
- Return Values
- None Type
- Default Parameters
- Keyword Arguments
- Positional Arguments
- Multiple Return Values
- Variable Scope
- Local Variables
- Global Variables
- Global Keyword
- Docstrings
- Function Documentation
- Helper Functions
- Main Function Pattern
- Name Equals Main
- Lambda Functions
- Higher-Order Functions
- Map Function
- Filter Function
- Reduce Function
- Function Composition
- Recursion
- Base Case
- Recursive Case
- Recursive Call Stack
- Stack Overflow
- Recursion vs Iteration
- Recursive Patterns
- Memoization
Lists (151-185)
- Lists
- List Creation
- List Indexing
- List Slicing
- List Mutability
- List Methods
- Append Method
- Insert Method
- Remove Method
- Pop Method
- Sort Method
- Reverse Method
- List Comprehension
- Nested Lists
- List of Lists
- List Traversal
- For Loop with Lists
- Enumerate Function
- List Unpacking
- Zip Function
- List Copying
- Shallow Copy
- Deep Copy
- List Concatenation
- List Repetition
- In Operator for Lists
- Index Method
- Count Method
- Min Max Sum Functions
- Len Function for Lists
- Sorted Function
- List as Stack
- List as Queue
- List Aliasing
- Identity vs Equality
Tuples and Sets (186-205)
- Tuples
- Tuple Creation
- Tuple Immutability
- Tuple Packing
- Tuple Unpacking
- Named Tuples
- Tuple Methods
- Tuples as Keys
- Tuples vs Lists
- Sets
- Set Creation
- Set Operations
- Set Union
- Set Intersection
- Set Difference
- Set Symmetric Difference
- Set Methods
- Membership Testing
- Frozenset
- Removing Duplicates
Dictionaries (206-230)
- Dictionaries
- Dictionary Creation
- Key-Value Pairs
- Dictionary Access
- Dictionary Methods
- Get Method
- Keys Method
- Values Method
- Items Method
- Dictionary Iteration
- Dictionary Comprehension
- Nested Dictionaries
- Default Values
- Update Method
- Pop Method for Dicts
- Dictionary Merging
- Counting with Dicts
- Grouping with Dicts
- Dictionary as Cache
- Hashable Keys
- Dict vs List Lookup
- JSON and Dictionaries
- OrderedDict
- DefaultDict
- Counter Class
Object-Oriented Programming (231-275)
- Object-Oriented Programming
- Classes
- Objects
- Class Definition
- Class Instantiation
- Instance Attributes
- Class Attributes
- The Self Parameter
- Init Method
- Constructor
- Methods
- Instance Methods
- Str Method
- Repr Method
- Encapsulation
- Private Attributes
- Getter Methods
- Setter Methods
- Property Decorator
- Class Methods
- Static Methods
- Composition
- Has-A Relationship
- Inheritance
- Is-A Relationship
- Parent Class
- Child Class
- Super Function
- Method Overriding
- Polymorphism
- Duck Typing
- Abstract Classes
- Multiple Inheritance
- Method Resolution Order
- Operator Overloading
- Eq and Lt Methods
- Add and Mul Methods
- Iterable Protocol
- Iterator Protocol
- Dunder Methods
- Object Identity
- Object Comparison
- Class Hierarchies
- UML Class Diagrams
- Design Patterns Intro
File I/O (276-290)
- File Input Output
- Opening Files
- File Modes
- Read Method
- Readline Method
- Readlines Method
- Write Method
- Writelines Method
- With Statement
- Context Managers
- File Paths
- CSV Files
- JSON Files
- File Exceptions
- Text vs Binary Files
Error Handling (291-305)
- Errors and Exceptions
- Syntax Errors
- Runtime Errors
- Logic Errors
- Exception Types
- TypeError
- ValueError
- IndexError
- KeyError
- Try-Except Block
- Multiple Except Blocks
- Finally Block
- Raising Exceptions
- Custom Exceptions
- Assertions
Testing and Debugging (306-325)
- Testing
- Manual Testing
- Unit Testing
- Test Cases
- Assert Statements
- Unittest Module
- Test Functions
- Edge Cases
- Boundary Testing
- Test-Driven Development
- Debugging
- Print Debugging
- Debugger Tools
- Breakpoints
- Step Through Code
- Code Tracing
- Rubber Duck Debugging
- Defensive Programming
- Input Validation
- Code Review
Algorithms and Analysis (326-360)
- Algorithm Design
- Pseudocode
- Flowcharts
- Linear Search
- Binary Search
- Search Comparison
- Selection Sort
- Insertion Sort
- Merge Sort
- Merge Sort Recursion
- Sorting Comparison
- Stable vs Unstable Sort
- Algorithm Correctness
- Loop Invariants
- Big-O Notation
- Time Complexity
- Space Complexity
- Constant Time O(1)
- Linear Time O(n)
- Quadratic Time O(n^2)
- Logarithmic Time O(log n)
- Linearithmic Time
- Best Average Worst Case
- Empirical Analysis
- Counting Operations
- Brute Force Approach
- Divide and Conquer
- Greedy Algorithms
- Algorithm Tradeoffs
- Efficiency vs Readability
- Two Pointer Technique
- Sliding Window Pattern
- Frequency Counter Pattern
- Recursion in Algorithms
- Algorithm Visualization
Software Engineering (361-380)
- Software Development
- Program Planning
- Requirements Analysis
- Modular Design
- Code Organization
- Import Statements
- Python Modules
- Python Packages
- Pip Package Manager
- Virtual Environments
- Version Control Intro
- Git Basics
- Code Style
- PEP 8 Guidelines
- Linting Tools
- Refactoring
- DRY Principle
- KISS Principle
- Code Comments
- Documentation
Advanced Python Concepts (381-400)
- Generators
- Yield Statement
- Generator Expressions
- Decorators
- Closures
- Args and Kwargs
- Unpacking Operators
- Walrus Operator
- Type Hints
- Type Annotations
- Dataclasses
- Enum Type
- Regular Expressions
- Collections Module
- Itertools Module
- Functools Module
- List vs Generator Memory
- Comprehension Patterns
- Context Manager Protocol
- Python Best Practices