Search NASA⌕ Search

SEARCH · Search NASA

Results for “high level programming language”

Search indexed NASA NTRS and DOE OSTI research on propulsion, heat transfer, battery materials and energy systems. Follow report and document links to the original sources.

Quote a phrase for an exact phrase match. Source license links do not imply unrestricted reuse.

At least 199 records · Page 11

A translator writing system for microcomputer high-level languages and assemblers

In order to implement high level languages whenever possible, a translator writing system of advanced design was developed. It is intended for routine production use by many programmers working on different projects. As well as a fairly conventional parser generator, it includes a system for the rapid generation of table driven code generators. The parser generator was developed from a prototype version. The translator writing system includes various tools for the management of the source text of a compiler under construction. In addition, it supplies various default source code sections so that its output is always compilable and executable. The system thereby encourages iterative enhancement as a development methodology by ensuring an executable program from the earliest stages of a compiler development project. The translator writing system includes PASCAL/48 compiler, three assemblers, and two compilers for a subset of HAL/S.

Collins, W. R.↗

The force on the flex: Global parallelism and portability

A parallel programming methodology, called the force, supports the construction of programs to be executed in parallel by an unspecified, but potentially large, number of processes. The methodology was originally developed on a pipelined, shared memory multiprocessor, the Denelcor HEP, and embodies the primitive operations of the force in a set of macros which expand into multiprocessor Fortran code. A small set of primitives is sufficient to write large parallel programs, and the system has been used to produce 10,000 line programs in computational fluid dynamics. The level of complexity of the force primitives is intermediate. It is high enough to mask detailed architectural differences between multiprocessors but low enough to give the user control over performance. The system is being ported to a medium scale multiprocessor, the Flex/32, which is a 20 processor system with a mixture of shared and local memory. Memory organization and the type of processor synchronization supported by the hardware on the two machines lead to some differences in efficient implementations of the force primitives, but the user interface remains the same. An initial implementation was done by retargeting the macros to Flexible Computer Corporation's ConCurrent C language. Subsequently, the macros were caused to directly produce the system calls which form the basis for ConCurrent C. The implementation of the Fortran based system is in step with Flexible Computer Corporations's implementation of a Fortran system in the parallel environment.

Jordan, H. F.↗

Programming methodology for a general purpose automation controller

The General Purpose Automation Controller is a multi-processor architecture for automation programming. A methodology has been developed whose aim is to simplify the task of programming distributed real-time systems for users in research or manufacturing. Programs are built by configuring function blocks (low-level computations) into processes using data flow principles. These processes are activated through the verb mechanism. Verbs are divided into two classes: those which support devices, such as robot joint servos, and those which perform actions on devices, such as motion control. This programming methodology was developed in order to achieve the following goals: (1) specifications for real-time programs which are to a high degree independent of hardware considerations such as processor, bus, and interconnect technology; (2) a component approach to software, so that software required to support new devices and technologies can be integrated by reconfiguring existing building blocks; (3) resistance to error and ease of debugging; and (4) a powerful command language interface.

Sturzenbecker, M. C.↗

Master Metadata Repository and Metadata-Management System

A master metadata repository (MMR) software system manages the storage and searching of metadata pertaining to data from national and international satellite sources of the Global Ocean Data Assimilation Experiment (GODAE) High Resolution Sea Surface Temperature Pilot Project [GHRSSTPP]. These sources produce a total of hundreds of data files daily, each file classified as one of more than ten data products representing global sea-surface temperatures. The MMR is a relational database wherein the metadata are divided into granulelevel records [denoted file records (FRs)] for individual satellite files and collection-level records [denoted data set descriptions (DSDs)] that describe metadata common to all the files from a specific data product. FRs and DSDs adhere to the NASA Directory Interchange Format (DIF). The FRs and DSDs are contained in separate subdatabases linked by a common field. The MMR is configured in MySQL database software with custom Practical Extraction and Reporting Language (PERL) programs to validate and ingest the metadata records. The database contents are converted into the Federal Geographic Data Committee (FGDC) standard format by use of the Extensible Markup Language (XML). A Web interface enables users to search for availability of data from all sources.

Armstrong, Edward↗

Supporting Research and Technology Activities for a Microwave Observing Program to Search for Extraterrestrial Intelligence

Curriculum materials based on the search for extraterrestrial intelligence (SETI) were developed for grades 3 through 9 science classes. The project was supported in part by NASA. Six teacher's guides, plus ancillary visuals, addressing topics in astronomy, biology, chemistry, geosciences, and physics as well as mathematics, social sciences, and language arts, were designed by a team of teachers, scientists. curriculum developers, and artists. First drafts were piloted by 10 design team teachers; revised drafts were field tested by 109 teachers in 30 states. Extensive feedback from these teachers and their students and reviews by scientists were used to revise materials prior to submission to the publisher. The field test teachers overall ranking of all guides (data from individual lesson feedback forms) was 431 on a one low to five high scale; 85% found the content appropriate to course and grade level and 75% indicated they had no reservations about using the materials again or recommending them to colleagues. The ratio of liked to disliked student responses (from 1305 student letters) was 70:30. Most recommendations from the teachers, students, and science reviewers were incorporated in the final versions for the guides, published by Libraries Unlimited/Teacher Ideas Press, 1995.

Tarter, Jill↗

Portable parallel stochastic optimization for the design of aeropropulsion components

This report presents the results of Phase 1 research to develop a methodology for performing large-scale Multi-disciplinary Stochastic Optimization (MSO) for the design of aerospace systems ranging from aeropropulsion components to complete aircraft configurations. The current research recognizes that such design optimization problems are computationally expensive, and require the use of either massively parallel or multiple-processor computers. The methodology also recognizes that many operational and performance parameters are uncertain, and that uncertainty must be considered explicitly to achieve optimum performance and cost. The objective of this Phase 1 research was to initialize the development of an MSO methodology that is portable to a wide variety of hardware platforms, while achieving efficient, large-scale parallelism when multiple processors are available. The first effort in the project was a literature review of available computer hardware, as well as review of portable, parallel programming environments. The first effort was to implement the MSO methodology for a problem using the portable parallel programming language, Parallel Virtual Machine (PVM). The third and final effort was to demonstrate the example on a variety of computers, including a distributed-memory multiprocessor, a distributed-memory network of workstations, and a single-processor workstation. Results indicate the MSO methodology can be well-applied towards large-scale aerospace design problems. Nearly perfect linear speedup was demonstrated for computation of optimization sensitivity coefficients on both a 128-node distributed-memory multiprocessor (the Intel iPSC/860) and a network of workstations (speedups of almost 19 times achieved for 20 workstations). Very high parallel efficiencies (75 percent for 31 processors and 60 percent for 50 processors) were also achieved for computation of aerodynamic influence coefficients on the Intel. Finally, the multi-level parallelization strategy that will be needed for large-scale MSO problems was demonstrated to be highly efficient. The same parallel code instructions were used on both platforms, demonstrating portability. There are many applications for which MSO can be applied, including NASA's High-Speed-Civil Transport, and advanced propulsion systems. The use of MSO will reduce design and development time and testing costs dramatically.

Sues, Robert H.↗

Active Control Evaluation for Spacecraft (ACES)

The Air Force goal is to develop vibration control techniques for large flexible spacecraft by addressing sensor, actuator, and control hardware and dynamic testing. The Active Control Evaluation for Spacecraft (ACES) program will address the Air Force goal by looking at two leading control techniques and implementing them on a structural model of a flexible spacecraft under laboratory testing. The first phase in the ACES program is to review and to assess the High Authority Control/Low Authority Control (HAC/LAC) and Filter accomodated Model Error Sensitivity Suppression (FAMESS) control techniques for testing on the modified VCOSS structure. Appropriate sensors and actuators will be available for use with both techniques; locations will be the same for both techniques. The control actuators will be positioned at the midpoint and free end of the structure. The laser source for the optical sensor is mounted on the feed mast. The beam will be reflected from a mirror on the offset antenna onto the detectors mounted above the shaker table bay. The next phase is to develop an analysis simulation with the control algorithms implemented for dynamics verification. The third phase is to convert the control laws into high level computer language and test them in the NASA-MSFC facility. The final phase is to compile all analytical and test results for performance comparisons.

Pearson, J.↗

ANTLR Tree Grammar Generator and Extensions

A computer program implements two extensions of ANTLR (Another Tool for Language Recognition), which is a set of software tools for translating source codes between different computing languages. ANTLR supports predicated- LL(k) lexer and parser grammars, a notation for annotating parser grammars to direct tree construction, and predicated tree grammars. [ LL(k) signifies left-right, leftmost derivation with k tokens of look-ahead, referring to certain characteristics of a grammar.] One of the extensions is a syntax for tree transformations. The other extension is the generation of tree grammars from annotated parser or input tree grammars. These extensions can simplify the process of generating source-to-source language translators and they make possible an approach, called "polyphase parsing," to translation between computing languages. The typical approach to translator development is to identify high-level semantic constructs such as "expressions," "declarations," and "definitions" as fundamental building blocks in the grammar specification used for language recognition. The polyphase approach is to lump ambiguous syntactic constructs during parsing and then disambiguate the alternatives in subsequent tree transformation passes. Polyphase parsing is believed to be useful for generating efficient recognizers for C++ and other languages that, like C++, have significant ambiguities.

Craymer, Loring↗

Process Management and Exception Handling in Multiprocessor Operating Systems Using Object-Oriented Design Techniques

The programming of the interrupt handling mechanisms, process switching primitives, scheduling mechanism, and synchronization primitives of an operating system for a multiprocessor require both efficient code in order to support the needs of high- performance or real-time applications and careful organization to facilitate maintenance. Although many advantages have been claimed for object-oriented class hierarchical languages and their corresponding design methodologies, the application of these techniques to the design of the primitives within an operating system has not been widely demonstrated. To investigate the role of class hierarchical design in systems programming, the authors have constructed the Choices multiprocessor operating system architecture the C++ programming language. During the implementation, it was found that many operating system design concerns can be represented advantageously using a class hierarchical approach, including: the separation of mechanism and policy; the organization of an operating system into layers, each of which represents an abstract machine; and the notions of process and exception management. In this paper, we discuss an implementation of the low-level primitives of this system and outline the strategy by which we developed our solution.

Russo, Vincent↗

QSPIN: A High Level Java API for Quantum Computing Experimentation

QSPIN is a high level Java language API for experimentation in QC models used in the calculation of Ising spin glass ground states and related quadratic unconstrained binary optimization (QUBO) problems. The Java API is intended to facilitate research in advanced QC algorithms such as hybrid quantum-classical solvers, automatic selection of constraint and optimization parameters, and techniques for the correction and mitigation of model and solution errors. QSPIN includes high level solver objects tailored to the D-Wave quantum annealing architecture that implement hybrid quantum-classical algorithms [Booth et al.] for solving large problems on small quantum devices, elimination of variables via roof duality, and classical computing optimization methods such as GPU accelerated simulated annealing and tabu search for comparison. A test suite of documented NP-complete applications ranging from graph coloring, covering, and partitioning to integer programming and scheduling are provided to demonstrate current capabilities.

Quantu↗

Rapid Diagnostics of Onboard Sequences

Keeping track of sequences onboard a spacecraft is challenging. When reviewing Event Verification Records (EVRs) of sequence executions on the Mars Exploration Rover (MER), operators often found themselves wondering which version of a named sequence the EVR corresponded to. The lack of this information drastically impacts the operators diagnostic capabilities as well as their situational awareness with respect to the commands the spacecraft has executed, since the EVRs do not provide argument values or explanatory comments. Having this information immediately available can be instrumental in diagnosing critical events and can significantly enhance the overall safety of the spacecraft. This software provides auditing capability that can eliminate that uncertainty while diagnosing critical conditions. Furthermore, the Restful interface provides a simple way for sequencing tools to automatically retrieve binary compiled sequence SCMFs (Space Command Message Files) on demand. It also enables developers to change the underlying database, while maintaining the same interface to the existing applications. The logging capabilities are also beneficial to operators when they are trying to recall how they solved a similar problem many days ago: this software enables automatic recovery of SCMF and RML (Robot Markup Language) sequence files directly from the command EVRs, eliminating the need for people to find and validate the corresponding sequences. To address the lack of auditing capability for sequences onboard a spacecraft during earlier missions, extensive logging support was added on the Mars Science Laboratory (MSL) sequencing server. This server is responsible for generating all MSL binary SCMFs from RML input sequences. The sequencing server logs every SCMF it generates into a MySQL database, as well as the high-level RML file and dictionary name inputs used to create the SCMF. The SCMF is then indexed by a hash value that is automatically included in all command EVRs by the onboard flight software. Second, both the binary SCMF result and the RML input file can be retrieved simply by specifying the hash to a Restful web interface. This interface enables command line tools as well as large sophisticated programs to download the SCMF and RMLs on-demand from the database, enabling a vast array of tools to be built on top of it. One such command line tool can retrieve and display RML files, or annotate a list of EVRs by interleaving them with the original sequence commands. This software has been integrated with the MSL sequencing pipeline where it will serve sequences useful in diagnostics, debugging, and situational awareness throughout the mission.

Starbird, Thomas W.↗

Simulation model of a twin-tail, high performance airplane

The mathematical model and associated computer program to simulate a twin-tailed high performance fighter airplane (McDonnell Douglas F/A-18) are described. The simulation program is written in the Advanced Continuous Simulation Language. The simulation math model includes the nonlinear six degree-of-freedom rigid-body equations, an engine model, sensors, and first order actuators with rate and position limiting. A simplified form of the F/A-18 digital control laws (version 8.3.3) are implemented. The simulated control law includes only inner loop augmentation in the up and away flight mode. The aerodynamic forces and moments are calculated from a wind-tunnel-derived database using table look-ups with linear interpolation. The aerodynamic database has an angle-of-attack range of -10 to +90 and a sideslip range of -20 to +20 degrees. The effects of elastic deformation are incorporated in a quasi-static-elastic manner. Elastic degrees of freedom are not actively simulated. In the engine model, the throttle-commanded steady-state thrust level and the dynamic response characteristics of the engine are based on airflow rate as determined from a table look-up. Afterburner dynamics are switched in at a threshold based on the engine airflow and commanded thrust.

Buttrill, Carey S.↗

Cooperative Data Sharing: Simple Support for Clusters of SMP Nodes

Libraries like PVM and MPI send typed messages to allow for heterogeneous cluster computing. Lower-level libraries, such as GAM, provide more efficient access to communication by removing the need to copy messages between the interface and user space in some cases. still lower-level interfaces, such as UNET, get right down to the hardware level to provide maximum performance. However, these are all still interfaces for passing messages from one process to another, and have limited utility in a shared-memory environment, due primarily to the fact that message passing is just another term for copying. This drawback is made more pertinent by today's hybrid architectures (e.g. clusters of SMPs), where it is difficult to know beforehand whether two communicating processes will share memory. As a result, even portable language tools (like HPF compilers) must either map all interprocess communication, into message passing with the accompanying performance degradation in shared memory environments, or they must check each communication at run-time and implement the shared-memory case separately for efficiency. Cooperative Data Sharing (CDS) is a single user-level API which abstracts all communication between processes into the sharing and access coordination of memory regions, in a model which might be described as "distributed shared messages" or "large-grain distributed shared memory". As a result, the user programs to a simple latency-tolerant abstract communication specification which can be mapped efficiently to either a shared-memory or message-passing based run-time system, depending upon the available architecture. Unlike some distributed shared memory interfaces, the user still has complete control over the assignment of data to processors, the forwarding of data to its next likely destination, and the queuing of data until it is needed, so even the relatively high latency present in clusters can be accomodated. CDS does not require special use of an MMU, which can add overhead to some DSM systems, and does not require an SPMD programming model. unlike some message-passing interfaces, CDS allows the user to implement efficient demand-driven applications where processes must "fight" over data, and does not perform copying if processes share memory and do not attempt concurrent writes. CDS also supports heterogeneous computing, dynamic process creation, handlers, and a very simple thread-arbitration mechanism. Additional support for array subsections is currently being considered. The CDS1 API, which forms the kernel of CDS, is built primarily upon only 2 communication primitives, one process initiation primitive, and some data translation (and marshalling) routines, memory allocation routines, and priority control routines. The entire current collection of 28 routines provides enough functionality to implement most (or all) of MPI 1 and 2, which has a much larger interface consisting of hundreds of routines. still, the API is small enough to consider integrating into standard os interfaces for handling inter-process communication in a network-independent way. This approach would also help to solve many of the problems plaguing other higher-level standards such as MPI and PVM which must, in some cases, "play OS" to adequately address progress and process control issues. The CDS2 API, a higher level of interface roughly equivalent in functionality to MPI and to be built entirely upon CDS1, is still being designed. It is intended to add support for the equivalent of communicators, reduction and other collective operations, process topologies, additional support for process creation, and some automatic memory management. CDS2 will not exactly match MPI, because the copy-free semantics of communication from CDS1 will be supported. CDS2 application programs will be free to carefully also use CDS1. CDS1 has been implemented on networks of workstations running unmodified Unix-based operating systems, using UDP/IP and vendor-supplied high- performance locks. Although its inter-node performance is currently unimpressive due to rudimentary implementation technique, it even now outperforms highly-optimized MPI implementation on intra-node communication due to its support for non-copy communication. The similarity of the CDS1 architecture to that of other projects such as UNET and TRAP suggests that the inter-node performance can be increased significantly to surpass MPI or PVM, and it may be possible to migrate some of its functionality to communication controllers.

DiNucci, David C.↗

The SunPy Project: An Interoperable Ecosystem for Solar Data Analysis

The SunPy Project is a community of scientists and software developers creating an ecosystem of Python packages for solar physics. The project includes the sunpy core package as well as a set of affiliated packages. The sunpy core package provides general purpose tools to access data from different providers, read image and time series data, and transform between commonly used coordinate systems. Affiliated packages perform more specialized tasks that do not fall within the more general scope of the sunpy core package. In this article, we give a high-level overview of the SunPy Project, how it is broader than the sunpy core package, and how the project curates and fosters the affiliated package system. We demonstrate how components of the SunPy ecosystem, including sunpy and several affiliated packages, work together to enable multi-instrument data analysis workflows. We also describe members of the SunPy Project and how the project interacts with the wider solar physics and scientific Python communities. Finally, we discuss the future direction and priorities of the SunPy Project.

Solar physics↗

Teaching planetary sciences to elementary school teachers: Programs that work

Planetary sciences can be used to introduce students to the natural world which is a part of their lives. Even children in an urban environment are aware of such phenomena as day and night, shadows, and the seasons. It is a science that transcends cultures, has been prominent in the news in recent years, and can generate excitement in young minds as no other science can. Planetary sciences also provides a useful tool for understanding other sciences and mathematics, and for developing problem solving skills which are important in our technological world. However, only 15 percent of elementary school teachers feel very well qualified to teach earth/space science, while better than 80 percent feel well qualified to teach reading; many teachers avoid teaching science; very little time is actually spent teaching science in the elementary school: 19 minutes per day in K-3 and 38 minutes per day in 4-6. While very little science is taught in elementary and middle school, earth/space science is taught at the elementary level in less than half of the states. It was pointed out that science is not generally given high priority by either teachers or school districts, and is certainly not considered on a par with language arts and mathematics. Therefore, in order to teach science to our youth, we must empower our teachers, making them familiar and comfortable with existing materials. In our earlier workshops, several of our teachers taught in classrooms where the majority of the students were Hispanic (over 90 percent). However, few space sciences materials existed in Spanish. Therefore, most of our materials could not be used effectively in the classroom. To address this issue, NASA materials were translated into Spanish and a series of workshops for bilingual classroom teachers from Tucson and surrounding cities was conducted. Our space sciences workshops and our bilingual classroom workshops and how they address the needs of elementary school teachers in Arizona are addressed in detail.

Lebofsky, Larry A.↗

Science Communication versus Science Education: The Graduate Student Scientist as a K-12 Classroom Resource

Science literacy is a major goal of science educational reform (NRC, 1996; AAAS, 1998; NCLB Act, 2001). Some believe that teaching science only requires pedagogical content knowledge (PCK). Others believe doing science requires knowledge of the methodologies of scientific inquiry (NRC, 1996). With these two mindsets, the challenge for science educators is to create models that bring the two together. The common ground between those who teach science and those who do science is science communication, an interactive process that galvanizes dialogue among scientists, teachers, and learners in a rich ambience of mutual respect and a common, inclusive language of discourse . The dialogue between science and non-science is reflected in the polarization that separates those who do science and those who teach science, especially as it plays out everyday in the science classroom. You may be thinking, why is this important? It is vital because, although not all science learners become scientists, all K-12 students are expected to acquire science literacy, especially with the implementation of the No Child Left Behind Act of 2001 (NCLB). Students are expected to acquire the ability to follow the discourse of science as well as connect the world of science to the context of their everyday life if they plan on moving to the next grade level, and in some states, to graduate from high school. This paper posits that science communication is highly effective in providing the missing link for K-12 students cognition in science and their attainment of science literacy. This paper will focus on the "Science For Our Schools" (SFOS) model implemented at California State Univetsity, Los Angeles (CSULA) as a project of the National Science Foundation s GK-12 program, (NSF 2001) which has been a huge success in bridging the gap between those who "know" science and those who "teach" science. The SFOS model makes clear the distinctions that identify science, science communication, science education, and science literacy in the midst of science learning by bringing together graduate student scientists and science teachers to engage students in the two world s dialogue in the midst of the school science classroom. The graduate student scientists and the science teachers worked as a team throughout the school year and became effective science Communicators as they narrowed the gulf between the two worlds. 1

communications↗

Development and Application of a Tool for Optimizing Composite Matrix Viscoplastic Material Parameters

This document describes a recently developed analysis tool that enhances the resident capabilities of the Micromechanics Analysis Code with the Generalized Method of Cells (MAC/GMC) and its application. MAC/GMC is a composite material and laminate analysis software package developed at NASA Glenn Research Center. The primary focus of the current effort is to provide a graphical user interface (GUI) capability that helps users optimize highly nonlinear viscoplastic constitutive law parameters by fitting experimentally observed/measured stress-strain responses under various thermo-mechanical conditions for braided composites. The tool has been developed utilizing the MATrix LABoratory (MATLAB) (The Mathworks, Inc., Natick, MA) programming language. Illustrative examples shown are for a specific braided composite system wherein the matrix viscoplastic behavior is represented by a constitutive law described by seven parameters. The tool is general enough to fit any number of experimentally observed stress-strain responses of the material. The number of parameters to be optimized, as well as the importance given to each stress-strain response, are user choice. Three different optimization algorithms are included: (1) Optimization based on gradient method, (2) Genetic algorithm (GA) based optimization and (3) Particle Swarm Optimization (PSO). The user can mix and match the three algorithms. For example, one can start optimization with either 2 or 3 and then use the optimized solution to further fine tune with approach 1. The secondary focus of this paper is to demonstrate the application of this tool to optimize/calibrate parameters for a nonlinear viscoplastic matrix to predict stress-strain curves (for constituent and composite levels) at different rates, temperatures and/or loading conditions utilizing the Generalized Method of Cells. After preliminary validation of the tool through comparison with experimental results, a detailed virtual parametric study is presented wherein the combined effects of temperature and loading rate on the predicted response of a braided composite is investigated.

thermo-mechanical; MATLAB; GUI-Based Too↗

Icing Research Tunnel

The Icing Research Tunnel in Building 11 at the NASA Glenn Research Center is committed to researching the effects of in flight icing on aircraft and testing ways to stop the formation of hazardous icing conditions on planes. During this summer, I worked here with Richard DelRosa, the lead engineer for this area. address one of the major concerns of aviation: icing conditions. During the war, many planes crashed (especially supply planes going over the.Himalayas) because ice built up in their wings and clogged the engines. To this day, it remains the largest ice tunnel in the world, with a test section that measures 6 feet high, 9 feet long, and 20 feet wide. It can simulate airspeeds from 50 to 300 miles per hour at temperatures as low as -50 Fahrenheit. Using these capabilities, IRT can simulate actual conditions at high altitudes. The first thing I did was creating a cross reference in Microsoft Excel. It lists commands for the DPU units that control the pressure and temperature variations in the tunnel, as well as the type of command (keyboard, multiplier, divide, etc). The cross reference also contains the algorithm for every command, and which page it is listed in on the control sheet (visual Auto-CAD graphs, which I helped to make). I actually spent most of the time on the computer using Auto-CAD. I drew a diagram of the entire icing tunnel and then drew diagrams of its various parts. Between my mentor and me, we have drawings of every part of it, from the spray bars to the thermocouples, power cabinets, input-output connectors for power systems, and layouts of various other machines. I was also responsible for drawing schematics for the Escort system (which controls the spray bars), the power system, DPUs, and other electrical systems. In my spare time, I am attempting to build and program the "toddler". Toddler is a walking robot that I have to program in PBASIC language. When complete, it should be able to walk on level terrain while avoiding obstacles in real-time. It features an infrared detector that can keep it from falling over edges, as well as follow or avoid a light source. The toddler is giving me a much better understanding of the basics of electronic circuitry and computer programming.

Chennault, Jonathan↗