csfieldguide/curriculum_guides/content/en/apcsp/sections/todo.md
# To Do
Several learning objectives are not currently covered by the CS Field Guide.
This "to-do" list includes general computer science topics and suggestions for how we can update the field guide to cover the learning objectives.
Different levels of changes are suggested:
- new chapter: some topics are best put into stand-alone new field guide chapters
- Hardware Abstractions [Phase+]
- Software Abstractions [Phase4]
- Models and Simulation [Phase3]
- Network Systems [Phase+]
- Logic [Phase+]
- new section: add a new X.Y major section to chapter X
- new sub-section: add a new X.Y.Z minor section to section Y of chapter X
- edits to existing text content to use specific terminology
## Abstraction
- floating point representation
- **new section in data-representation** [Phase+]
- bit representation of program instructions (not just data)
- **new section in data-representation OR part of new chapter on hardware abstractions** [Phase2][draft]
- abstraction process: removing irrelevant details, extracting common features
- **part of new chapter on hardware abstractions**
- explicit section on functions/functional abstraction
- **new section in programming-languages OR part of new chapter on software abstractions**
- re-work a unit / activity on hardware and software abstraction layers below high level language (from the software engineering one)
- **new chapter on hardware OR software abstractions**
- equate level of language with concept of abstraction
- **additional wording in end of 3.1 intro to programming-languages** [Phase1][draft]
- models and simulations (there are some CS unplugged ones)
- **new chapter on models-simulations**
## Algorithms
- sequencing, selection, iteration as building blocks for algorithms
- **new sub-section with specific terms in section 2.4** [Phase1][draft]
- algorithm correctness
- **new sub-section in 2.1** [Phase1][draft]
- decidability
- **new section in 11.?** [Phase2][draft]
- combining algorithms
- **add terms to 2.1** [Phase1][draft]
- language choice for algorithms
- **better description at end of section 2.1.1** [Phase1][draft]
- theoretical vs empirical analysis
- **additional paragraph in 2.1.2** [Phase2][draft]
- efficiency of memory usage
- **additional paragraph in 2.1.2** [Phase2][draft]
## Creativity
- collaborative tools (open source, github/google doc)
- **new chapter on data analysis, visualization, processing, etc.**
- computational artifacts as more than programs
- **new chapter on data analysis, visualization, processing, etc.**
- computational tools to transform digital media industries such as photoshop, virtual synthesizers, etc
- **new chapter on data analysis, visualization, processing, etc.**
## Data
- large data sets (databases), queries, filtering
- **new chapter on data analysis, visualization, processing, etc.**
- data patterns (sequence analysis / cryptography?)
- **new chapter on data analysis, visualization, processing, etc.**
- collaboration over data (forms, spreadsheets, online multi-edit)
- **new chapter on data analysis, visualization, processing, etc.**
- data visualization (tables, diagrams)
- **new chapter on data analysis, visualization, processing, etc.**
- metadata
- **new chapter on data analysis, visualization, processing, etc.**
## Impact
Most AP curriculum include specific lesson plans to cover these topics by requiring the students to research online after/during reading of the Blown to Bits book (freely available online).
A teaching guide on how to use Blown to Bits in the classroom along with discussion questions and essay/project ideas should be sufficient.
**Therefore no new CS Field Guide content is suggested for these.**
- computer ethics
- social computing
## Programming
- program components (modularity)
- **additional sub-section in software-engineering** [Phase2]
- program documentation
- **re-wording or new sub-section in software-engineering; include self-documenting approaches** [Phase2]
- collaboration and communication within programming teams
- **add sub-section on Scrum, issue tracking and/or other communication mechanisms to 16.6** [Phase2]
- program execution / implementation of algorithm
- **new chapter on software/hardware abstraction**
- solving larger classes of problems with hardware and algorithm improvements over time
- **add sub-section to 11.2 about some simple algorithms that now scale to millions of CPU cores that are solving real problems - possibly genomics, image processing for medical purposes, etc.** [Phase2]
- procedures, functions, strings, lists, common programming library functions, APIs
- **new chapter on software abstraction**
- software quality, code metrics
- **new section in software-engineering**
- debugging
- **new chapter on software abstraction**
- functionality vs unit testing, program correctness, justification
- **new subsection in software-engineering 16.4** [Phase2]
- operators
- **new chapter on software abstraction**
- boolean logic, algebra
- **new chapter on logic**
## Internet
**New chapter on Network Systems with sections for the below**
- internet system model: hierarchy, redundancy, fault tolerance (addresses, protocols, services)
- bandwidth, latency
- cybersecurity (DDoS, phishing, viruses, firewalls)
- trust model, DNS, CAs
- open standards for routing, cryptography, protocols