This is an 84-page booklet containing a detailed unit for teaching basic computer programming skills using an iPad app called Hopscotch. The unit consists of 8 lessons where students practice computational thinking skills through open-ended programming challenges. This lesson requires students to have access to iPads and the Hopscotch app.
Students prepare for the associated activity in which they investigate acceleration by collecting acceleration vs. time data using the accelerometer of a sliding Android device. Based on the experimental set-up for the activity, students form hypotheses about the acceleration of the device. Students will investigate how the force on the device changes according to Newton's Second Law. Different types of acceleration, including average, instantaneous and constant acceleration, are introduced. Acceleration and force is described mathematically and in terms of processes and applications.
In the first of two sequential lessons, students create mobile apps that collect data from an Android device's accelerometer and then store that data to a database. This lesson provides practice with MIT's App Inventor software and culminates with students writing their own apps for measuring acceleration. In the second lesson, students are given an app for an Android device, which measures acceleration. They investigate acceleration by collecting acceleration vs. time data using the accelerometer of a sliding Android device. Then they use the data to create velocity vs. time graphs and approximate the maximum velocity of the device.
Students develop an app for an Android device that utilizes its built-in internal sensors, specifically the accelerometer. The goal of this activity is to teach programming design and skills using MIT's App Inventor software (free to download from the Internet) as the vehicle for learning. The activity should be exciting for students who are interested in applying what they learn to writing other applications for Android devices. Students learn the steps of the engineering design process as they identify the problem, develop solutions, select and implement a possible solution, test the solution and redesign, as needed, to accomplish the design requirements.
C is the most commonly used programming language for writing operating systems. The first operating system written in C is Unix. Later operating systems like GNU/Linux were all written in C. Not only is C the language of operating systems, it is the precursor and inspiration for almost all of the most popular high-level languages available today. In fact, Perl, PHP, Python and Ruby are all written in C. By way of analogy, let's say that you were going to be learning Spanish, Italian, French, or Portuguese. Do you think knowing Latin would be helpful? Just as Latin was the basis of all of those languages, knowing C will enable you to understand and appreciate an entire family of programming languages built upon the traditions of C. Knowledge of C enables freedom.
Although C# is derived from the C programming language, it introduces some unique and powerful features, such as delegates (which can be viewed as type-safe function pointers) and lambda expressions which introduce elements of functional programming languages, as well as a simpler single class inheritance model (than C++) and, for those of you with experience in "C-like" languages, a very familiar syntax that may help beginners become proficient faster than its predecessors. Similar to Java, it is object-oriented, comes with an extensive class library, and supports exception handling, multiple types of polymorphism, and separation of interfaces from implementations. Those features, combined with its powerful development tools, multi-platform support, and generics, make C# a good choice for many types of software development projects: rapid application development projects, projects implemented by individuals or large or small teams, Internet applications, and projects with strict reliability requirements. Testing frameworks such as NUnit make C# amenable to test-driven development and thus a good language for use with Extreme Programming (XP). Its strong typing helps to prevent many programming errors that are common in weakly typed languages.
Students work in small collaborative design teams to propose, build, and document a semester-long project focused on mobile applications for cell phones. Additional assignments include creating several small mobile applications such as context-aware mobile media capture and games. Students document their work through a series of written and oral proposals, progress reports, and final reports. This course covers the basics of J2ME and explores mobile imaging and media creation, GPS location, user-centered design, usability testing, and prototyping. Java experience is recommended.
Students will use the Scratch Jr. app to create, compare and contrast characters. This introductory lesson will include the foundational skills students will need to begin using Scratch Jr., so it makes a great "first project" with students.Pre-requisites-Have a device available for each student (Note: instructions are written for iPad, but the app is available on Android and ChromeOS devices as well).-Ensure that the app "Scratch Jr." is installed on all of the devices. This is a free app in the iOS App Store, Google Play Store, or Chrome Web Store.-Read through this lesson plan. The teacher will be directing students through each step along the way, so familiarize yourself with the end product.
" 6.004 offers an introduction to the engineering of digital systems. Starting with MOS transistors, the course develops a series of building blocks ŰÓ logic gates, combinational and sequential circuits, finite-state machines, computers and finally complete systems. Both hardware and software mechanisms are explored through a series of design examples. 6.004 is required material for any EECS undergraduate who wants to understand (and ultimately design) digital systems. A good grasp of the material is essential for later courses in digital design, computer architecture and systems. The problem sets and lab exercises are intended to give students "hands-on" experience in designing digital systems; each student completes a gate-level design for a reduced instruction set computer (RISC) processor during the semester."
16.225 is a graduate level course on Computational Mechanics of Materials. The primary focus of this course is on the teaching of state-of-the-art numerical methods for the analysis of the nonlinear continuum response of materials. The range of material behavior considered in this course will include: linear and finite deformation elasticity, inelasticity and dynamics. Numerical formulation and algorithms will include: Variational formulation and variational constitutive updates, finite element discretization, error estimation, constrained problems, time integration algorithms and convergence analysis. There will be a strong emphasis on the (parallel) computer implementation of algorithms in programming assignments. At the beginning of the course, the students will be given the source of a base code with all the elements of a finite element program which constitute overhead and do not contribute to the learning objectives of this course (assembly and equation-solving methods, etc.). Each assignment will consist of formulating and implementing on this basic platform, the increasingly complex algorithms resulting from the theory given in class, as well as in using the code to numerically solve specific problems. The application to real engineering applications and problems in engineering science will be stressed throughout.
This course introduces programming languages and techniques used by physical scientists: FORTRAN, C, C++, MATLAB, and Mathematica. Emphasis is placed on program design, algorithm development and verification, and comparative advantages and disadvantages of different languages.
Introduction to computer graphics hardware, algorithms, and software. Topics include: line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience required. 6.837 offers an introduction to computer graphics hardware, algorithms, and software. Topics include: line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience is required.
This lesson compares iterative and recursive factorial functions. [Computer Programming playlist: 13 of 23]
This lesson will help you learn about variable scope and function calls in Python. [Computer Programming playlist: 11 of 23]
This lesson is an introduction to the fibonacci Sequence and a programming challenge. [Computer Programming playlist: 14 of 23]
This lesson is a challenge to write a Python function that can sort in list in-place. [Computer Programming playlist: 19 of 23]
This lesson shows how to experiment and see what can be done with strings in Python programming. [Computer Programming playlist: 5 of 23]