High School Exploring Computer Science
Computer science is the study of computers and algorithmic processes, including their principles, their hardware and software designs, their applications, and their impact on society." --ACM/CSTA Model Curriculum for K-12 Computer Science
Enduring Understandings[edit]
What do we want you to remember 10 years from now about computer science?
1. You can design and create software to solve problems
2. Computer scientists are a tribe who use specific tools, languages, and techniques to understand and solve problems.
3. If you want to know what is true, you must must know the depth of a thing
Computational Thinking standards[edit]
- Use predefined functions and parameters, classes and methods to divide a complex problem into simpler parts.
- Describe a software development process used to solve software problems (e.g., design, coding, testing, verification).
- Explain how sequence, selection, iteration, and recursion are building blocks of algorithms.
- Compare techniques for analyzing massive data collections.
- Describe the relationship between binary and hexadecimal representations.
- Analyze the representation and trade-offs among various forms of digital information.
- Describe how various types of data are stored in a computer system.
- Use modeling and simulation to represent and understand natural phenomena.
- Discuss the value of abstraction to manage problem complexity.
- Describe the concept of parallel processing as a strategy to solve large problems.
- Describe how computation shares features with art and music by translating human intention into an artifact.
Collaboration standards[edit]
- Work in a team to design and develop a software artifact.
- Use collaborative tools to communicate with project team members (e.g., discussion threads, wikis, blogs, version control, etc.).
- Describe how computing enhances traditional forms and enables new forms of experience, expression, communication, and collaboration
- Identify how collaboration influences the design and development of software products.
Computing Practice and Programming standards[edit]
- Create and organize Web pages through the use of a variety of web programming design tools.
- Use mobile devices/emulators to design, develop, and implement mobile computing applications.
- Use various debugging and testing methods to ensure program correctness (e.g., test cases, unit testing, white box, black box, integration testing)
- Apply analysis, design, and implementation techniques to solve problems (e.g., use one or more software lifecycle models).
- Use Application Program Interfaces (APIs) and libraries to facilitate programming solutions.
- Select appropriate file formats for various types and uses of data.
- Describe a variety of programming languages available to solve problems and develop systems.
- Explain the program execution process.
- Explain the principles of security by examining encryption, cryptography, and authentication techniques.
- Explore a variety of careers to which computing is central.
- Describe techniques for locating and collecting small and large-scale data sets.
- Describe how mathematical and statistical functions, sets, and logic are used in computation.
Computers and Communications Devices standards[edit]
- Describe the unique features of computers embedded in mobile devices and vehicles (e.g., cell phones, automobiles, airplanes).
- Develop criteria for purchasing or upgrading computer system hardware.
- Describe the principal components of computer organization (e.g., input, output, processing, and storage).
- Compare various forms of input and output.
- Explain the multiple levels of hardware and software that support program execution (e.g., compilers, interpreters, operating systems, networks).
- Apply strategies for identifying and solving routine hardware and software problems that occur in everyday life.
- Compare and contrast client-server and peer-to-peer network strategies.
- Explain the basic components of computer networks (e.g., servers, file protection, routing, spoolers and queues, shared resources, and fault-tolerance).
- Describe how the Internet facilitates global communication.
- Describe the major applications of artificial intelligence and robotics.
Community, Global, and Ethical Impacts standards[edit]
- Compare appropriate and inappropriate social networking behaviors.
- Discuss the impact of computing technology on business and commerce (e.g., automated tracking of goods, automated financial transactions, e-commerce, cloud computing).
- Describe the role that adaptive technology can play in the lives of people with special needs.
- Compare the positive and negative impacts of technology on culture (e.g., social networking, delivery of news and other public media, and intercultural communication).
- Describe strategies for determining the reliability of information found on the Internet.
- Distinguish between information access and information distribution rights.
- Describe how different kinds of software licenses can be used to share and protect intellectual property.
- Discuss the social and economic implications associated with hacking and software piracy.
- Describe different ways in which software is created and shared and their benefits and drawbacks (commercial software, public domain software, open source development).
- Describe security and privacy issues that relate to computer networks.
- Explain the impact of the digital divide on access to critical information.
The Design Cycle[edit]
import random
import sys
board = [1,2,3,4,5,6,7,8,9]
x_squares = []
o_squares = []
def update_board(grid_place):
if grid_place in x_squares:
token = "X"
elif grid_place in o_squares:
token = "O"
else:
token = str(grid_place)
return token