The goal of this activity is to build critical thinking skills and excitement for Computer Science / Computational Thinking, while laying a foundation of fundamental programming concepts. By scaffolding basic concepts like sequencing and algorithms in an unplugged activity, students who are intimidated by computers can still build a foundation of understanding. In this lesson, students will learn how to develop an algorithm and encode it into a program.By "programming" one another to draw pictures, students experience some of the core concepts of programming in a fun and accessible way. The class will start by having students view a video of a simple program demonstrating how to develop instructions for building a peanut butter and jelly sandwich. Students will start with simple shapes, and progress to the coding of a specific drawing that other students will then try to replicate (“running the program”). If there is a desire to have a more of a Math slant on the lesson, the drawing could take place on graph paper. Students would then use the coordinates to complete the drawing.
Students explore the concept of optical character recognition (OCR) in a problem-solving environment. They research OCR and OCR techniques and then apply those methods to the design challenge by developing algorithms capable of correctly "reading" a number on a typical high school sports scoreboard. Students use the structure of the engineering design process to guide them to develop successful algorithms. In the associated activity, student groups implement, test and revise their algorithms. This software design lesson/activity set is designed to be part of a Java programming class.
Testing is critical to any design, whether the creation of new software or a bridge across a wide river. Despite risking the quality of the design, the testing stage is often hurried in order to get products to market. In this lesson, students focus on the testing phase of the software/systems design process. They start by exploring existing examples of program testing using the CodingBat website, which contains a series of problems and challenges that students solve using the Java programming language. Working in teams, students practice writing test cases for other groups' code, and then write test cases for a program before writing the program itself.
In this lesson, students learn how to write a simple program to find all of the factors of any positive integer. The coding language is Python. Students learn the concept of an algorithm, as well as programming concepts such as variables, data types, and looping. The lesson also includes information on how the difficulty of factoring really large numbers is the basis of all modern online commerce.
This resource is a remix from Illustrative Mathematics https://tasks.illustrativemathematics.org/content-standards/tasks/1081. Suggested Modifications: It is imperative that students in their early ages of mathematics education be introduced to the idea of the number line that makes sense. In other words, they usually count the tick marks on the number line which leads to an inaccuracy in the algorithm. To help them better understand number lines, the suggestion is to introduce the idea number paths which is another way of looking at a number line. To help better facilitate the lesson, I have added a downloadable document student activity that can be used in cooperative learning groups to facilitate mathematical discourse. This activity also encourages literacy in the curriculum.
Building on the programming basics learned so far in the unit, students next learn how to program using sensors rather than by specifying exact durations. They start with an examination of algorithms and move to an understanding of conditional commands (until, then), which require the use of wait blocks. Working with the LEGO MINDSTORMS(TM) NXT robots and software, they learn about wait blocks and how to use them in conjunction with move blocks set with unlimited duration. To help with comprehension and prepare them for the associated activity programming challenges, volunteer students act out a maze demo and student groups conclude by programming LEGO robots to navigate a simple maze using wait block programming. A PowerPoint® presentation, a worksheet and pre/post quizzes are provided.
Student groups use the Java programming language to implement the algorithms for optical character recognition (OCR) that they developed in the associated lesson. They use different Java classes (provided) to test and refine their algorithms. The ultimate goal is to produce computer code that recognizes a digit on a scoreboard. Through this activity, students experience a very small part of what software engineers go through to create robust OCR methods. This software design lesson/activity set is designed to be part of a Java programming class.
Students design, build and evaluate a spring-powered mouse trap racer. For evaluation, teams equip their racers with an intelligent brick from a LEGO© MINDSTORMS© NXT Education Base Set and a HiTechnic© acceleration sensor. They use acceleration data collected during the launch to compute velocity and displacement vs. time graphs. In the process, students learn about the importance of fitting mathematical models to measurements of physical quantities, reinforce their knowledge of Newtonian mechanics, deal with design compromises, learn about data acquisition and logging, and carry out collaborative assessment of results from all participating teams.
Using new knowledge acquired in the associated lesson, students program LEGO MINDSTORMS(TM) NXT robots to go through a maze using movement blocks. The maze is created on the classroom floor with cardboard boxes as its walls. Student pairs follow the steps of the engineering design process to brainstorm, design and test programs to success. Through this activity, students understand how to create and test a basic program. A PowerPoint® presentation, pre/post quizzes and worksheet are provided.
After completing the associated lesson, students test their understanding in two programming tasks that utilize LEGO MINDSTORMS(TM) NXT robots and sound/touch sensors. In the first challenge, students become acquainted with wait blocks by designing programs to simply make robots move forward until "hearing" a noise, and then turn left. The second, more challenging activity pushes students to fully understand the potential of wait blocks. They create programs that make the robots change speed several times when a touch sensor is pressed. Students gain practice in the iterative design-program-test-redesign process. A PowerPoint® presentation, pre/post quizzes and worksheet are provided.
Students are introduced to the basic concepts of computer programs, algorithms and programming. Using a few blindfolds and a simple taped floor maze exercise, students come to understand that computers rely completely upon instructions given in programs and thus programs must be comprehensive and thorough. Then students learn to program using the LEGO MINDSTORMS(TM) NXT software. They create and test basic programs, first using just the LEGO NXT intelligent brick, and then using basic movement commands with the LEGO NXT software on computers. A detailed PowerPoint® presentation, plus a worksheet and pre/post quizzes are provided.