Your browser is not supported. Please upgrade your browser to one of our supported browsers . You can try viewing the page, but expect functionality to be broken.

Computer Science Fundamentals

Free set of elementary curricula that introduces students to the foundational concepts of computer science and challenges them to explore how computing and technology can impact the world.

problem solving and computing lesson 7

Free, and fun, elementary courses for each grade

  • Six courses, one for each elementary grade
  • Equitable introductory CS courses
  • Use the same course for all students in the same grade, regardless of their experience
  • All courses make suitable entry points for students

Picking the right CS Fundamentals course for your classroom

With the diverse set of options offered for CS Fundamentals, there is a course for all different needs.

How will your students engage with the content?

Courses specifically designed for your elementary classroom.

Find the course for the grade you teach. Each course is approximately a month long.

Kindergarten

problem solving and computing lesson 7

Program using commands like loops and events. Teach students to collaborate with others, investigate different problem-solving techniques, persist in the face of challenging tasks, and learn about internet safety.

problem solving and computing lesson 7

Through unplugged activities and a variety of puzzles, students will learn the basics of programming, collaboration techniques, investigation and critical thinking skills, persistence in the face of difficulty, and internet safety.

problem solving and computing lesson 7

Create programs with sequencing, loops, and events. Investigate problem-solving techniques and develop strategies for building positive communities both online and offline. Create interactive games that students can share.

problem solving and computing lesson 7

Review of the concepts found in earlier courses, including loops and events. Afterward, students will develop their understanding of algorithms, nested loops, while loops, conditionals, and more.

problem solving and computing lesson 7

Make fun, interactive projects that reinforce learning about online safety. Engage in more complex coding such as nested loops, functions, and conditionals.

problem solving and computing lesson 7

Look at how users make choices in the apps they use. Make a variety of Sprite Lab apps that also offer choices for the user. Learn more advanced concepts, including variables and “for” loops.

Self-paced elementary curriculums

Teachers play a critical role in student learning by teaching our unplugged activities and leading whole class discussions, however, we recognize that CS Fundamentals isn't always taught in a traditional classroom setting. We provide two self-paced express courses alongside Courses A-F. These express courses are designed for situations where teachers allow each student to work at their own pace independently.

Grades: K-1

Pre-Reader Express

problem solving and computing lesson 7

Learn the basics of drag-and-drop block coding by solving puzzles and creating animated scenes. Make art and simple games to share with friends, family, and teachers.

Grades: 2-5

problem solving and computing lesson 7

Learn to create computer programs, develop problem-solving skills, and work through fun challenges! Make games and creative projects to share with friends, family, and teachers.

No devices? We have you covered

problem solving and computing lesson 7

Go ahead, cut the cord (for a while)!

CS education does not always need to be in front of a screen and device access shouldn't be a barrier to learning computer science concepts.

Resources that support you every step of the way

Sign up for a Code.org account to get access to materials that will help you teach computer science with confidence. Code.org has extensive resources designed to support educators, even those without prior CS teaching experience.

Lesson Plans

Get step-by-step guidance, learning objectives, and assessment strategies for effective teaching.

Helpful resources include slide decks, activity guides, rubrics, and more — all organized in one place. Each lesson plan is accompanied by tips for classroom implementation, differentiation ideas, and extension activities to cater to students of all abilities.

Instructional Videos

Watch easy-to-understand overviews of computer science and programming concepts.

Code.org video series are designed specifically to support your classroom and are engaging and fun to watch.

Slide Decks

We offer educators an organized, visually engaging, and pedagogically sound framework to deliver computer science lessons.

Code.org slide decks provide step-by-step instructions, examples, and interactive activities that align with curricular objectives.

problem solving and computing lesson 7

Assessments

Our curricula includes a comprehensive system of formative and summative assessment resources.

These include rubrics, checklists, mini-projects, end-of-chapter projects, student-facing rubrics, sample projects, and post-project tests — all designed to support teachers in measuring student growth, providing feedback, and evaluating student understanding.

problem solving and computing lesson 7

Programming Tools

Code.org's integrated development environments (IDEs) cater to students of all skill levels.

We offer a versatile and user-friendly platform that supports a variety of programming paradigms. This enables learners to seamlessly transition from block-based coding to text-based languages, and fosters creativity and innovation.

Professional learning that meets your needs

Get the support you need as you prepare to teach. Teachers love it, with over 90% ranking it the best professional development ever!

Facilitator-led Workshops

problem solving and computing lesson 7

Join local teachers for inspiring and hands-on support to implement computer science in your classroom. Our Regional Partners offer high-quality, one-day Code.org workshops for individual teachers or for schoolwide PD. Sign up for a professional development workshop near you!

Self-Paced Online Modules

problem solving and computing lesson 7

Through reading, viewing videos, completing interactive puzzles, and reflecting on your learning, you will develop your own understanding while preparing to teach computer science in your classroom.

Frequently asked questions

CS Fundamentals was written using both the K-12 Framework for Computer Science and the CSTA standards as guidance. Currently, every lesson in CS Fundamentals contains mappings to the relevant CSTA standards. The summary of all CSTA mappings for each course can be found at:

  • Course A Standards
  • Course B Standards
  • Course C Standards
  • Course D Standards
  • Course E Standards
  • Course F Standards

A Google Sheets version of the standards can be found at CSF Standards .

The leading K-12 CS curriculum in the United States, our elementary program has been proven effective in major urban school districts like Dallas, as well as small rural districts in Iowa. There is no need to hire specialists to teach CS. Our program is uniquely designed to support teachers new to CS while offering the flexibility to evolve lessons to fit student needs. Share this brochure with your school and district administrators, or suggest they take a look at our administrators page specially designed to answer administrators' most common questions.

Our curriculum and platform are available at no cost for anyone, anywhere, to teach!

New to teaching computer science? No worries! Most of our teachers have never taught computer science before. Join local teachers for inspiring and hands-on support to implement computer science in your classroom. Our Regional Partners offer high-quality, one-day Code.org workshops for individual teachers or for schoolwide PD. Sign up for a professional development workshop near you !

Join over 100,000 teachers who have participated in our workshops. The majority of our workshop attendees say, 'It's the best professional development I've ever attended.' In fact, 90% of attendees would recommend our program to other teachers !

Each CSF course includes 13-17 lessons designed for 45-minute periods. We recommend all students move from lesson to lesson at a pace set by the teacher. There are many teacher-led project levels designed to be experienced in unison while the skill-building lessons can be completed by students at their own pace.

Many lessons have handouts that guide students through activities. These resources can be printed or assigned digitally. Some lessons call for typical classroom supplies and manipulatives. Visit the CSF Syllabus to learn more .

Support and questions

problem solving and computing lesson 7

Still have questions? Reach out to us! We are here to help.

Our support team is here to answer any questions you may have about starting teaching with Code.org. You can also ask other teachers about their experience on our teacher forums.

Subscribe for updates

Sign up to receive monthly emails about Code.org's Computer Science Fundamentals and get helpful reminders, tips, and updates sent right to your inbox.

You can unsubscribe at any time.

problem solving and computing lesson 7

Please select your language

breadcrumb

  • Exploring Computational Thinking

As part of our ongoing partnership with the broader educational community, we are releasing the Google Exploring Computational Thinking resources (including the Computational Thinking for Educators online course) to several practitioner organizations working to support CT teaching and learning globally. The resources, including the curated collection of lesson plans, videos, and other resources were created to provide a better understanding of CT for educators and administrators, and to support those who want to integrate CT into their own classroom content, teaching practice, and learning. We encourage you to access all these resources at:

International Society for Technology in Education (ISTE)

  • ISTE U – Introduction to Computational Thinking for Every Educator
  • Exploring Computational Thinking resource repository

Australian Digital Technologies Hub

  • Lesson ideas mapped to the Australian Digital Technologies curriculum, based on the original resources developed as Exploring Computational at Google.

CT Overview

Computational Thinking (CT) is a problem solving process that includes a number of characteristics and dispositions. CT is essential to the development of computer applications, but it can also be used to support problem solving across all disciplines, including math, science, and the humanities. Students who learn CT across the curriculum can begin to see a relationship between subjects as well as between school and life outside of the classroom.

CT involves a number of skills, including:

  • Formulating problems in a way that enables us to use a computer and other tools to help solve them
  • Logically organizing and analyzing data
  • Representing data through abstractions such as models and simulations
  • Automating solutions through algorithmic thinking (a series of ordered steps)
  • Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
  • Generalizing and transferring this problem solving process to a wide variety of problems

These skills are supported and enhanced by a number of dispositions or attitudes that include:

  • Confidence in dealing with complexity
  • Persistence in working with difficult problems
  • Tolerance for ambiguity
  • The ability to deal with open ended problems
  • The ability to communicate and work with others to achieve a common goal or solution

CT concepts are the mental processes (e.g. abstraction, algorithm design, decomposition, pattern recognition, etc) and tangible outcomes (e.g. automation, data representation, pattern generalization, etc) associated with solving problems in computing. These include and are defined as follows:

  • Abstraction: Identifying and extracting relevant information to define main idea(s)
  • Algorithm Design: Creating an ordered series of instructions for solving similar problems or for doing a task
  • Automation: Having computers or machines do repetitive tasks
  • Data Analysis: Making sense of data by finding patterns or developing insights
  • Data Collection: Gathering information
  • Data Representation: Depicting and organizing data in appropriate graphs, charts, words, or images
  • Decomposition: Breaking down data, processes, or problems into smaller, manageable parts
  • Parallelization: Simultaneous processing of smaller tasks from a larger task to more efficiently reach a common goal
  • Pattern Generalization: Creating models, rules, principles, or theories of observed patterns to test predicted outcomes
  • Pattern Recognition: Observing patterns, trends, and regularities in data
  • Simulation: Developing a model to imitate real-world processes

See our Computational Thinking Concepts Guide for a printable version of this list, along with teaching tips for each concept.

CT Materials

Incorporate computational thinking (CT) into your curriculum with these classroom-ready lesson plans, demonstrations, and programs (available in Python and Pencil Code ). All materials in this collection have been aligned to both core subject* and CS** education standards. For more information on the connections between the CS education standards, see our International CS Education Standards crosswalk .

* See Common Core State Standards and Next Generation Science Standards ** See CSTA K–12 Computer Science Standards (United States), CAS: Primary School and Secondary School (United Kingdom), Australia , New Zealand , and Israel

Core Subject: All

Subject: All

Suggested Age: 8-18

Type: Reference

Computational Thinking Concepts Guide

This guide explores eleven terms and definitions for Computational Thinking (CT) concepts, enabling you to incorporate them into existing lesson plans, projects, and demonstrations. Teaching tips are included for each concept.

Differentiation Strategies Guide

This guide contains codes for seven differentiation strategies and their meanings. Differentiation strategies are practices for modifying content or instructional practices for a specific group of students.

Student Engagement Strategies Guide

This guide describes ten strategies for capturing and maintaining student attention during classroom lessons. These student engagement strategies can be interspersed throughout existing lesson plans, projects and activities to increase student interest in any topic.

Pseudocode Guide

This guide explores the benefits of using pseudocode, an informal, high-level description of the operating procedure of a computer program or other algorithm. With pseudocode, students can learn how plan out their programs even if they do not have access to a computer.

Introduction to Python

This guide to the Python programming languages helps you explore sample topics including mathematical notation, testing for equality, writing Python programs, and conditional logic.

Python Basics Quick Reference

This handy reference to programming in Python contains the most frequently used functions and syntax from the Exploring Computational Thinking lesson plans.

Core Subject: Computer Science

Subject: Algorithms and Complexity

Suggested Age: 14-18

Type: Lesson

Measuring the Complexity of a Function or Algorithm

This lesson plan explores problems that are easy for the computer to solve and problems that are difficult for the computer to solve. Students will learn how to measure the complexity of a function/algorithm and how this applies to real world situations.

Suggested Age: 8-12

Ciphering a Sentence

This lesson plan enables student to develop a cipher, encode a sentence, and then develop an algorithm for encoding and decoding.

Suggested Age: 11-18

Algorithmic Thinking

This lesson plan demonstrates that an algorithm is a precise, step-by-step set of instructions. Students will be asked to create oral algorithms to solve problems that other students can then use effectively.

Suggested Age: 11-14

Divide and Conquer

This lesson plan requires students to use a ‘divide-and-conquer’ strategy to solve the mystery of the “stolen crystals”. Students will use decomposition to break the problem into smaller problems and algorithmic design to plan a solution strategy.

Water Water Everywhere!

This lesson plan presents students with the challenging problem of measuring a volume of water using containers of the wrong measurement size. Students will decompose a complex problem into discrete steps, design an algorithm for solving the problem, and evaluate the solution efficiencies and optimization in a simulation.

Data Compression

This lesson introduces students to the need for data compression and methods for reducing the amount of data in both text and images by applying a filter. By looking for patterns and adjusting the algorithm based on the results, students will learn to reduce the memory size with minimal impact on the quality.

Subject: Data Analysis

Suggested Age: 8-15

Describing an Everyday Object

This lesson plan explores the difficulty of providing detailed descriptions of objects without using their names. The CT concepts covered include abstraction, data representation and pattern recognition.

Exploring Your Environment

This lesson plan enables students to gather data about a place or environment, organize that data in a table, and look for patterns. The CT concepts covered include data collection, data representation, data analysis, and decomposition.

Subject: Logic

Suggested Age: 9-12

Machine Testing

This lesson plan presents students with a mysterious new machine and requires them to develop testing strategies to determine its functionality.

Solving a Guessing Game with Data

This lesson plan requires students to develop two guessing games. The CT concepts covered include data collection, data representation, data analysis, and algorithm design.

Subject: Software Development

Suggested Age: 13-18

Functions and Algorithms

This lesson plan enables students to identify, evaluate, follow, and create functions, including functions that loop, functions that include decisions, and functions that include both. The activities increase in difficulty and students should continue as far as they are able to.

Core Subject: English-Language Arts

Subject: Language

Indefinite Articles

This lesson plan explores the usage of ‘a’ and ‘an’. Students will use pattern recognition and pattern generalization to determine when to use these indefintite articles and then develop a written algorithm that enables them to refine basic algorithms to handle exceptions to a generalized rule.

Suggested Age: 8-10

Mystery Word X

This lesson plan enables students to analyze the classification of nouns and verbs. They begin by considering nouns as “a person, place, or thing” and verbs as “action words. They then run a group of words through a series of "tests" and identify instances in which this standard notion might lead to errors.

Present Participle

This lesson plan enables students to investigate how the ending letters of a verb affect its spelling as tense changes. Students begin by simply adding ‘ing’ to the end of verbs. By identifying patterns in the spelling of verbs for which this works and those for which it does not, students build a stronger algorithm for conjugating verbs.

Finding Patterns in Spelling Errors and History

This lesson plan helps students learn how to analyze spelling errors and large data sets to find patterns, develop abstractions, and discover how large amounts of data can reveal much about our society.

Suggested Age: 10-14

Writing a Story

This lesson plan enables student to collaborate with others to build a story, identify any "bugs" in the story, and fix those bugs to give the story a more logical flow.

Type: Program

Interactive Fiction

This Pencil Code program enables students to create a simple piece of interactive fiction with three "pages", with one function representing each page, and buttons to select the next action. Students can analyze, fill in, or change parts of the program.

Interactive Mad Libs

This Pencil Code program creates an interactive Mad Libs game, prompting the user to enter several words matching requested parts of speech and then stitching them together in humorous sentences. Students can analyze, fill in, or change parts of the program.

Interactive Mad Libs (Variation)

This Pencil Code program is a variation on the interactive Mad Libs program that automatically generates sentences by randomly choosing words. Students can analyze, fill in, or change parts of the program.

Lady Macbeth Chat Bot

This Pencil Code program enables students to create an interactive chat bot that answers questions as if it were Lady Macbeth. Students can students analyze, fill in, or change parts of the program.

Stroke Order of a Chinese Character

This Pencil Code program enables students to illustrate the stroke order of a chinese character by creating their own rendering of a Chinese character and drawing the strokes in the right order. Students can analyze, fill in, or change parts of the program.

Type: Exploration

This exploration gives students algorithms they can modify to improve the virtual Countess Ada Lovelace's ability to respond to questions.

Core Subject: History Social Science

Subject: US History

Map Visualization

This Pencil Code program provides a simple way to illustrate statistics geographically by drawing bubbles on a map. Students can analyze, fill in, or change parts of the program.

Population Statistics

This Pencil Code program enables student to create a population graph from data in a spreadsheet. Students can analyze, fill in, or change parts of the program.

Core Subject: Mathematics

Subject: Algebra

Suggested Age: 12-15

Linear Association

This lesson plan uses CT concepts to explore the linear association between variables using two sets of data. Students will read data in a spreadsheet and in a graph and identify positive and negative linear association based on the shape of the graph.

Degrees and Radians

This lesson plan uses basic patterns to label key points on the unit circle in terms of degrees, and then follows a similar process to relabel these points in terms of radians. Students can then develop an algorith to convert between degrees and radians based on the patterns they used to count their way around the unit circle.

Slope and Y-Intercept

This lesson plan uses CT to explain the properties of slope and y-intercept. Students will learn how to calculate the slope and y-intercepts of a line that passes through a given set of points, and then use Python to solve various challenging slope and y-intercept exercises.

Suggested Age: 13-16

Two Workers

This Python program helps students solve word problems with two people working together at different rates. Students can analyze, fill in parts of, or enhance the program to solve more sophisticated work problems.

Three Workers

This Python program helps students solve word problems with three people working together at different rates. Students can analyze, fill in parts of, or enhance the program to solve more sophisticated problems.

Savings and Interest

This Python program helps students understand how to calculate interest based on the savings amount, interest rate, and number of years of investing. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

This Python program helps students conceptualize the following word problem: Charisse is buying two different types of cereals from the bulk bins at the store. Granola costs $2.29 per pound, and muesli costs $3.75 per pound. She has $7.00. Use x as the amount of granola and y as the amount of muesli. How many pounds of granola can she buy if she buys 1.5 pounds of muesli?

DVD Rentals

This Python program helps students conceptualize the following word problem: Shanti has just joined a DVD rental club. She pays a monthly membership fee of $4.95, and each DVD rental is $1.95. If Shanti’s budget for DVD rentals in a month is $42, how many DVDs can Shanti rent in her first month if she doesn’t want to go over her budget?

Theme Park Ride

This Python program helps students conceptualize the following word problem: There are 90 people in line at a theme park ride. Every 5 minutes, 40 people get on the ride and 63 join the line. Estimate how long it would take for 600 people to be in line.

T Tables for Simple Functions

This Python program helps students compute the T table for a given function. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Suggested Age: 12-16

This Python program helps students understand ratios by solving for x in the equation a/b = c/d, where x can be in any location in the two fractions. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Quadratic Formula

This Python program helps students automatically compute the quadratic formula given the values of a, b and c. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

This Python program helps students use their knowledge of FOIL on zero-variable or one-variable expressions to automatically solve various expressions. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Factoring Perfect Square Binomial Expressions

This Python program helps students factor binomial expressions into the form (x+c)^2 if the expression fits the pattern. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Distance, Rate, Time

This Python program helps students automatically compute distance, rate, or time, given two of the three variables. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Binomial Products

This Python program helps students automatically calculate the binomial product, that is, (ax + b)(cx + d) = acx^2 + adx + bcx + bd. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

This Python program helps students see the connection between a mathematical function and a programmatic function by defining a function in Python and seeing what it means to pass a value to that function.

Properties of Quadratic Equations

This Python program helps students apply their knowledge of quadratic equations to automatically complete the square of a quadratic equation and find the location of the vertex. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Substitution with Two Equations

This Python program enables students to substitute and solve for variables using two equations. The first equation can be any equation; the second must be of the form variable = ... where variable appears in the first equation. Students can analyze the program or predict the substitution given the two equations.

Pascal’s Triangle

This Python program illustrates how Pascal’s Triangle is computed. Students can trace through the program and learn more about nested for-loops and why they are needed in certain applications. This program may require additional guidance from the educator.

Vertex of a Quadratic

This Python program anables students to calculate the vertex for any given quadratic and automatically calculate the vertex (h, k) for a given quadratic in the form of y = ax^2 + bx + c. Students can analyze or fill in parts of the program to reinforce their understanding.

Roots of an Equation

This Python program enables students to solve for the roots of an equation. Students can analyze or fill in parts of the program to reinforce their knowledge.

Conic Sections

This Python program illustrates how the coefficients of functions representing conic sections can be used to determine the type of conic section (circle, ellipse, hyperbola) and display results based on that conic section. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Combinations: n choose k

This Python program enables students to check solutions to combinations (n choose k) exercises. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Matrix Multiplication

This Python program helps students develop their understandings of matrix multiplication by performing it on two randomly generated matrices. Students can analyze or fill in parts of the program to reinforce their understanding. This program is fairly sophisticated and may only work for students with prior Python experience.

Logarithm Notation

This Python program helps students develop their understanding of logarithm notation by automatically computing the result of a given base and exponent and displaying it in log notation. Students can analyze or fill in parts of the program to reinforce their knowledge.

Determinant of a 3x3 Matrix

This Python program enables students to find the determinant of a 3x3 matrix. Students can analyze or fill in parts of the program to reinforce their knowledge.

Determinant of a 2x2 Matrix

This Python program enables students to find the determinant of a 2x2 matrix. Students can analyze or fill in parts of the program to reinforce their knowledge.

Subject: Arithmetic

This Pencil Code program enables student to play the "chaos game" by randomly moving the turtle to create a pattern. Students can analyze, fill in, or change parts of the program.

Graphing Sums of Dice Rolls

This Pencil Code program illustrates randomness by rolling two dice 100 times and graphing the results in two different ways.

Random Number Illustrator

This Pencil Code program can be used to generate and then illustrate a random number. Students can analyze, fill in, or change parts of the program.

Sum of Two Dice

This Pencil Code program can be used to roll two dice a number of times and then print the sum. Students can analyze, fill in, or change parts of the program.

Subject: Calculus

Suggested Age: 16-18

Instantaneous Rate of Change

This Python program enables students to determine the instantaneous rate of change for a given function and then automatically calculate it for a given function. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Calculating Definite Integrals

This Python program enables students to calculate the definite integral for a given function and then automatically calculate it for a specified function. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Fundamental Theorem of Calculus

This Python program enables students to use the Fundamental Theorem of Calculus for a given function and automatically calculate it for a specified function. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Mean and Standard Deviation

This lesson plan demonstrates how to use standard deviation to better understand a set of data. Students will use standard deviation to determine the general pattern/shape of a given set of data to draw more reliable conclusions.

Application and Modeling of Standard Deviation

This lesson plan explores using the central tendency to discover patterns in data. Students will simulate a dice-throwing game and alter the algorithm design to reflect changes to the game. The CT concepts covered include data collection, decomposition, abstraction, and data analysis.

Using Data from Sensors - Introduction

In this lesson plan, students identify and describe various sensors. Students will use sensors to collect data and use Computational Thinking to decompose one large problem into multiple smaller problems.

Using Data from Sensors - Filters and Functions

In this lesson plan, student explore the use of filters to isolate and analyze data generated by various types of sensors. Students use computational thinking to identify patterns generated by a potential agent during a specific activity (such as a human falling to the ground).

Continuous vs Discrete Data - Introduction

This lesson plan illustrates how data can be continuous or discrete. Students will collect data from classmates and then use data analysis and data representation to label the data as continuous or discrete. They will also learn to recognize different graphical and tabular representations of data as discrete and continuous.

Continuous vs Discrete Data - Modeling Continuous Functions

This lesson plan requires students to apply their knowledge about continuous and discrete data to categorize data from historical calculations of the speed of light and to examine the effects of modeling a continuous curved shape with an increasing number of discrete points and segments.

Subject: Geometry

Turtle Geometry

This exploration provides students an opportunity to understand the relationship between the number of sides in a regular polygon and its angles. Students will draw shapes using simple commands like 'turn right 90 degrees' and 'move forward 100 steps' and use the patterns they find to write an algorithm for drawing any regular polygon.

Suggested Age: 13-17

Area of a Circle

This lesson plan uses CT to explain the derivation of the formula A = pi*r^2. Students will complete Python programs that calculate the area of a circle as well as individual sectors.

Finding the Shortest Path

This lesson invites students to develop a process for traveling across the country in the most efficient way possible. Students will refine their process after experimenting with smaller networks of points as well as a varient of the Traveling Salesperson problem.

Suggested Age: 11-16

Pythagorean Theorem - Pencil Code

This Pencil Code program enables students to use the Pythagorean Theorem to calculate a third side of a right triangle given the other two sides. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Acute, Obtuse, and Right Triangles

This Python program helps students precisely define the relationships between the angles for different types of triangles (acute, obtuse, or right). Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Calculating Surface Area

This Python program helps students use surface area formulas to automatically to calculate the surface areas of several geometric objects (cube, rectangular prism, cylinder, sphere). Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Pythagorean Theorem - Python

This Python program helps students use the Pythagorean Theorem to calculate a third side of a right triangle given the other two sides. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Polygonal Formulas

This Python program helps students use formulas related to polygons to display several results based on the number of sides of a polygon. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Distance Between Two Points

This Python program helps students use the distance formula to automatically calculate the distance between two points (x1, y1) and (x2, y2). Students can analyze or fill in parts of the program to reinforce their understanding.

Area Calculations

This Python program demonstrates how area formulas can be used to automatically compute the area of various geometric objects. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Suggested Age: 12-14

This lesson plan requires students to apply logical reasoning to deduce information from rules in a game scenario. The CT concepts covered include data representation, data analysis, and decomposition.

Pattern Machine

This lesson plan requires students to play a triplet game in which a set of three numbers can be described according to a specific rule. Students use data analysis to recognize and generalize patterns from which they derive the rule and solve the puzzle.

This lesson plan requires student to use logical reasoning to deduce information about the labels on fruit boxes based upon rules. The CT concepts covered include data analysis and simmulation.

Suggested Age: 10-12

Logic Party

This lesson plan requires students to solve a numerical problem using constraints to graphically eliminate possibilities and arrive at the correct answer. The CT concepts covered include data representation, data analysis, and decomposition.

Subject: Pre-Algebra

Fraction Addition and Common Denominators

This lesson plan explores how to find a common denominator between two fractions and add or subtract the fractions. It covers a variety of CT concepts, including decomposition, abstraction, pattern recognition, pattern generalization and algorithm design.

Multiplication with Fractions

This lesson plan explores how to visualize the multiplication of fractions and identify patterns between the multiplicands and their product. Upon completion of this lesson, students will be able to multiply simple fractions using a visual model and a computational algorithm.

Suggested Age: 11-13

Ratios and Proportions

This lesslon plan uses CT concepts and the Python programming language to develop an algorithm for answering questions involving ratios and proportions. It coveres a variety of CT concepts including problem decompostion, abstraction, pattern identification, pattern generalization and algorithm design.

Multiplying by Numbers Between Zero and One

This lesson plan uses CT concepts to to demonstrate that when multiplying a positive number by a decimal between 0 and 1, the product is always less than the original number.

Dividing by Numbers Between Zero and One

This lesson plan uses CT concepts to demonstrate that when dividing a positive number by a decimal between 0 and 1, the quotient is always greater than the original number.

Common Fractions and Equivalent Percentages

This lesson plan uses CT concepts to demonstrate the conversion of common fractions into their equivalent percentages. Students identify patterns between fractions, decimals, and percents, and generalize these patterns.

Percent Change

This lesson plan uses CT concepts to demonstrate how to calculate the percent change between any two numbers. Students identify patterns in percent change and decompose an algorithm to help strengthen their understanding.

Scientific Notation

This lesson plan uses CT concepts to identify patterns between the exponent, the number of places the decimal point moves, and the direction the decimal point moves when multiplying by powers of ten.

Percentages

This lesson plan uses CT concepts to demonstrate how to develop an algorithm for calculating percentages using mental math.

Long Multiplication on Two-Digit Numbers - Pencil Code

This Pencil Code program enables student to perform long multiplication on two-digit numbers, for example, 42 x 31. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Long Multiplication on Two-Digit Numbers - Python

This Python program enables students to perform long multiplication on two-digit numbers, for example, 23 x 46. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Fractions and Proportions

This Python program enables students to check whether two fractions are proportional. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Lemonade and Glasses

This Python program helps students conceptualize word problems, specifically: Sam has a jar with 5 cups of fresh lemonade. Jack has some glasses which hold 1.5 cups each of liquid. How many glasses of lemonade can Jack serve of Sam’s lemonade?

Evaluating Expressions

This Python program llustrates how a basic calculator functions. It introduces Python’s eval function as a way of computing expressions containing variables a, b, and c when given values for each of these variables. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Midpoint Between Two Points

This Python program helps students apply their knowledge of the midpoint formula to automatically calculate the midpoint between two points (x1, y1) and (x2, y2). Students can analyze or fill in parts of the program to help reinforce their understanding.

Complementary and Supplementary Angles

This Python program helps students apply their knowledge of complements and supplements to automatically compute the complement and supplement of a given angle. Students can analyze or fill in parts of the program to help reinforce their understanding.

Populations

This Python program helps students determine how long it will take to reach a certain target population, given a starting population, birthrate, and death rate. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Rock Climber, Cliff, and Shadows

This Python program helps students conceptualize the following word problems: A rock climber wants to know the height of a cliff. She measures the shadow of her friend, who is 5 feet tall and standing beside the cliff and measures the shadow of the cliff. If the friends shadow is 4 feet long and the cliffs shadow is 60 feet long, how tall is the cliff?

Basketball Hoops and Buildings

This Python program helps students conceptualize the following word problem: A basketball rim 10 ft high casts a shadow 15 ft long. At the same time, a nearby building casts a shadow that is 54 ft long. How tall is the building?

Fractional Exponents

This Python program demonstrates fractional exponents by automatically computing one based on a given base and fractional exponent. Students can analyze or fill in parts of the program to reinforce their knowledge.

Subject: Statistics and Probability

Combinations with Repeats

This lesson plan uses CT concepts to illustrate how to compute the number of possible arrangements for a given number of digits in a given number of spaces. Students will identify patterns in relatively easy cases that can lead them to an algorithm which applies to all cases.

Factorials with Names

This lesson plan uses CT concepts to investigate the number of possible arrangements of the letters in a given name. Students will identify patterns in the number of possible arrangements given an increasing number of letters, and then decompose the results to arrive at the factorial function.

Sorting Data

This lesson plan illustrates how to sort data using spreadsheet functions and/or Python. Students compare the algorithms used by both tools and then write their own algorithms for analyzing data with the mean, median, and mode.

Surveys and Estimating Large Quantities

This lesson plan shows students how to estimate the approximate size of data and determine the extent to which that data is realiable. Students will observe smaller data sets and identify patterns that enable them to make general predictions and to create algorithms capable of making approximations.

Randomness in Stochastic Models

This lesson plan explores random variables and probability. In this lesson, students will be introduced to methods to create random numbers as well as ways in which randomization can be used in scientific experiments.

Stochastic and Deterministic Modeling

This lesson plan explores deterministic models (the output is always the same) and stochastic models (the output is based on random sampling and can vary) and how, by modeling real phenomena using simulations, it is possible to improve a model and make better predictions.

Analyzing Discrete and Continuous Data in a Spreadsheet

In this lesson plan, students will collect data in a spreadsheet and learn to use various functions and analysis tools to better see patterns in their eating habits.

Analyzing Discrete and Continuous Data in a Map

This lesson plan illustrates how data is more than just numbers and that a map can also be a source of both discrete and continuous data. Using various tools, students will analyze and calculate the amount of urban open space available in their city.

Correlation vs Causation

In this lesson, plan, students will test the strength of a correlation and discern whether or not a law or conclusion can be made based on that correlation. Students will see the threshold commonly accepted for correlating data and test their own assumptions about causation.

Data Aggregation and Decomposition (Advanced Python)

This lesson plan explores how to use/analyze data to draw conclusions about the world around us. Students will improve their computational thinking by collecting/aggregating data onto a spreadsheet, identifying patterns in their data, decomposing the data into specified groups for analysis and further pattern recognition, and modifying an algorithm written in Python to facilitate data analysis.

Data Aggregation and Decomposition (Google Sheets)

This lesson plan uses CT to help students decompose and re-aggregate small sets of data using Google Sheets. Students use decomposition to break down long lists of information and write basic algorithms to use for the data analysis process.

The Law of Large Numbers and Probability

This lesson plan uses CT to help students use large amounts of data to explore the Law of Large Numbers and the Birthday Paradox to see how closely projected calculations match outcomes in the real world.

Generating Complex Behavior with Algorithms

This lesson plan provides examples of complex behavior that students can explore such as flipping a coin and cellular automata. Students can modify the algorithms to see the impact it has on the behavior.

Subject: Trigonometry

Suggested Age: 12-17

Application of Sin(x) and Cos(x)

This Python program enables students to graph two functions and apply their knowledge of the fact that C*sin(x + p) is the same as A*sin(x) + B*cos(x), for the right choice of A and B. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Core Subject: Music

Subject: Music

Making Music with Algorithms

This lesson plan allows students to examine the various aspects of music such as scales, melody, and rhythm. The patterns they discover will enable them to modify an algorithm to improve the quality of the music generated by the algorithm.

Core Subject: Science

Subject: Biology

Modeling the Genome using Computational Thinking

This demonstration explores how scientific knowledge of DNA progressed over the course of sixty years to the point where scientists could encode genes using a computer. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling GDP and Waste using Computational Thinking

This demonstration explores the hazards of making decisions based on incomplete data. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling Natural Selection using Computational Thinking

This demonstration illustrates how Charles Darwin and Gregor Mendel use Computational Thinking methods to make foundational discoveries in natural selection. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Suggested Age: 14-17

Cell Biology - Filters

This lesson plan uses CT to improve students' understandings of filters in cell bioloigy. Students will find patterns in filters of all types to help them understand how these filters function. Prior to this lesson, have students complete the related lesson titled Inquiry and Observation.

Cell Biology - Filter Design and Construction

This lesson plan uses Computational Thinking to help students understand the movement of molecules across a cell membrane. Students will decompose their “molecules” to develop a design for their own “cell membranes” and then write an algorithm to describe them before building them. Prior to this lesson, have students complete the related lesson titled Filters.

Classifying Objects with Computational Thinking

This exploration uses the game '20 Questions' to have students estimate the number of questions necessary to guess any species on Earth. Students will first examine a few smaller classification examples using only 'yes' and 'no' questions, and then will generalize these patterns to develop an equation for classifying any object.

Subject: Chemistry

Modeling Electron Configuration using Computational Thinking

This demonstration uses Computational Thinking to show the relationship between electron configuration and an element’s position in the periodic table. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction and algorithm design to show how the atomic number of an element affects the configuration of its electrons.

Modeling Radioactive Decay using Computational Thinking

This demonstration explores how Computational Thinking is used to model the radioactive decay of an element. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling Boyle's Law using Computational Thinking

This demonstration describes how Computational Thinking can be used to understand the relationship between pressure and volume in a container of gas as described by Boyle’s Law. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Patterns in the Periodic Table

This lesson plan illustrates how spreadsheet functions can be used to identify organizational patterns in the periodic table. The spreadsheet functions presented can be used on any data set.

Sorting the World's Cities (Google Sheets)

This lesson plan demonstrates how to use spreadsheet functions to sort and graph data. Once the data is sorted, students can begin to identify patterns and trends.

Sorting the World's Cities (Advanced Python)

This lesson plan demonstrateshow to read data from a spreadsheet into a Python program and then sort that data. When taught in conjunction with Sorting the World's Cities with Excel, this lesson can help student make the connection between writing a program and using a spreadsheet application.

What is Data? - Introduction

This lesson plan describes what data is, how prevalent it is, and how it can be used to make informed decisions. The CT concepts covered include pattern recognition and data representation.

What is Data? - Code Breaking and Patterns

This lesson plan introduces the concept of data. Students will create new data, look for patterns in existing data and attempt to decode text and numeric messages. They will use data analysis, including pattern recognition, to make sense of the provided data.

This Python program enables students to process data sets using a simple sorting algorithm. It can also be used to illustrate how sorting might be done automatically by an application such as Excel.

Subject: Earth Science

Energy Analysis

This lesson plan explores how spreadsheet functions can be used to analyze data on energy production and consumption around the world. Students learn how to display the results of their data collection on a map of the world, creating a visual representation of the numbers they input into their spreadsheets. This example is most suitable for high school biology or earth science classes.

Subject: Physics

Modeling Projectile Motion using Computational Thinking

In this demonstration illustrates how a program can be used to simulate projectile motion. It enables students to see how decomposition, pattern recognition and abstraction can be used to understand natural phenomena.

Modeling Pendulums using Computational Thinking

This demonstration illustrates how Computational Thinking concepts can be used to explore the laws that govern a pendulum’s motion. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling Free Fall using Computational Thinking

This demonstration explores how Galileo used Computational Thinking and inclined planes to calculate acceleration of a sphere in free fall. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Working with Large Tables of Data

This lesson plan enables students to work with large tables of GPS data. Students will learn to sort, manipulate, and visualize data so it can be easily understood.

Simulating a Bouncing Ball

This exploration breaks down the components of motion so students can understand and improve an algorithm for making a ball bounce.

Below is a list of resources on computational thinking (CT). This list is not meant to be comprehensive, but is instead a curated collection of resources that educators and administrators might find useful. For additional computer science and CT resources, try our CS Custom Search .

For educators

General CT Resources

  • Computational Thinking for Educators - Online course for learning what CT is and how it can be integrated into a variety of subject areas by exploring examples of CT in your subject area, experimenting with examples of CT-integrated activities, and creating a plan to incorporate it into your classroom
  • Computational Thinking - by Jeannette M. Wing (Communications of the ACM)
  • Bringing Computational Thinking to K-12 - by Valerie Barr and Chris Stephenson (ACM Inroads)
  • Computational Thinking Teacher Resources - provided by ISTE and CSTA
  • Computational Thinking with Scratch - provided byHGSE, EDC, and MIT
  • Introduction to Computational Thinking - provided by Bitesize BBC
  • Computational Fairy Tales (books) by Jeremy Kubica

CT Tips and Strategies

  • Computational Thinking Concepts Guide - Comprehensive list of the CT concepts noted on ECT, including tips on implementing each concept in the classroom
  • Student Engagement Strategies Guide - Research-based strategies for engaging students
  • Differentiation Strategies Guide - Strategies for differentiating instruction in your classroom, based on the groups defined in the Next Generation Science Standards

CT in Computer Science

  • CS First - Free, easy-to-use materials based on Scratch that are themed to attract students with varied interests
  • CS Unplugged - Free resources and learning activities that teach the principles of Computer Science
  • Bebras Challenge : Anytime computing challenges and tasks to introduce students to computational and logical thinking
  • Alice - Block-based programming language for creating animations, games, or videos using object-oriented programming constructs in a 3D environment
  • App Inventor - Block-based programming language for creating mobile apps for Android
  • Pencil Code - Block- and text-based programming environment for creating art, music, games, and stories
  • Scratch - Block-based programming language for creating interactive stories, animations, games, music, and art
  • Desmos and Geogebra - Two free tools for exploring patterns in math
  • Mathalicious - Meaningful and relevant math content with examples of how math is used to solve intriguing questions from a variety of subjects
  • Project Euler - Mathematical challenges that require CT to solve them
  • Bootstrap - Curriculum that teaches math through computer programming
  • CS in Algebra - Partnership between Code.org and Bootstrap which teaches algebraic and geometric concepts through computer programming

CT in Science

  • Netlogo - Block-based, multi-agent programmable modeling environment
  • CS in Middle School Science - Collection of modules and lessons that augment traditional science instruction with CT through engaging modeling and simulation activities
  • PhET Interactive Simulations - Library of interactive, research-based science simulations of physical phenomena that encourage quantitative exploration
  • Project GUTS (Growing up Thinking Scientifically) Curriculum - Collection of middle school science units integrating CT
  • Wolfram Alpha - Computational knowledge engine for computing answers to queries using facts rather than providing the users with a list of documents or websites

CT in English/Language Arts

  • Google Ngram Viewer - Discover patterns and trends in literary works over the last two centuries

CT in Art, Design, Media

  • Processing - Programming language and environment for creating programs that are visual and interactive
  • Pixly - Block-based programming language for exploring media computation (pixel manipulation of images)

CT in Music

  • EarSketch - Computational music remixing and sharing development environment with complementary curriculum

For administrators

CT for School Leaders

  • ISTE Computational Thinking Leadership Toolkit

CT in the Science Classroom

  • Science and Engineering Practices in the NGSS - See “Practice 5 Using Mathematics and Computational Thinking”

Computer Science Education Standards

  • International CS Education Standards crosswalk
  • Computer Science Teachers Association (CSTA) - United States
  • Computing at School (CAS): Primary School and Secondary School - United Kingdom
  • New Zealand

Why is Python the programming language used in the CT materials?

Python is one of the easier languages to start with that is free and easy to download. It offers users two modes: the interpreter mode and the editor mode. See Introduction to Python for general information on how to introduce and use Python in your curriculum, or visit http://www.python.org/ for general Python information.

Some of the Python programs seem too advanced for my students. How can I adapt the materials to work for my particular students?

In developing our exemplar lessons and examples, we wanted to illustrate the various techniques used in computational thinking, from decomposition to algorithm design and implementation. However, we agree that not all the programming exercises are suitable for all students. Thus we really encourage you to adapt our materials to suit the needs of your classroom, which may be dependent on the computing resources you have available as well as the grade and skill level of your students. Below are some ways in which you may choose to adapt our materials:

  • Have students complete all of the exercises that lead up to the programs, and have them explain how they would design such an algorithm in their own words instead of writing actual Python programs
  • Expose students to the programs by projecting them, analyzing them step-by-step as a class, and then running them using values and variables provided by your students
  • Remove logical code sections from the completed programs and have students work together to fill in the missing parts
  • Have students work together to enhance a completed program to solve more sophisticated problems that involve different scenarios

How do I install Python on my computer?

Visit http://www.python.org/ for information on how to download and install Python to your computer. Alternatively, if you are unable or do not want to download Python to your computer, you can search online for ‘online Python editor’ to explore the different web-based Python editors.

  • About Google

Default image for pages

Download Free Curriculum

problem solving and computing lesson 7

CKSci Unit 7: Problem-Solving and Computers

Focus: In this Grade 4 unit,  Problem-Solving and Computers , the goal of the instruction and cumulative experiences is for students to continue articulating steps of increasing complexity to solve problems. Their understanding of developing and following a correct step-by-step procedure when developing computer programs is enhanced by the reading and activities in this unit.

The key question guiding the unit is: What kinds of problems can we solve with computers?

In this unit students build on their understanding of symbols, codes, signals, and step-by-step instructions established in the previous grade. Beyond dissecting solutions into granular steps, students think forward in scenarios with conditional branching options (if-then statements) and loops (if-then, repeat prior instruction). Students relate what computing devices do to their programming, and they build an understanding that complex computer programming is the outcome of building, layering, and chaining together links of fundamentally simple code.

Students explore questions that include the following:

  • What is a system and what are common objects and common parts?
  • How do I model how information is broken down into packets, transmitted, and reassembled?
  • What is the difference between private and personal information?
  • What are the different tools for collection of various types of data?
  • How do algorithms provide instructions to computers?
  • What are common examples of events, sequences, loops, and conditionals?
  • How do you credit the creative work of others?
  • What is design accessibility and how can I use it when programming computers?
  • What are the positive and negative impacts of technology on society?

Number of Lessons:  10 (Each Lesson is divided into Lesson Parts.)

Instruction Time:

  • Each  Lesson  may be divided into  Lesson Segments .
  • Each  Lesson Segment  is designed to be completed in one 30–45-minute class period.
  • Some single-day activities  and performance tasks might require setting aside a longer block of time.
  • This  Unit should be completed in about 27 classroom days.
  • A  Pacing Guide   Template  is provided within the Teacher Guide so teachers can map out customized instructional days for this unit.
  • A complete list of  Materials  needed to complete the unit is provided in  Online Resources .

Additional Search Terms: computer system • troubleshooting • trial and error • private • IP address • packet • identity theft • data • personal and private information • online • if-then statements • algorithm • code • event • loop • sequence • usability • bug • debug • crash • ethics • attribute • copyright • credit • barcode • nonfiction • informational text

Individual Resources

This is the default image

The Student Readers offer engagingly written and richly illustrated text on the topics specified for the unit. Each volume includes color illustrations, vocabulary sidebars, and a glossary.

This is the default image

The Teacher Guide provides detailed lesson plans for each Student Book chapter, as well as activity page masters, assessments, and additional activities to reinforce the lesson content.

This is the default image

The Online Resources includes a Pacing Guide, Material Supply List, and other helpful information for comprehensive classroom activities.

Intermediate Coding with Micro:bit

problem solving and computing lesson 7

Lesson 7: Solving Problems Part 1

Now that you have learned all about micro:bit, the inputs, the outputs, and how to write code, let’s put it all together to solve some real world problems.

There is a case study in the guide , or you may have your own problem you want to solve! Either way, make sure to answer all questions in the guide , and read the rubric .

You can find the slides at the link below, either as Google Slides or as an Adobe PDF download.

⚡ Need to reflash your Micro:bit? Click here for instructions .

Now, complete the activities below.

FREE K-12 standards-aligned STEM

curriculum for educators everywhere!

Find more at TeachEngineering.org .

  • TeachEngineering
  • Problem Solving

Lesson Problem Solving

Grade Level: 8 (6-8)

(two 40-minute class periods)

Lesson Dependency: The Energy Problem

Subject Areas: Physical Science, Science and Technology

Partial design

  • Print lesson and its associated curriculum

Curriculum in this Unit Units serve as guides to a particular content or subject area. Nested under units are lessons (in purple) and hands-on activities (in blue). Note that not all lessons and activities will exist under a unit, and instead may exist as "standalone" curriculum.

  • Energy Forms and States Demonstrations
  • Energy Conversions
  • Watt Meters to Measure Energy Consumption
  • Household Energy Audit
  • Light vs. Heat Bulbs
  • Efficiency of an Electromechanical System
  • Efficiency of a Water Heating System
  • Solving Energy Problems
  • Energy Projects

TE Newsletter

Engineering connection, learning objectives, worksheets and attachments, more curriculum like this, introduction/motivation, associated activities, user comments & tips.

Engineers are creative problem solvers

Scientists, engineers and ordinary people use problem solving each day to work out solutions to various problems. Using a systematic and iterative procedure to solve a problem is efficient and provides a logical flow of knowledge and progress.

  • Students demonstrate an understanding of the Technological Method of Problem Solving.
  • Students are able to apply the Technological Method of Problem Solving to a real-life problem.

Educational Standards Each TeachEngineering lesson or activity is correlated to one or more K-12 science, technology, engineering or math (STEM) educational standards. All 100,000+ K-12 STEM standards covered in TeachEngineering are collected, maintained and packaged by the Achievement Standards Network (ASN) , a project of D2L (www.achievementstandards.org). In the ASN, standards are hierarchically structured: first by source; e.g. , by state; within source by type; e.g. , science or mathematics; within type by subtype, then by grade, etc .

Ngss: next generation science standards - science.

View aligned curriculum

Do you agree with this alignment? Thanks for your feedback!

International Technology and Engineering Educators Association - Technology

State standards, national science education standards - science.

Scientists, engineers, and ordinary people use problem solving each day to work out solutions to various problems. Using a systematic and iterative procedure to solve a problem is efficient and provides a logical flow of knowledge and progress.

In this unit, we use what is called "The Technological Method of Problem Solving." This is a seven-step procedure that is highly iterative—you may go back and forth among the listed steps, and may not always follow them in order. Remember that in most engineering projects, more than one good answer exists. The goal is to get to the best solution for a given problem. Following the lesson conduct the associated activities Egg Drop and Solving Energy Problems for students to employ problem solving methods and techniques. 

Lesson Background and Concepts for Teachers

The overall concept that is important in this lesson is: Using a standard method or procedure to solve problems makes the process easier and more effective.

1) Describe the problem, 2) describe the results you want, 3) gather information, 4) think of solutions, 5) choose the best solution, 6) implement the solution, 7) evaluate results and make necessary changes. Reenter the design spiral at any step to revise as necessary.

The specific process of problem solving used in this unit was adapted from an eighth-grade technology textbook written for New York State standard technology curriculum. The process is shown in Figure 1, with details included below. The spiral shape shows that this is an iterative, not linear, process. The process can skip ahead (for example, build a model early in the process to test a proof of concept) and go backwards (learn more about the problem or potential solutions if early ideas do not work well).

This process provides a reference that can be reiterated throughout the unit as students learn new material or ideas that are relevant to the completion of their unit projects.

Brainstorming about what we know about a problem or project and what we need to find out to move forward in a project is often a good starting point when faced with a new problem. This type of questioning provides a basis and relevance that is useful in other energy science and technology units. In this unit, the general problem that is addressed is the fact that Americans use a lot of energy, with the consequences that we have a dwindling supply of fossil fuels, and we are emitting a lot of carbon dioxide and other air pollutants. The specific project that students are assigned to address is an aspect of this problem that requires them to identify an action they can take in their own live to reduce their overall energy (or fossil fuel) consumption.

The Seven Steps of Problem Solving

1.  Identify the problem

Clearly state the problem. (Short, sweet and to the point. This is the "big picture" problem, not the specific project you have been assigned.)

2.  Establish what you want to achieve

  • Completion of a specific project that will help to solve the overall problem.
  • In one sentence answer the following question: How will I know I've completed this project?
  • List criteria and constraints: Criteria are things you want the solution to have. Constraints are limitations, sometimes called specifications, or restrictions that should be part of the solution. They could be the type of materials, the size or weight the solution must meet, the specific tools or machines you have available, time you have to complete the task and cost of construction or materials.

3.  Gather information and research

  • Research is sometimes needed both to better understand the problem itself as well as possible solutions.
  • Don't reinvent the wheel – looking at other solutions can lead to better solutions.
  • Use past experiences.

4.  Brainstorm possible solutions

List and/or sketch (as appropriate) as many solutions as you can think of.

5.  Choose the best solution

Evaluate solution by: 1) Comparing possible solution against constraints and criteria 2) Making trade-offs to identify "best."

6.  Implement the solution

  • Develop plans that include (as required): drawings with measurements, details of construction, construction procedure.
  • Define tasks and resources necessary for implementation.
  • Implement actual plan as appropriate for your particular project.

7.  Test and evaluate the solution

  • Compare the solution against the criteria and constraints.
  • Define how you might modify the solution for different or better results.
  • Egg Drop - Use this demonstration or activity to introduce and use the problem solving method. Encourages creative design.
  • Solving Energy Problems - Unit project is assigned and students begin with problem solving techniques to begin to address project. Mostly they learn that they do not know enough yet to solve the problem.
  • Energy Projects - Students use what they learned about energy systems to create a project related to identifying and carrying out a personal change to reduce energy consumption.

The results of the problem solving activity provide a basis for the entire semester project. Collect and review the worksheets to make sure that students are started on the right track.

problem solving and computing lesson 7

Learn the basics of the analysis of forces engineers perform at the truss joints to calculate the strength of a truss bridge known as the “method of joints.” Find the tensions and compressions to solve systems of linear equations where the size depends on the number of elements and nodes in the trus...

preview of 'Doing the Math: Analysis of Forces in a Truss Bridge' Lesson

Through role playing and problem solving, this lesson sets the stage for a friendly competition between groups to design and build a shielding device to protect humans traveling in space. The instructor asks students—how might we design radiation shielding for space travel?

preview of 'Shielding from Cosmic Radiation: Space Agency Scenario' Lesson

A process for technical problem solving is introduced and applied to a fun demonstration. Given the success with the demo, the iterative nature of the process can be illustrated.

preview of 'Egg Drop' Activity

The culminating energy project is introduced and the technical problem solving process is applied to get students started on the project. By the end of the class, students should have a good perspective on what they have already learned and what they still need to learn to complete the project.

preview of 'Solving Energy Problems' Activity

Hacker, M, Barden B., Living with Technology , 2nd edition. Albany NY: Delmar Publishers, 1993.

Other Related Information

This lesson was originally published by the Clarkson University K-12 Project Based Learning Partnership Program and may be accessed at http://internal.clarkson.edu/highschool/k12/project/energysystems.html.

Contributors

Supporting program, acknowledgements.

This lesson was developed under National Science Foundation grants no. DUE 0428127 and DGE 0338216. However, these contents do not necessarily represent the policies of the National Science Foundation, and you should not assume endorsement by the federal government.

Last modified: August 16, 2023

problem solving and computing lesson 7

2.2 Computer Science Fundamentals

Wrap your mind around computational thinking, from everyday tasks to algorithms.

Making Decisions

Computers use decision trees to turn many simple decisions into one big decision.

Searching for Solutions

Sometimes, the right way to solve a computational problem is by “brute force.”

  • Parallelism

When Pierre the baker wants to get lots of things done, it helps to do many things at once.

End of Unit 1

Complete all lessons above to reach this milestone.

0 of 3 lessons complete

Resource Tradeoffs

Computer scientists deal with tradeoffs all the time. So does Farhad when he does his chores.

Order and Search

Information needs to be organized for use by humans or computers, as Tiye the librarian knows well.

Computer systems and people need to be able to reliably find and access people and resources.

Abstraction

Mayor Jing uses abstraction—a critical tool in computer science—to help her run City Hall.

Abstractions have interfaces that explain what they can and cannot do.

End of Unit 2

0 of 5 lessons complete

Algorithms and Implementations

Algorithms are step-by-step processes for achieving an outcome. They can be very specific or quite general.

Divide and Conquer

Problems often get easier when you split them in half, as the 20 Questions guessing game shows.

  • Binary Search

Binary search is a more algorithm-friendly version of the 20 Questions game.

Thinking with Graphs

Graphs are a powerful tool for understanding problems and solving them in clever ways.

Representing Games and Puzzles

Graphs can help us plan solutions to complex problems, like this classic river-crossing puzzle.

Graph Search

Some of the most fundamental algorithms on graphs are designed to get you from point A to point B.

End of Unit 3

0 of 6 lessons complete

Course description

Learn the key ideas of computer science with this interactive course – no coding required! This course is ideal for a high school or college student who wants to learn the fundamentals, or an early professional who wants to strengthen their knowledge of core computer science concepts. Whether you're exploring computer science for the first time or looking to deepen your understanding, this course will allow you to develop the problem-solving techniques you need to think like a computer scientist. Follow librarians, cooks, and mayors to see how computer science problem solving techniques affect their daily lives. Get hands-on with a few specific algorithms, and learn the general principles demonstrated by these algorithms.

Topics covered

  • Brute-Force Search
  • Concurrency
  • Decision Trees
  • Graph Abstractions
  • Greedy Algorithms
  • Programming

Prerequisites and next steps

You don’t need any previous computer science experience to take this course! This course is for anyone excited to actively learn more about how computer scientists think and understand our world.

3.1 Next Steps in Python

Boost your proficiency in Python by learning how to access social media data with public functions.

If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

To log in and use all the features of Khan Academy, please enable JavaScript in your browser.

Unit 1: Algorithms

About this unit.

We've partnered with Dartmouth college professors Tom Cormen and Devin Balkcom to teach introductory computer science algorithms, including searching, sorting, recursion, and graph theory. Learn with a combination of articles, visualizations, quizzes, and coding challenges.

Intro to algorithms

  • What is an algorithm and why should you care? (Opens a modal)
  • A guessing game (Opens a modal)
  • Route-finding (Opens a modal)
  • Discuss: Algorithms in your life (Opens a modal)

Binary search

  • Binary search (Opens a modal)
  • Implementing binary search of an array (Opens a modal)
  • Challenge: Binary search (Opens a modal)
  • Running time of binary search (Opens a modal)
  • Running time of binary search 5 questions Practice

Asymptotic notation

  • Asymptotic notation (Opens a modal)
  • Big-θ (Big-Theta) notation (Opens a modal)
  • Functions in asymptotic notation (Opens a modal)
  • Big-O notation (Opens a modal)
  • Big-Ω (Big-Omega) notation (Opens a modal)
  • Comparing function growth 4 questions Practice
  • Asymptotic notation 5 questions Practice

Selection sort

  • Sorting (Opens a modal)
  • Challenge: implement swap (Opens a modal)
  • Selection sort pseudocode (Opens a modal)
  • Challenge: Find minimum in subarray (Opens a modal)
  • Challenge: implement selection sort (Opens a modal)
  • Analysis of selection sort (Opens a modal)
  • Project: Selection sort visualizer (Opens a modal)

Insertion sort

  • Insertion sort (Opens a modal)
  • Challenge: implement insert (Opens a modal)
  • Insertion sort pseudocode (Opens a modal)
  • Challenge: Implement insertion sort (Opens a modal)
  • Analysis of insertion sort (Opens a modal)

Recursive algorithms

  • Recursion (Opens a modal)
  • The factorial function (Opens a modal)
  • Challenge: Iterative factorial (Opens a modal)
  • Recursive factorial (Opens a modal)
  • Challenge: Recursive factorial (Opens a modal)
  • Properties of recursive algorithms (Opens a modal)
  • Using recursion to determine whether a word is a palindrome (Opens a modal)
  • Challenge: is a string a palindrome? (Opens a modal)
  • Computing powers of a number (Opens a modal)
  • Challenge: Recursive powers (Opens a modal)
  • Multiple recursion with the Sierpinski gasket (Opens a modal)
  • Improving efficiency of recursive functions (Opens a modal)
  • Project: Recursive art (Opens a modal)

Towers of Hanoi

  • Towers of Hanoi (Opens a modal)
  • Towers of Hanoi, continued (Opens a modal)
  • Challenge: Solve Hanoi recursively (Opens a modal)
  • Move three disks in Towers of Hanoi 3 questions Practice
  • Divide and conquer algorithms (Opens a modal)
  • Overview of merge sort (Opens a modal)
  • Challenge: Implement merge sort (Opens a modal)
  • Linear-time merging (Opens a modal)
  • Challenge: Implement merge (Opens a modal)
  • Analysis of merge sort (Opens a modal)
  • Overview of quicksort (Opens a modal)
  • Challenge: Implement quicksort (Opens a modal)
  • Linear-time partitioning (Opens a modal)
  • Challenge: Implement partition (Opens a modal)
  • Analysis of quicksort (Opens a modal)

Graph representation

  • Describing graphs (Opens a modal)
  • Representing graphs (Opens a modal)
  • Challenge: Store a graph (Opens a modal)
  • Describing graphs 6 questions Practice
  • Representing graphs 5 questions Practice

Breadth-first search

  • Breadth-first search and its uses (Opens a modal)
  • The breadth-first search algorithm (Opens a modal)
  • Challenge: Implement breadth-first search (Opens a modal)
  • Analysis of breadth-first search (Opens a modal)

Further learning

  • Where to go from here (Opens a modal)

Please log in to save materials. Log in

Problem Solving and Computing

Problem Solving and Computing

In this unit, students learn about the problem-solving process, the input-output-store-process model of a computer, and how computers help humans solve problems. Learning in this unit will allow students to:

  • Identify the defined characteristics of a computer and how it is used to solve information problems.
  • Use a structured problem-solving process to address problems and design solutions that use computing technology.
  • Create a collaborative classroom environment where students view computer science as relevant, fun, and empowering.

  Problem Solving and Computing

Computer Science Illuminated, 7th Edition by Nell Dale, John Lewis

Get full access to Computer Science Illuminated, 7th Edition and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

Laying the Groundwork

1 The Big Picture

The Information Layer

2 Binary Values and Number Systems

3 Data Representation

The Hardware Layer

4 Gates and Circuits

5 Computing Components

The Programming Layer

6 Low-Level Programming Languages and Pseudocode

7 Problem Solving and Algorithms

8 Abstract Data Types and Subprograms

9 Object-Oriented Design and High-Level Programming Languages

The Operating Systems Layer

10 Operating Systems

11 File Systems and Directories

The Applications Layer

12 Information Systems

13 Artificial Intelligence

14 Simulation, Graphics, Gaming, and Other Applications

The Communications Layer

15 Networks

16 The World Wide Web

17 Computer Security

In Conclusion

18 Limitations of Computing

7 PROBLEM ...

Get Computer Science Illuminated, 7th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

problem solving and computing lesson 7

What is Programming? A Handbook for Beginners

Estefania Cassingena Navone

Welcome to the amazing world of programming. This is one of the most useful and powerful skills that you can learn and use to make your visions come true.

In this handbook, we will dive into why programming is important, its applications, its basic concepts, and the skills you need to become a successful programmer.

You will learn:

  • What programming is and why it is important .
  • What a programming language is and why it is important .
  • How programming is related to binary numbers .
  • Real-world applications of programming .
  • Skills you need to succeed as a programmer .
  • Tips for learning how to code .
  • Basic programming concepts .
  • Types of programming languages .
  • How to contribute to open source projects .
  • And more...

Are you ready? Let's begin! ✨  

🔹 What is Programming?

main-image

Did you know that computer programming is already a fundamental part of your everyday lives? Let's see why. I'm sure that you will be greatly surprised.

Every time you turn on your smartphone, laptop, tablet, smart TV, or any other electronic device, you are running code that was planned, developed, and written by developers. This code creates the final and interactive result that you can see on your screen.

That is exactly what programming is all about. It is the process of writing code to solve a particular problem or to implement a particular task.

Programming is what allows your computer to run the programs you use every day and your smartphone to run the apps that you love. It is an essential part of our world as we know it.

Whenever you check your calendar, attend virtual conferences, browse the web, or edit a document, you are using code that has been written by developers.

"And what is code?" you may ask.

Code is a sequence of instructions that a programmer writes to tell a device (like a computer) what to do.

The device cannot know by itself how to handle a particular situation or how to perform a task. So developers are in charge of analyzing the situation and writing explicit instructions to implement what is needed.

To do this, they follow a particular syntax (a set of rules for writing the code).

A developer (or programmer) is the person who analyzes a problem and implements a solution in code.

Sounds amazing, right? It's very powerful and you can be part this wonderful world too by learning how to code. Let's see how.

You, as a developer.

Let's put you in a developer's shoes for a moment. Imagine that you are developing a mobile app, like the ones that you probably have installed on your smartphone right now.

What is the first thing that you would do?

Think about this for a moment.

The answer is...

Analyzing the problem. What are you trying to build?

As a developer, you would start by designing the layout of the app, how it will work, its different screens and functionality, and all the small details that will make your app an awesome tool for users around the world.

Only after you have everything carefully planned out, you can start to write your code. To do that, you will need to choose a programming language to work with. Let's see what a programming language is and why they are super important.

🔸 What is a Programing Language?

what-is-a-programming-language

A programming language is a language that computers can understand.

We cannot just write English words in our program like this:

"Computer, solve this task!"

and hope that our computer can understand what we mean. We need to follow certain rules to write the instructions.

Every programming language has its own set of rules that determine if a line of code is valid or not. Because of this, the code you write in one programming language will be slightly different from others.

💡 Tip: Some programming languages are more complex than others but most of them share core concepts and functionality. If you learn how to code in one programming language, you will likely be able to learn another one faster.

Before you can start writing awesome programs and apps, you need to learn the basic rules of the programming language you chose for the task.

💡 Tip: a program is a set of instructions written in a programming language for the computer to execute. We usually write the code for our program in one or multiple files.

For example, this is a line of code in Python (a very popular programming language) that shows the message "Hello, World!" :

But if we write the same line of code in JavaScript (a programming language mainly used for web development), we will get an error because it will not be valid.

To do something very similar in JavaScript, we would write this line of code instead:

Visually, they look very different, right? This is because Python and JavaScript have a different syntax and a different set of built-in functions .

💡 Tip : built-in functions are basically tasks that are already defined in the programming language. This lets us use them directly in our code by writing their names and by specifying the values they need.  

In our examples, print() is a built-in function in Python while console.log() is a function that we can use in JavaScript to see the message in the console (an interactive tool) if we run our code in the browser.

Examples of programming languages include Python, JavaScript, TypeScript, Java, C, C#, C++, PHP, Go, Swift, SQL, and R. There are many programming languages and most of them can be used for many different purposes.

💡 Tip: These were the most popular programming languages on the Stack Overflow Developer Survey 2022 :

Screen-Shot-2022-12-02-at-9.06.50-PM

There are many other programming languages (hundreds or even thousands!) but usually, you will learn and work with some of the most popular ones. Some of them have broader applications like Python and JavaScript while others (like R) have more specific (and even scientific) purposes.

This sounds very interesting, right? And we are only starting to talk about programming languages. There is a lot to learn about them and I promise you that if you dive deeper into programming, your time and effort will be totally worth it.

Awesome! Now that you know what programming is and what programming languages are all about, let's see how programming is related to binary numbers.

🔹 Programming and Binary Numbers

When you think about programming, perhaps the first thing that comes to your mind is something like the below image, right? A sequence of 0 s and 1 s on your computer.

binary

Programming is indeed related to binary numbers ( 0 and 1 ) but in an indirect way. Developers do not actually write their code using zeros and ones.

We usually write programs in a high-level programming language, a programming language with a syntax that recognizes specific words (called keywords), symbols, and values of different data types.

Basically, we write code in a way that humans can understand.

For example, these are the keywords that we can use in Python:

Every programming language has its own set of keywords (words written in English). These keywords are part of the syntax and core functionality of the programming language.

But keywords are just common words in English, almost like the ones that we would find in a book.

That leads us to two very important questions:

  • How does the computer understand and interpret what we are trying to say?
  • Where does the binary number system come into play here?

The computer does not understand these words, symbols, or values directly.

When a program runs, the code that we write in a high-level programming language that humans can understand is automatically transformed into binary code that the computer can understand.

11---binary-diagram

This transformation of source code that humans can understand into binary code that the computer can understand is called compilation .

According to Britannica , a compiler is defined as:

Computer software that translates (compiles) source code written in a high-level language (e.g., C++) into a set of machine-language instructions that can be understood by a digital computer’s CPU.

Britannica also mentions that:

The term compiler was coined by American computer scientist Grace Hopper , who designed one of the first compilers in the early 1950s.

Some programming languages can be classified as compiled programming languages while others can be classified as interpreted programming languages based on how to they are transformed into machine-language instructions.

However, they all have to go through a process that converts them into instructions that the computer can understand.

Awesome. Now you know why binary code is so important for computer science. Without it, basically programming would not exist because computers would not be able to understand our instructions.

Now let's dive into the applications of programming and the different areas that you can explore.

🔸 Real-World Applications of Programming

applications

Programming has many different applications in many different industries. This is truly amazing because you can apply your knowledge in virtually any industry that you are interested in.

From engineering to farming, from game development to physics, the possibilities are endless if you learn how to code.  

Let's see some of them. (I promise you. They are amazing! ⭐) .

Front-End Web Development

1---frontend

If you learn how to code, you can use your programming skills to design and develop websites and online platforms. Front-End Web Developers create the parts of the websites that users can see and interact with directly.

For example, right now you are reading an article on freeCodeCamp 's publication. The publication looks like this and it works like this thanks to code that front-end web developers wrote line by line.

💡 Tip: If you learn front-end web development, you can do this too.

Screen-Shot-2022-12-02-at-9.56.43-PM

Front-End Web Developers use HTML and CSS to create the structure of the website (these are markup languages, which are used to present information) and they write JavaScript code to add functionality and interactivity.

If you are interested in learning front-end web development, you can learn HTML and CSS with these free courses on freeCodeCamp's YouTube Channel:

  • Learn HTML5 and CSS3 From Scratch - Full Course
  • Learn HTML & CSS – Full Course for Beginners
  • Frontend Web Development Bootcamp Course (JavaScript, HTML, CSS)
  • Introduction To Responsive Web Design - HTML & CSS Tutorial

You can also learn JavaScript for free with these free online courses:

  • Learn JavaScript - Full Course for Beginners
  • JavaScript Programming - Full Course
  • JavaScript DOM Manipulation – Full Course for Beginners
  • Learn JavaScript by Building 7 Games - Full Course

💡 Tip: You can also earn a Responsive Web Design Certification while you learn with interactive exercises on freeCodeCamp.

Back-End Web Development

2---backend

More complex and dynamic web applications that work with user data also require a server . This is a computer program that receives requests and sends appropriate responses. They also need a database , a collection of values stored in a structured way.

Back-End Web Developers are in charge of developing the code for these servers. They decide how to handle the different requests, how to send appropriate resources, how to store the information, and basically how to make everything that runs behind the scenes work smoothly and efficiently.

A real-world example of back-end web development is what happens when you create an account on freeCodeCamp and complete a challenge. Your information is stored on a database and you can access it later when you sign in with your email and password.

Screen-Shot-2022-12-02-at-10.07.41-PM

This amazing interactive functionality was implemented by back-end web developers.

💡 Tip: Full-stack Web Developers are in charge of both Front-End and Back-End Web Development. They have specialized knowledge on both areas.

All the complex platforms that you use every day, like social media platforms, online shopping platforms, and educational platforms, use servers and back-end web development to power their amazing functionality.

Python is an example of a powerful programming language used for this purpose. This is one of the most popular programming languages out there, and its popularity continues to rise every year. This is partly because it is simple and easy to learn and yet powerful and versatile enough to be used in real-world applications.

💡 Tip: if you are curious about the specific applications of Python, this is an article I wrote on this topic .

JavaScript can also be used for back-end web development thanks to Node.js.

Other programming languages used to develop web servers are PHP, Ruby, C#, and Java.

If you would like to learn Back-End Web Development, these are free courses on freeCodeCamp's YouTube channel:

  • Python Backend Web Development Course (with Django)
  • Node.js and Express.js - Full Course
  • Full Stack Web Development for Beginners (Full Course on HTML, CSS, JavaScript, Node.js, MongoDB)
  • Node.js / Express Course - Build 4 Projects

💡 Tip: freeCodeCamp also has a free Back End Development and APIs certification.

Mobile App Development

3---mobile-apps

Mobile apps have become part of our everyday lives. I'm sure that you could not imagine life without them.

Think about your favorite mobile app. What do you love about it?

Our favorite apps help us with our daily tasks, they entertain us, they solve a problem, and they help us to achieve our goals. They are always there for us.

That is the power of mobile apps and you can be part of this amazing world too if you learn mobile app development.

Developers focused on mobile app development are in charge of planning, designing, and developing the user interface and functionality of these apps. They identify a gap in the existing apps and they try to create a working product to make people's lives better.

💡 Tip: regardless of the field you choose, your goal as a developer should always be making people's lives better. Apps are not just apps, they have the potential to change our lives. You should always remember this when you are planning your projects. Your code can make someone's life better and that is a very important responsibility.

Mobile app developers use programming languages like JavaScript, Java, Swift, Kotlin, and Dart. Frameworks like Flutter and React Native are super helpful to build cross-platform mobile apps (that is, apps that run smoothly on multiple different operating systems like Android and iOS).

According to Flutter 's official documentation:

Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.

If you would like to learn mobile app development, these are free courses that you can take on freeCodeCamp's YouTube channel:

  • Flutter Course for Beginners – 37-hour Cross Platform App Development Tutorial
  • Flutter Course - Full Tutorial for Beginners (Build iOS and Android Apps)
  • React Native - Intro Course for Beginners
  • Learn React Native Gestures and Animations - Tutorial

Game Development

4---games

Games create long-lasting memories. I'm sure that you still remember your favorite games and why you love (or loved) them so much. Being a game developer means having the opportunity of bringing joy and entertainment to players around the world.

Game developers envision, design, plan, and implement the functionality of a game. They also need to find or create assets such as characters, obstacles, backgrounds, music, sound effects, and more.

💡 Tip: if you learn how to code, you can create your own games. Imagine creating an awesome and engaging game that users around the world will love. That is what I personally love about programming. You only need your computer, your knowledge, and some basic tools to create something amazing.

Popular programming languages used for game development include JavaScript, C++, Python, and C#.

If you are interested in learning game development, you can take these free courses on freeCodeCamp's YouTube channel:

  • JavaScript Game Development Course for Beginners
  • Learn Unity - Beginner's Game Development Tutorial
  • Learn Python by Building Five Games - Full Course
  • Code a 2D Game Using JavaScript, HTML, and CSS (w/ Free Game Assets) – Tutorial
  • 2D Game Development with GDevelop - Crash Course
  • Pokémon Coding Tutorial - CS50's Intro to Game Development

Biology, Physics, and Chemistry

5---biology-and-science

Programming can be applied in every scientific field that you can imagine, including biology, physics, chemistry, and even astronomy. Yes! Scientists use programming all the time to collect and analyze data. They can even run simulations to test hypotheses.

In biology, computer programs can simulate population genetics and population dynamics. There is even an entire field called bioinformatics .

According to this article "Bioinformatics" by Ardeshir Bayat, member of the Centre for Integrated Genomic Medical Research at the University of Manchester:

Bioinformatics is defined as the application of tools of computation and analysis to the capture and interpretation of biological data.

Dr. Bayat mentions that bioinformatics can be used for genome sequencing. He also mentions that its discoveries may lead to drug discoveries and individualized therapies.

Frequently used programming languages for bioinformatics include Python, R, PHP, PERL, and Java.

💡 Tip: R is a programming "language and environment for statistical computing and graphics" ( source ).

An example of a great tool that scientists can use for biology is Biopython . This is a Python framework with "freely available tools for biological computation."

If you would like to learn more about how you can apply your programming skills in science, these are free courses that you can take on freeCodeCamp's YouTube channel:

  • Python for Bioinformatics - Drug Discovery Using Machine Learning and Data Analysis
  • R Programming Tutorial - Learn the Basics of Statistical Computing
  • Learn Python - Full Course for Beginners [Tutorial]

Physics requires running many simulations and programming is perfect for doing exactly that. With programming, scientists can program and run simulations based on specific scenarios that would be hard to replicate in real life. This is much more efficient.

Programming languages that are commonly used for physics simulations include C, Java, Python, MATLAB, and JavaScript.  

Chemistry also relies on simulations and data analysis, so it's a field where programming can be a very helpful tool.

In this scientific article by Dr. Ivar Ugi and his colleagues from Organisch-chemisches Institut der Technischen Universität München, they mention that:

The design of entirely new syntheses, and the classification and documentation of structures, substructures, and reactons are examples of new applications of computers to chemistry.

Scientific experiments also generate detailed data and results that can be analyzed with computer programs developed by scientists.  

Think about it: writing a program to generate a box plot or a scatter plot or any other type of plot to visualize trends in thousands of measurements can save researchers a lot of time and effort. This lets them focus on the most important part of their work: analyzing the results.

Screen-Shot-2022-12-04-at-10.40.43-AM

💡 Tips: if you are interested in diving deeper into this, this is a list of chemistry simulations by the American Chemical Society. These simulations were programmed by developers and they are helping thousands of students and teachers around the world.

Think about it...You could build the next great simulation. If you are interested in a scientific field, I totally recommend learning how to code. Your work will be much more productive and your results will be easier to analyze.

If you are interested in learning programming for scientific applications, these are free courses on freeCodeCamp's YouTube channel:

  • Python for Data Science - Course for Beginners (Learn Python, Pandas, NumPy, Matplotlib)

Data Science and Engineering

6---engineering-2

Talking about data...programming is also essential for a field called Data Science . If you are interested in answering questions through data and statistics, this field might be exactly what you are looking for and having programming skills will help you to achieve your goals.

Data scientists collect and analyze data in order to answer questions in many different fields. According to UC Berkeley in the article " What is Data Science? ":

Effective data scientists are able to identify relevant questions, collect data from a multitude of different data sources, organize the information, translate results into solutions, and communicate their findings in a way that positively affects business decisions.

There are many powerful programming languages for analyzing and visualizing data, but perhaps one of the most frequently used ones for this purpose is Python.

This is an example of the type of data visualizations that you can create with Python. They are very helpful to analyze data visually and you can customize them to your fit needs.

image-6

If you are interested in learning programming for data science, these are free courses on freeCodeCamp's YouTube channel:

  • Learn Data Science Tutorial - Full Course for Beginners
  • Intro to Data Science - Crash Course for Beginners
  • Build 12 Data Science Apps with Python and Streamlit - Full Course
  • Data Analysis with Python - Full Course for Beginners (Numpy, Pandas, Matplotlib, Seaborn)

💡 Tip: you can also earn these free certifications on freeCodeCamp:

  • Data Visualization
  • Data Analysis with Python

Engineering

Engineering is another field where programming can help you to succeed. Being able to write your own computer programs can make your work much more efficient.

There are many tools created specifically for engineers. For example, the R programming language is specialized in statistical applications and Python is very popular in this field too.

Another great tool for programming in engineering is MATLAB . According to its official website:

MATLAB is a programming and numeric computing platform used by millions of engineers and scientists to analyze data, develop algorithms, and create models.

Really, the possibilities are endless.

You can learn MATLAB with this crash course on the freeCodeCamp YouTube channel .

If you are interested in learning engineering tools related to programming, this is a free course on freeCodeCamp's YouTube channel that covers AutoCAD, a 2D and 3D computer-aided design software used by engineers:

  • AutoCAD for Beginners - Full University Course

Medicine and Pharmacology

7---medicine-an-pharmachology

Medicine and pharmacology are constantly evolving by finding new treatments and procedures. Let's see how you can apply your programming skills in these fields.

Programming is really everywhere. If you are interested in the field of medicine, learning how to code can be very helpful for you too. Even if you would like to focus on computer science and software development, you can apply your knowledge in both fields.

Specialized developers are in charge of developing and writing the code that powers and controls the devices and machines that are used by modern medicine.

Think about it...all these machines and devices are controlled by software and someone has to write that software. Medical records are also stored and tracked by specialized systems created by developers. That could be you if you decide to follow this path. Sounds exciting, right?

According to the scientific article Application of Computer Techniques in Medicine :

Major uses of computers in medicine include hospital information system, data analysis in medicine, medical imaging laboratory computing, computer assisted medical decision making, care of critically ill patients, computer assisted therapy and so on.

Pharmacology

Programming and computer science can also be applied to develop new drugs in the field of pharmacology.

A remarkable example of what you can achieve in this field by learning how to code is presented in this article by MIT News. It describes how an MIT senior, Kristy Carpenter, was using computer science in 2019 to develop "new, more affordable drugs." Kristy mentions that:

Artificial intelligence, which can help compute the combinations of compounds that would be better for a particular drug, can reduce trial-and-error time and ideally quicken the process of designing new medicines.

Another example of a real-world application of programming in pharmacology is related to Python (yes, Python has many applications!). Among its success stories , we find that Python was selected by AstraZeneca to develop techniques and programs that can help scientists to discover new drugs faster and more efficiently.

The documentation explains that:

To save time and money on laboratory work, experimental chemists use computational models to narrow the field of good drug candidates, while also verifying that the candidates to be tested are not simple variations of each other's basic chemical structure.

If you are interested in learning programming for medicine or health-related fields, this is a free course on freeCodeCamp's YouTube channel on programming for healthcare imaging:

  • PyTorch and Monai for AI Healthcare Imaging - Python Machine Learning Course

8---education

Have you ever thought that programming could be helpful for education? Well, let me tell you that it is and it is very important. Why? Because the digital learning tools that students and teachers use nowadays are programmed by developers.

Every time a student opens an educational app, browses an educational platform like freeCodeCamp, writes on a digital whiteboard, or attends a class through an online meeting platform, programming is making that possible.

As a programmer or as a teacher who knows how to code, you can create the next great app that will enhance the learning experience of students around the world.

Perhaps it will be a note-taking app, an online learning platform, a presentation app, an educational game, or any other app that could be helpful for students.

The important thing is to create it with students in mind if your goal is to make something amazing that will create long-lasting memories.

If you envision it, then you can create it with code.  

Teachers can also teach their students how to code to develop their problem-solving skills and to teach them important skills for their future.

💡 Tip: if you are teaching students how to code, Scratch is a great programming language to teach the basics of programming. It is particularly focused on teaching children how to code in an interactive way.

According to the official Scratch website:

Scratch is the world’s largest coding community for children and a coding language with a simple visual interface that allows young people to create digital stories, games, and animations.

If you are interested in learning how to code for educational purposes, these are courses that you may find helpful on freeCodeCamp's YouTube channel:

  • Scratch Tutorial for Beginners - Make a Flappy Bird Game
  • Computational Thinking & Scratch - Intro to Computer Science - Harvard's CS50 (2018)
  • Android Development for Beginners - Full Course

Machine Learning, Artificial Intelligence, and Robotics

9---robotics

Some of the most amazing fields that are directly related to programming are Machine Learning, Artificial Intelligence, and Robotics. Let's see why.

Artificial Intelligence is defined by Britannica as:

The project of developing systems endowed with the intellectual processes characteristic of humans, such as the ability to reason, discover meaning, generalize, or learn from past experience.

Machine learning is a branch or a subset of the field of Artificial Intelligence in which systems can learn on their own based on data. The goal of this learning process is to predict the expected output. These models continuously learn how to "think" and how to analyze situations based on their previous training.

The most commonly used programming languages in these fields are Python, C, C#, C++, and MATLAB.

Artificial intelligence and Machine Learning have amazing applications in various industries, such as:

  • Image and object detection.
  • Making predictions based on patterns.
  • Text recognition.
  • Recommendation engines (like when an online shopping platform shows you products that you may like or when YouTube shows you videos that you may like).
  • Spam detection for emails.
  • Fraud detection.
  • Social media features like personalized feeds.
  • Many more... there are literally millions of applications in virtually every industry.

If you are interested in learning how to code for Artificial Intelligence and Machine Learning, these are free courses on freeCodeCamp's YouTube channel:

  • Machine Learning for Everybody – Full Course
  • Machine Learning Course for Beginners
  • PyTorch for Deep Learning & Machine Learning – Full Course
  • TensorFlow 2.0 Complete Course - Python Neural Networks for Beginners Tutorial
  • Self-Driving Car with JavaScript Course – Neural Networks and Machine Learning
  • Python TensorFlow for Machine Learning – Neural Network Text Classification Tutorial
  • Practical Deep Learning for Coders - Full Course from fast.ai and Jeremy Howard
  • Deep Learning Crash Course for Beginners
  • Advanced Computer Vision with Python - Full Course

💡 Tip: you can also earn a Machine Learning with Python Certification on freeCodeCamp.

Programming is also very important for robotics. Yes, robots are programmed too!

Robotics is defined by Britannica as the:

Design, construction, and use of machines (robots) to perform tasks done traditionally by human beings.

Robots are just like computers. They do not know what to do until you tell them what to do by writing instructions in your programs. If you learn how to code, you can program robots and industrial machinery found in manufacturing facilities.

If you are interested in learning how to code for robotics, electronics, and related fields, this is a free course on Arduino on freeCodeCamp's YouTube channel:

  • Arduino Course for Beginners - Open-Source Electronics Platform

Other Applications

There are many other fascinating applications of programming in almost every field. These are some highlights:

  • Agriculture: in this article by MIT News, a farmer developed an autonomous tractor app after learning how to code.
  • Self-driving cars: autonomous cars rely on software to analyze their surroundings and to make quick and accurate decisions on the road. If you are interested in this area, this is a course on this topic on freeCodeCamp's YouTube channel.
  • Finance: programming can also be helpful to develop programs and models that predict financial indicators and trends. For example, this is a course on algorithmic trading on freeCodeCamp's YouTube channel.

The possibilities are endless. I hope that this section will give you a notion of why learning how to code is so important for your present and for your future. It will be a valuable skill to have in any field you choose.

Awesome. Now let's dive into the soft skills that you need to become a successful programmer.

🔹 Skills of a Successful Programmer

skills

After going through the diverse range of applications of programming, you must be curious to know what skills are needed to succeed in this field.

A programmer should be curious. Whether you are just starting to learn how to code or you already have 20 years of experience, coding projects will always present you with new challenges and learning opportunities. If you take these opportunities, you will continously improve your skills and succeed.

Enthusiasm is a key trait of a successful programmer but this applies in general to any field if you want to succeed. Enthusiasm will keep you happy and curious about what you are creating and learning.

💡 Tip: If you ever feel like you are not as enthusiastic as you used to be, it's time to find or learn something new that can light the spark in you again and fill you with hope and dreams.

A programmer must be patient because transforming an initial idea into a working product can take time, effort, and many different steps. Patience will keep you focused on your final goal.  

Programming can be challenging. That is true. But what defines you is not how many challenges you face, it's how you face them. If you thrive despite these challenges, you will become a better programmer and you could create something that could change the world.

Programmers must be creative because even though every programming language has a particular set of rules for writing the code, coding is like using LEGOs. You have the building-blocks but you need to decide what to create and how to create it. The process of writing the code requires creativity while following the established best practices.

Problem-solving and Analysis

Programming is basically analyzing and solving problems with code. Depending on your field of choice, those problems will be simpler or more complex but they will all require some level of problem-solving skills and a thorough analysis of the situation.

Questions like:

  • What should I build?
  • How can I build it?
  • What is the best way to build this?

Are part of the everyday routine of a programmer.

Ability to Focus for Long Periods of Time

When you are working on a coding project, you will need to focus on a task for long periods of time. From creating the design, to planning and writing the code, to testing the result, and to fixing bugs (issues with the code), you will dedicate many hours to a particular task. This is why it's essential to be able to focus and to keep your final goal in mind.

Taking Detailed Notes

This skill is very important for programmers, particularly when you are learning how to code. Taking detailed notes can be help you to understand and remember the concepts and tools you learn. This also applies for experienced programmers, since being a programmer involves life-long learning.

Communication

Initially, you might think that programming is a solitary activity and imagine that a programmer spends hundreds of hours alone sitting on a desk.

But the reality is that when you find your first job, you will see that communication is super important to coordinate tasks with other team members and to exchange ideas and feedback.

Open to Feedback

In programming, there is usually more than one way to implement the same functionality. Different alternatives may work similarly, but some may be easier to read or more efficient in terms of time or resource consumption.

When you are learning how to code, you should always take constructive feedback as a tool for learning. Similarly, when you are working on a team, take your colleagues' feedback positively and always try to improve.

Life-long Learning

Programming equals life-long learning. If you are interested in learning how to code, you must know that you will always need to be learning new things as new technologies emerge and existing technologies are updated. Think about it... that is great because there is always something interesting and new to learn!

Open to Trying New Things

Finally, an essential skill to be a successful programmer is to be open to trying new things. Step out of your comfort zone and be open to new technologies and products. In the technology industry, things evolve very quickly and adapting to change is essential.

🔸 Tips for Learning How to Code

tips

Now that you know more about programming, programming languages, and the skills you need to be a successful programmer, let's see some tips for learning how to code.

💡 Tip: these tips are based on my personal experience and opinions.

  • Choose one programming language to learn first. When you are learning how to code, it's easy to feel overwhelmed with the number of options and entry paths. My advice would be to focus on understanding the essential computer science concepts and one programming language first. Python and JavaScript are great options to start learning the fundamentals.
  • Take detailed notes. Note-taking skills are essential to record and to analyze the topics you are learning. You can add custom comments and annotations to explain what you are learning.
  • Practice constantly. You can only improve your problem-solving skills by practicing and by learning new techniques and tools. Try to practice every day.

💡 Tip: There is a challenge called the #100DaysOfCode challenge that you can join to practice every day.  

  • Always try again. If you can't solve a problem on your first try, take a break and come back again and again until you solve it. That is the only way to learn. Learn from your mistakes and learn new approaches.
  • Learn how to research and how to find answers. Programming languages, libraries, and frameworks usually have official documentations that explain their built-in elements and tools and how you can use them. This is a precious resource that you should definitely refer to.
  • Browse Stack Overflow . This is an amazing platform. It is like an online encyclopedia of answers to common programming questions. You can find answers to existing questions and ask new questions to get help from the community.
  • Set goals. Motivation is one of the most important factors for success. Setting goals is very important to keep you focused, motivated, and enthusiastic. Once you reach your goals, set new ones that you find challenging and exciting.
  • Create projects. When you are learning how to code, applying your skills will help you to expand your knowledge and remember things better. Creating projects is the perfect way to practice and to create a portfolio that you can show to potential employers.

🔹 Basic Programming Concepts

basic-concepts

Great. If reading this article has helped you confirm that you want to learn programming, let's take your first steps.

These are some basic programming concepts that you should know:

  • Variable: a variable is a name that we assign to a value in a computer program. When we define a variable, we assign a value to a name and we allocate a space in memory to store that value. The value of a variable can be updated during the program.
  • Constant: a constant is similar to a variable. It stores a value but it cannot be modified. Once you assign a value to a constant, you cannot change it during the entire program.
  • Conditional: a conditional is a programming structure that lets developers choose what the computer should do based on a condition. If the condition is True, something will happen but if the condition is False, something different can happen.
  • Loop: a loop is a programming structure that let us run a code block (a sequence of instructions) multiple times. They are super helpful to avoid code repetition and to implement more complex functionality.
  • Function: a function helps us to avoid code repetition and to reuse our code. It is like a code block to which we assign a name but it also has some special characteristics. We can write the name of the function to run that sequence of instructions without writing them again.

💡 Tip: Functions can communicate with main programs and main programs can communicate with functions through parameters , arguments , and return statements.

  • Class: a class is used as a blueprint to define the characteristics and functionality of a type of object. Just like we have objects in our real world, we can represent objects in our programs.
  • Bug: a bug is an error in the logic or implementation of a program that results in an unexpected or incorrect output.
  • Debugging: debugging is the process of finding and fixing bugs in a program.
  • IDE: this acronym stands for Integrated Development Environment. It is a software development environment that has the most helpful tools that you will need to write computer programs such as a file editor, an explorer, a terminal, and helpful menu options.

💡 Tip: a commonly used and free IDE is Visual Studio Code , created by Microsoft.

Awesome! Now you know some of the fundamental concepts in programming. Like you learned, each programming language has a different syntax, but they all share most of these programming structures and concepts.  

🔸 Types of Programming Languages

types-of-programming-languages

Programming languages can be classified based on different criteria. If you want to learn how to code, it's important for you to learn these basic classifications:

  • High-level programming languages: they are designed to be understood by humans and they have to be converted into machine code before the computer can understand them. They are the programming languages that we commonly use. For example: JavaScript, Python, Java, C#, C++, and Kotlin.
  • Low-level programming languages: they are more difficult to understand because they are not designed for humans. They are designed to be understood and processed efficiently by machines.

Conversion into Machine Code

  • Compiled programming languages: programs written with this type of programming language are converted directly into machine code by a compiler. Examples include C, C++, Haskell, and Go.
  • Interpreted programming languages: programs written with this type of programming language rely on another program called the interpreter, which is in charge of running the code line by line. Examples include Python, JavaScript, PHP, and Ruby.

💡 Tip: according to this article on freeCodeCamp's publication:

Most programming languages can have both compiled and interpreted implementations – the language itself is not necessarily compiled or interpreted. However, for simplicity’s sake, they’re typically referred to as such.

There are other types of programming languages based on different criteria, such as:

  • Procedural programming languages
  • Functional programming languages
  • Object-oriented programming languages
  • Scripting languages
  • Logic programming languages

And the list of types of programming languages continues. This is very interesting because you can analyze the characteristics of a programming language to help you choose the right one for your project.

🔹 How to Contribute to Open Source Projects

Screen-Shot-2022-12-04-at-4.53.42-PM

Finally, you might think that coding implies sitting at a desk for many hours looking at your code without any human interaction. But let me tell you that this does not have to be true at all. You can be part of a learning community or a developer community.

Initially, when you are learning how to code, you can participate in a learning community like freeCodeCamp. This way, you will share your journey with others who are learning how to code, just like you.

Then, when you have enough skills and confidence in your knowledge, you can practice by contributing to open source projects and join developer communities.

Open source software is defined by Opensource.com as:

Software with source code that anyone can inspect, modify, and enhance.

GitHub is an online platform for hosting projects with version control. There, you can find many open source projects (like freeCodeCamp ) that you can contribute to and practice your skills.

💡 Tip: many open source projects welcome first-time contributions and contributions from all skill levels. These are great opportunities to practice your skills and to contribute to real-world projects.  

Screen-Shot-2022-12-04-at-5.01.58-PM

Contributing to open source projects on GitHub is great to acquire new experience working and communicating with other developers. This is another important skill for finding a job in this field.

Screen-Shot-2022-12-04-at-5.06.54-PM

Working on a team is a great experience. I totally recommend it once you feel comfortable enough with your skills and knowledge.

You did it! You reached the end of this article. Great work. Now you know what programming is all about. Let's see a brief summary.

🔸 In Summary

  • Programming is a very powerful skill. If you learn how to code, you can make your vision come true.
  • Programming has many different applications in many different fields. You can find an application for programming in basically any field you choose.
  • Programming languages can be classified based on different criteria and they share basic concepts such as variables, conditionals, loops, and functions.
  • Always set goals and take detailed notes. To succeed as a programmer, you need to be enthusiastic and consistent.

Thank you very much for reading my article. I hope you liked it and found it helpful. Now you know why you should learn how to code.

🔅 I invite you to follow me on Twitter ( @EstefaniaCassN ) and YouTube ( Coding with Estefania ) to find coding tutorials.

Developer, technical writer, and content creator @freeCodeCamp. I run the freeCodeCamp.org Español YouTube channel.

If you read this far, thank the author to show them you care. Say Thanks

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

IMAGES

  1. Lesson 7 Problem Solving Practice Constant Rate Of Change Answer Key

    problem solving and computing lesson 7

  2. Lesson 7 Problem Solving Practice Answer Key

    problem solving and computing lesson 7

  3. 7 steps to master problem solving methodology

    problem solving and computing lesson 7

  4. Lesson 7 Problem Solving Practice Discount Answer Key

    problem solving and computing lesson 7

  5. What Is Problem-Solving? Steps, Processes, Exercises to do it Right

    problem solving and computing lesson 7

  6. UNIT 1: How to Think Like an Engineer

    problem solving and computing lesson 7

VIDEO

  1. Math 7 7 4 Homework Help Morgan

  2. Code.org Lesson 7.2A Conditionals Practice

  3. Code.org Lesson 7.5 The Math Class

  4. What is a computation? A Journey into the Heart of Computing

  5. READING & WRITING/ Lesson 7 PROBLEM

  6. CHAPTER 7

COMMENTS

  1. U1L07

    Your guidelines should follow this format: "If the information _________, then that information (should / should not) be stored because. For example, ____________ (should / should not) be stored.". 2. its very very good problem solving and computing lesson period date activity guide apps with storage key vocabulary: storage information that ...

  2. Problem Solving and Computing Flashcards

    Strategy. A plan of action or policy designed to achieve a major or overall aim. Assess. To evaluate the quality of. Problem-Solving Process. A sequence of organized steps to follow when making decisions. Brainstorm. Produce an idea or way of solving a problem by holding a group discussion. Various.

  3. PDF Unit 2: Problem Solving

    Introduction. In order for students to become "computational thinkers" they need experience solving a wide range of problems and the opportunity to experiment with a variety of solution strategies. This unit begins with an introduction to the problem solving process. Students are asked to solve new problems by planning a strategy, designing ...

  4. Computer Science Fundamentals

    Learn to create computer programs, develop problem-solving skills, and work through fun challenges! Make games and creative projects to share with friends, family, and teachers. Explore course ... every lesson in CS Fundamentals contains mappings to the relevant CSTA standards. The summary of all CSTA mappings for each course can be found at ...

  5. PDF SCIENCE Problem-Solving and Computers

    *The K-12 Computer Science Framework, led by the Association for Computing Machinery, Code.org, Computer Science Teachers Association, Cyber Innovation Center, and National Math and Science Initiative in partnership with states and districts, informed the development of this work.

  6. PDF An Introduction to Computer Science and Problem Solving

    COMP1405/1005 - An Introduction to Computer Science and Problem Solving Fall 2011 - 7-Here is what it looks like when you are working with Processing: Each program is called a "sketch" in Processing. The top left play button starts your program which brings up a window (shown yellow here with a picture of a teddy bear). Since, many

  7. Exploring Computational Thinking

    This lesson plan presents students with the challenging problem of measuring a volume of water using containers of the wrong measurement size. Students will decompose a complex problem into discrete steps, design an algorithm for solving the problem, and evaluate the solution efficiencies and optimization in a simulation.

  8. CKSci Unit 7: Problem-Solving and Computers

    Focus: In this Grade 4 unit, Problem-Solving and Computers, the goal of the instruction and cumulative experiences is for students to continue articulating steps of increasing complexity to solve problems.Their understanding of developing and following a correct step-by-step procedure when developing computer programs is enhanced by the reading and activities in this unit.

  9. Lesson 7: Solving Problems Part 1

    Lesson 7: Solving Problems Part 1. Intermediate Coding with Micro:bit Lesson 7: Solving Problems Part 1. Now that you have learned all about micro:bit, the inputs, the outputs, and how to write code, let's put it all together to solve some real world problems. There is a case study in the guide, or you may have your own problem you want to solve!

  10. Problem Solving

    1. Identify the problem. Clearly state the problem. (Short, sweet and to the point. This is the "big picture" problem, not the specific project you have been assigned.) 2. Establish what you want to achieve. Completion of a specific project that will help to solve the overall problem.

  11. Practice Computer Science Fundamentals

    Whether you're exploring computer science for the first time or looking to deepen your understanding, this course will allow you to develop the problem-solving techniques you need to think like a computer scientist. Follow librarians, cooks, and mayors to see how computer science problem solving techniques affect their daily lives.

  12. PDF Unit 1

    ECS 2020-21 UNIT 1 - PROBLEM SOLVING AND COMPUTING Lesson 4: What is a Computer? • Computer: A machine that works with information. Lesson 5: Input and Output • Input: the information computers get from users, devices, or other computers • Output: the information computers give to users, devices, or other computers Lesson 6: Processing • Processing: The thinking work computers do to ...

  13. Algorithms

    We've partnered with Dartmouth college professors Tom Cormen and Devin Balkcom to teach introductory computer science algorithms, including searching, sorting, recursion, and graph theory. Learn with a combination of articles, visualizations, quizzes, and coding challenges.

  14. Connecticut Model Computer Science for Grades 6-8, Problem Solving and

    Identify the defined characteristics of a computer and how it is used to solve information problems. Use a structured problem-solving process to address problems and design solutions that use computing technology. Create a collaborative classroom environment where students view computer science as relevant, fun, and empowering.

  15. Computational Thinking for Problem Solving

    Computational thinking is a problem-solving process in which the last step is expressing the solution so that it can be executed on a computer. However, before we are able to write a program to implement an algorithm, we must understand what the computer is capable of doing -- in particular, how it executes instructions and how it uses data.

  16. Chapter 7 Problem Solving and Algorithms

    Computer Science Illuminated, 7th Edition by Nell Dale, John Lewis. Laying the Groundwork. 1 The Big Picture. The Information Layer. 2 Binary Values and Number Systems. 3 Data Representation. The Hardware Layer. 4 Gates and Circuits. 5 Computing Components.

  17. Lesson+5-Input+and+Output

    1.2.3.AK Binary Numbers Conversion. Activity Guide - Exploring Two Columns - Unit 5 Lesson 4 (Repaired) 2.1.4.a.ak calculatingforcevectorsanskey. Calculate Completing a 1040. very easy problem solving and computing lesson period date activity guide input and output key vocabulary: input the information computers get from.

  18. CKSci Grade 4 Unit 7: Problem Solving and Computers

    In this Grade 4 unit, Problem-Solving and Computers, the goal of the instruction and cumulative experiences is for students to continue articulating steps of increasing complexity to solve problems.Their understanding of developing and following a correct step-by-step procedure when developing computer programs is enhanced by the reading and activities in this unit.

  19. Problem Solving and Computing

    The thinking work computers do to turn input into output. The 4 types of processing are. - if/then: something is true, do something else. -comparing: if something is true, do something else. - finding a match: search a list or group of things for match. - counting: keep track of how many something are. storage. Saving information for the future.

  20. U1L06

    Problem Solving and Computing - Lesson 6 Name(s)_____ Period _____ Date _____ Activity Guide - Apps with Processing Key Vocabulary: Processing - The thinking work computers do to turn input into output. Apps and Processing. For each app, choose one type of processing it uses and explain how it helps turn the input into output. ...

  21. What is Programming? A Handbook for Beginners

    Computer software that translates (compiles) source code written in a high-level language (e.g., C++) into a set of machine-language instructions that can be understood by a digital computer's CPU. ... You can only improve your problem-solving skills by practicing and by learning new techniques and tools. Try to practice every day. 💡 Tip: ...

  22. Lesson 7: Problem Solving

    Ms. Austin's Computer Science Class. Home Blog K 1st 2nd 3rd 4th 5th About English. Open Menu Close Menu. Ms. Austin's Computer Science Class. Home ... Lesson 7: Problem Solving Complete & Continue Next Lesson Learn More AKS AKS-6 use digital tools to creatively share and express ideas ...