uccser/cs-field-guide

View on GitHub
csfieldguide/curriculum_guides/content/en/apcsp/sections/todo.md

Summary

Maintainability
Test Coverage
# 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