Students download the software needed to create Arduino programs and make sure …
Students download the software needed to create Arduino programs and make sure their Arduino microcontrollers work correctly. Then, they connect an LED to the Arduino and type up and upload programs to the Arduino board to 1) make the LED blink on and off and 2) make the LED fade (brighten and then dim). Throughout, students reflect on what they've accomplished by answering questions and modifying the original programs and circuits in order to achieve new outcomes. A design challenge gives students a chance to demonstrate their understanding of actuators and Arduinos; they design a functioning system using an Arduino, at least three actuators and either a buzzer or toy motor. For their designs, students sketch, create and turn in a user's manual for the system (text description, commented program, detailed hardware diagram). Numerous worksheets and handouts are provided.
This course covers the entire family of programming languages, starting with an …
This course covers the entire family of programming languages, starting with an introduction to programming languages in general and a discussion of the features and functionality that make up a modern programming language. Upon successful completion of this course, the student will be able to: identify the common concepts used to create programming languages; compare and contrast factors and commands that affect the programming state illustrate how execution ordering affects programming; identify the basic objects and constructs in Object-Oriented Programming; explain the characteristics of pure functional functions in functional programming; describe the structures and components utilized in logical programming. (Computer Science 404)
Unlike some other textbooks, this one does not follow a top-down narrative. …
Unlike some other textbooks, this one does not follow a top-down narrative. Rather it has the flow of a conversation, with backtracking. We will often build up programs incrementally, just as a pair of programmers would. We will include mistakes, not because I don’t know the answer, but because this is the best way for you to learn. Including mistakes makes it impossible for you to read passively: you must instead engage with the material, because you can never be sure of the veracity of what you’re reading.
The main programming language used in this book is Racket. Like with all operating systems, however, Racket actually supports a host of programming languages, so you must tell Racket which language you’re programming in.
This textbook has been used in classes at: Brown University, Cal Poly, Columbus State University, Northeastern University, NYU, Reed College, UC-San Diego, UC-Santa Cruz, University of Rhode Island, University of Utah, Westmont College, Williams College, and Worcester Polytechnic Institute.
In this culminating activity of the unit, students bring together everything they've …
In this culminating activity of the unit, students bring together everything they've learned in order to write the code to solve the Grand Challenge. The code solution takes two images captured by robots and combines them to create an image that can be focused at different distances, similar to the way that humans can focus either near or far. They write in a derivative of C++ called QT; all code is listed in this activity.
Students analyze a cartoon of a Rube Goldberg machine and a Python …
Students analyze a cartoon of a Rube Goldberg machine and a Python programming language script to practice engineering analysis. In both cases, they study the examples to determine how the different systems operate and the function of each component. This exercise in juxtaposition enables students to see the parallels between a more traditional mechanical engineering design and computer programming. Students also gain practice in analyzing two very different systems to fully understand how they work, similar to how engineers analyze systems and determine how they function and how changes to the system might affect the system.
Working in small groups, students complete and run functioning Python codes. They …
Working in small groups, students complete and run functioning Python codes. They begin by determining the missing commands in a sample piece of Python code that doubles all the elements of a given input and sums the resulting values. Then students modify more advanced Python code, which numerically computes the slope of a tangent line by finding the slopes of progressively closer secant lines; to this code they add explanatory comments to describe the function of each line of code. This requires students to understand the logic employed in the Python code. Finally, students make modifications to the code in order to find the slopes of tangents to a variety of functions.
Students write Arduino code and use a “digital sandbox” to create new …
Students write Arduino code and use a “digital sandbox” to create new colors out of the three programming primary colors: green, red and blue. They develop their own functions, use them to make disco light shows, and vary the pattern and colors of their shows. The digital sandbox is a hardware and software learning platform powered by a microcontroller that can interact with real-world inputs like light, while at the same time controlling LEDs and other outputs.
Using continual feedback and a problem solving process, high school computer programming …
Using continual feedback and a problem solving process, high school computer programming students design educational video games for a class of fifth grade students. Their programming teacher, Ben Chun, leads students through a process that begins with interviewing the students and involves constant feedback and revision to ultimately create a video game that is both fun and educational. Striving to model a real world situation as closely as possible, Mr. Chun requires students to interview both students and the teacher regarding learning objectives and standards, interests and video games they are already playing to create a design that is personalized and appropriate for students. As they go through the week long process, students work in teams of three to brainstorm ideas and assign roles involving programming, art and project management. All students are involved in the actual design process and end up producing games that are both responsive to students needs and engaging. At one point during the design process, the fifth grade class visited the school to provide feedback for prototypes so that final refinement and improvements could be made.
Through the two lessons and five activities in this unit, students' knowledge …
Through the two lessons and five activities in this unit, students' knowledge of sensors and motors is integrated with programming logic as they perform complex tasks using LEGO MINDSTORMS(TM) NXT robots and software. First, students are introduced to the discipline of engineering and "design" in general terms. Then in five challenge activities, student teams program LEGO robots to travel a maze, go as fast/slow as possible, push another robot, follow a line, and play soccer with other robots. This fifth unit in the series builds on the previous units and reinforces the theme of the human body as a system with sensors performing useful functions, not unlike robots. Through these design challenges, students become familiar with the steps of the engineering design process and come to understand how science, math and engineering including computer programming are used to tackle design challenges and help people solve real problems. PowerPoint® presentations, quizzes and worksheets are provided throughout the unit.
This unit is designed for advanced programming classes. It leads students through …
This unit is designed for advanced programming classes. It leads students through a study of human vision and computer programming simulation. Students apply their previous knowledge of arrays and looping structures to implement a new concept of linked lists and RGB decomposition in order to solve the unit's Grand Challenge: writing a program to simulate peripheral vision by merging two images. This unit connects computer science to engineering by incorporating several science topics (eye anatomy, physics of light and color, mathematics, and science of computers) and guides students through the design process in order to create final simulations.
Students work as if they are electrical engineers to program a keyboard …
Students work as if they are electrical engineers to program a keyboard to play different audible tones depending on where a sensor is pressed. They construct the keyboard from a soft potentiometer, an Arduino capable board, and a small speaker. The soft potentiometer “keyboard” responds to the pressure of touch on its eight “keys” (C, D, E, F, G, A, B, C) and feeds an input signal to the Arduino-capable board. Each group programs a board to take the input and send an output signal to the speaker to produce a tone that is dependent on the input signal—that is, which “key” is pressed. After the keyboard is working, students play "Twinkle, Twinkle, Little Star" and (if time allows) modify the code so that different keys or a different number of notes can be played.
Students modify a provided App Inventor code to design their own diseases. …
Students modify a provided App Inventor code to design their own diseases. This serves as the evolution step in the software/systems design process. The activity is essentially a mini design cycle in which students are challenged to design a solution to the modification, implement and test it using different population patterns The result of this process is an evolution of the original app.
Students work through an online tutorial on MIT's App Inventor to learn …
Students work through an online tutorial on MIT's App Inventor to learn how to create Android applications. Using those skills, they create their own applications and use them to collect data from an Android device accelerometer and store that data to databases. NOTE: Teachers and students must have a working knowledge of basic programming and App Inventor to complete this lesson. This lesson is not an introduction to MIT's App Inventor and is not recommended for use without prior knowledge of App Inventor to produce an end product. This lesson is an application for App Inventor that allows for the storage of persistent data (data that remains in memory even if an app is closed). This required prior knowledge can come from other experiences with the App Inventor. Also, many additional resources are available, such as tutorials from MIT. This lesson could also be used as an enrichment project for students who are self-motivated to learn the App Inventor software.
Students apply their knowledge of constructing and programming LEGO MINDSTORMS (TM)NXT robots …
Students apply their knowledge of constructing and programming LEGO MINDSTORMS (TM)NXT robots to create sumobots - strong robots capable of pushing other robots out of a ring. To meet the challenge, groups follow the steps of the engineering design process and consider robot structure, weight and gear ratios in their designs to make their robots push as hard as possible to force robot opponents out of the ring. A class competition serves as the final test to determine the best designed robot, illustrating the interrelationships between designing, building and programming. This activity gives students the opportunity to be creative as well as have fun applying and combining what they have learned through the previous activities and lessons in this and prior units in the series. A PowerPoint (tm) presentation, pre/post quizzes and a worksheet are provided.
JUnit is a testing method that is included with NetBeans (Java) installs …
JUnit is a testing method that is included with NetBeans (Java) installs or can be downloaded from the web and included in the Java build. In this activity, students design tests for a provided Java class before the class methods are constructed using a process called test-driven development. To create a design, the software/system design process, which is a specific case of the engineering design process, is followed. After students create a design, it is implemented and tested and if necessary, the design undergoes editing to make sure it functions by testing the Java class correctly. To conclude the activity, students write the methods in the Java class using their tests to debug the program.
Students learn basic concepts of robotic logic and programming by working with …
Students learn basic concepts of robotic logic and programming by working with Boe-Bot robotsâa simple programmable robotic platform designed to illustrate basic robotic concepts. Under the guidance of the instructor and a provided lab manual, student groups build simple circuits and write codes to make their robots perform a variety of tasks, including obstacle and light detection, line following and other motion routines. Eight sub-activities focus on different sensors, including physical sensors, phototransistors and infrared headlights. Students test their newly acquired skills in the final activity, in which they program their robots to navigate an obstacle course.
Students learn about traffic lights and their importance in maintaining public safety …
Students learn about traffic lights and their importance in maintaining public safety and order. Using a Parallax® Basic Stamp 2 microcontroller, students work in teams on the engineering challenge to build a traffic light with a specific behavior. In the process, they learn about light-emitting diodes (LEDs), and how their use can save energy. Students also design their own requirements based on real-world observations as they learn about traffic safety and work towards an interesting goal within the realm of what is important in practice. Knowledge gained from the activity is directly transferrable to future activities, and skills learned are scalable to more ambitious class projects.
Students focus on the testing phase of the design process by considering …
Students focus on the testing phase of the design process by considering how they have tested computer programs in the past and learning about a new method called JUnit to test programs in the future. JUnit is a testing method that is included with NetBeans (Java) installs or can be downloaded from the web and included in the Java build. Students design tests using JUnit and implement those tests.
Students are given a difficult challenge that requires they integrate what they …
Students are given a difficult challenge that requires they integrate what they have learned so far in the unit about wait blocks, loops and switches. They incorporate these tools into their programming of the LEGO MINDSTORMS(TM) NXT robots to perform different tasks depending on input from a sound sensor and two touch sensors. This activity helps students understand how similar logic is implemented for other every day device operations via computer programs. A PowerPoint® presentation, pre/post quizzes and worksheet are provided.
No restrictions on your remixing, redistributing, or making derivative works. Give credit to the author, as required.
Your remixing, redistributing, or making derivatives works comes with some restrictions, including how it is shared.
Your redistributing comes with some restrictions. Do not remix or make derivative works.
Most restrictive license type. Prohibits most uses, sharing, and any changes.
Copyrighted materials, available under Fair Use and the TEACH Act for US-based educators, or other custom arrangements. Go to the resource provider to see their individual restrictions.