Computer Science (all levels) 2016

Computer Science is an academic discipline that encompasses the study of computing devices and algorithmic processes, including their principles, their hardware and software designs, their applications, and their impact on society.


1. Computational Thinking

Candidates demonstrate computational thinking which is the process of formulating problems, establishing mathematical relationships and developing algorithms, and generating, organizing and analyzing data to effectively and efficiently solve a problem.  


1.A Problem solving

1.A.1 Use the basic steps in algorithmic problem solving to design solutions.

1.A.2 Recognize that not all problems can be solved computationally.

1.A.3 Describe the process of parallelization as it relates to problem solving.


1.B Algorithms

1.B.1 Demonstrate an understanding of algorithms and their practical application.

1.B.2 Design algorithms to solve problems.

1.B.3 Analyze algorithms by considering complexity, efficiency, and correctness.

1.B.4 Identify and analyze characteristics and purposes of searching and sorting algorithms.


1.C Models and simulation

1.C.1 Analyze data and identify patterns through modeling and simulation.

1.C.2 Create and/or revise a computational model or simulation of a phenomenon, designed device, process, or system.  

1.C.3 Use mathematical, computational, and/or algorithmic representations of phenomena or design solutions to describe and/or support claims and/or explanations.


1.D Abstraction and Decomposition

1.D.1 Decompose a problem into subproblems.

1.D.2 Understand that a single piece of code, tool, or computational artifact can be reused to solve multiple real-world problems.

1.D.3 Understand how multiple levels of abstraction are used to write programs or create other computational artifacts (e.g., a large system might involve different levels of abstraction for high-level modules, classes within those modules, methods within those classes, and code within those methods).


2. Programming

Candidates demonstrate an ability to solve real world problems using a programming language including effective design, development, testing, and documentation of code that implements algorithms.


2.A Solve real-world problems using programming languages

2.A.1 Demonstrate the ability to write code in multiple languages, at least one of which is visual and one of which is text-based.

2.A.2 Explain and use programming concepts such as constants, variables, data types, conditionals, logical operators, looping, recursion, procedures, parameters, and return values.

2.A.3 Demonstrate ability to select appropriate software tools and technology resources to accomplish a variety of tasks and solve problems (e.g., editors, integrated development environments, mobile environment simulators, media tools).

2.A.4 Explain and show how programs can be planned, tested, corrected, and documented.

2.A.4.A Understand the purposes of programming style conventions (e.g., indenting, spacing, comments) and their appropriate application.

2.A.4.B Identify and explain proper use of program documentation, including commenting computer programs and internal / external documentation.

2.A.4.C Find and correct errors in code syntax and meaning.

2.A.4.D Evaluate programs written by others for readability and usability.


2.B Design, develop, document and test programs that implement algorithms

2.B.1 Explain how programs implement algorithms.

2.B.2 Understand the function of pseudocode in program design.

2.B.3 Use tools of abstraction to decompose a large-scale computational problem (e.g. procedural abstraction, object-oriented design, functional design).

2.B.4 Explain and use truth tables and Boolean-valued variables.

2.B.5 Explain and use two dimensional arrays (and arrays of higher dimension).

2.B.6 Explain and use nested constructs (e.g. a loop that contains a conditional, and vice versa).

2.B.7 Explain the technique of iteratively refining a solution to a complex program by developing the program in stages (sometimes referred to as iterative enhancement or stepwise refinement).

2.B.8 Be familiar with common production methodologies used in industry such as agile programming, rapid prototyping, and waterfall approaches.

2.B.9 Demonstrate ability to use a standard API (Application Programming Interface) to simplify the creation of complex code by leveraging existing code libraries.

2.B.10 Explain and use debugging procedures, including the ability to identify programming errors and to apply strategies to debug programs.


2.C Data representations and abstraction related to programming

2.C.1 Design and test algorithms and programming solutions to problems in different contexts using advanced data structures.

2.C.2 Demonstrate an ability to compare and contrast various external data stores including files, databases, and web services.

2.C.3 Demonstrate an ability to compare and contrast fundamental data structures including lists, maps and random-access structures such as arrays.

2.C.4 Explain the object-oriented programming concept of grouping a related set of data (state) with an associated set of operations on that data (behavior).


3. Computing Devices, Systems, and Networks

Candidates demonstrate an understanding of the physical aspects of computing devices, the software that controls them, and the networks that connect them together.


3.A. Hardware Components  

3.A.1 Explain what a computer is and give examples of devices that include computers.

3.A.2 Explain and describe the key characteristics and functions of basic computer architecture (including processors, memory, hard disk, mouse, display, etc).

3.A.3 Demonstrate knowledge and understanding of the importance of the use of sensors, and how to use sensors as input devices.

3.A.4 Explain the concept of multi-core devices (e.g., dual, quad), and specialized processing units (including graphics processors, floating-point hardware, etc.).

3.A.5 Compare and contrast data storage devices usage / limitations and how data are transferred from one location to another (e.g., removable media, internal hard disks, and cloud storage).


3.B Operating systems and programs in a structured computer system

3.B.1 Explain the main functions of operating systems, including device startup, input/output, and program execution.

3.B.2 Describe how user interface reflects operating system capabilities and user control.

3.B.3 Explain how operating system and programs communicate through APIs.

3.B.4 Demonstrate proficiency with two or more operating systems.


3.C Computer networks and mobile computing devices

3.C.1 Compare and contrast different models of execution including execution on an

individual computer, execution on a local network, and cloud computing.

3.C.2 Describe how mobile devices use networks to operate.

3.C.4 Explain how devices and networks that make up the internet are connected and communicate using internet addresses and protocols.

3.C.5 Describe the basic components of computer networks (e.g., wired/wireless, servers, routing, LANs/WANs, address resolution, naming services, etc.).

3.C.6 Describe security issues related to networks and the internet (e.g., firewalls, data encryption, malware, DDoS) and means of protecting data including the use of back-ups.


4. Data representation and analysis

Candidates demonstrate an understanding of typical data sources, how computers represent data, and are able to analyze data.


4.A Data sources

4.A.1 Generate data from a computer model using tools such as a spreadsheet.

4.A.2 Describe techniques for locating and collecting small and large-scale data sets.

4.A.3 Gather and manipulate data from a variety of sources using a variety of tools.


4.B Data representation and visualization

4.B.1 Understand how computers store text, sound, pictures and numbers.

4.B.2 Explain how metadata is used to describe important properties of a data set

4.B.3 Understand the importance of standard data formats (e.g., tab-separated files) to facilitate transfer between applications.

4.B.4 Use technology to visualize data.


4.C Data analysis

4.C.1 Use data analysis and appropriate computer models to help formulate, refine, and analyze real-world problems.

4.C.2 Analyze data to enhance understanding of complex systems.


5. Global Impact / Social Issues

Candidates demonstrate an understanding of the social, ethical, and legal issues and impacts of computing, and the responsibilities of both computer scientists and users.


5.A Responsible use

5.A.1 Understand global opportunities afforded by computers and related technology both beneficial and harmful, on people and societies.

5.A.2 Understand the ethical and legal use of modern communication media and devices, and understand the consequences of misuse.

5.A.3 Understand appropriate etiquette when communicating using electronic tools.

5.A.4 Understand the social / emotional impact of cyberbullying and early intervention strategies to address it.


5.B Impacts of technology

5.B.1 Understand how computing innovations influence, and are influenced by, environmental, economic, social, and cultural contexts in which they are designed and used.

5.B.2 Understand how information technologies have changed over time and the effects those changes have had on education, the workplace, financial markets, medicine, and society as a whole.

5.B.3 Understand the impact of technology on society and the importance of technology to future careers, lifelong learning, and daily living for individuals of all ages.


5.C Ethics and Laws

5.C.1 Understand the social, legal, and ethical behaviors associated with technology use.

5.C.2 Understand the ethical issues that relate to computers and networks (e.g., security, privacy, information sharing, ownership).

5.C.3 Understand the ethical acquisition (e.g, citing sources using established methods) and acceptable use versus unacceptable use of information (e.g., privacy, hacking, piracy, vandalism, viruses, current laws and regulations).

5.C.4 Understand intellectual property rights and related issues including copyright laws, fair use, patents, and trademarks when using, manipulating, and editing electronic data.


5.D Security and Privacy

5.D.1 Demonstrate a knowledge of the core concepts of confidentiality, integrity, and availability with respect to the design and implementation of computing systems.

5.D.2 Understand the need to “design in” security and privacy into all computing systems throughout their lifecycle from initial concept to final implementation and ongoing maintenance.

5.D.3 Understand one or more cyber security risk frameworks that can be used to assess an individual’s or company’s cyber risk.


5.E Equity

5.E.1 Understand how the equitable distribution of, and access to, computing  resources in a global economy may create significant issues of opportunity, power, and equity.

5.E.2 Understand issues related to the equitable use of technology (e.g., gender, ethnicity, language, disabilities, access to technology).   

5.E.3 Understand the need for diversity in all computer science fields in order to provide more representative products, services and opportunities.


6. Effective Learning Environments

Candidates apply their knowledge of learning environments by creating and maintaining safe, ethical, supportive, fair, and effective learning environments for all students.


6.A Effective and safe learning environments

6.A.1 Understand and be able to appropriately respond to potential safety hazards in different learning environments, e.g., laboratory, classroom, or field.

6.A.2 Model the safe and effective use of computer hardware, software, peripherals, and networks.

6.A.3 Plan for equitable and accessible classroom, laboratory, and online environments that support effective and engaging learning.

6.A.4 Demonstrate the use of a variety of collaborative groupings (e.g., peer-to-peer, small group) in lesson plans/units and assessments.

6.A.5 Implement an inquiry based computer science curriculum that integrates conceptual understanding and skill development.


6.B. Diversity in computer science.

6.B.1. Understand that women and some racial and ethnic groups have been traditionally underrepresented in computing courses and occupations.

6.B.2. Explain strategies for increasing the diversity of students in computer science courses.

6.B.3 Connect classroom learning to the social and political contexts / issues relevant to students and their communities.


7. Connections and Collaboration

Candidates demonstrate understanding that computer science and related fields are collaborative in nature requiring knowledge of how to work toward common goals and communicate outcomes. Candidates are familiar with career fields related to computer science.


7.A Computing as a collaborative endeavor

7.A.1 Understand the connections between computer science and related content standards.

7.A.2 Understand that computing and information technology provide efficiency, automation, and data analysis to support many fields.

7.A.3 Understand that computing as a profession requires collaboration with other content-area experts and professionals.

7.A.4. Understand various ways that students can collaborate in computing.


7.B Communication

7.B.1 Design activities that require students to describe computing artifacts and communicate results using multiple forms of media.

7.B.3 Apply scientific ideas, principles, and/or evidence to provide an explanation of phenomena and solve design problems.

7.B.4 Construct, use, and/or present oral and written arguments or counter-arguments based on data and evidence.

7.B.5 Compare, integrate and evaluate sources of information presented in different media or formats (e.g., visually, quantitatively) as well as in words in order to address a scientific question or solve a problem.


7.C Careers

7.C.1 Understand how computing literacy and computational thinking is a key enabler and indicator of success for many careers.