
This report summarises research in primary science and ICT , including a focus on scientific literacy and children 's learning . The contribution and potential of ICT in primary science is evaluated . front cover The report identifies the need for focused and systematic research . It would be relevant for classroom practitioners , curriculum and software developers . The report is in five parts . Part one focuses on the debate about the meaning of scientific literacy and the question of what science should be taught in the primary curriculum . Part two focuses on the nature and value of primary science and includes some basic practical advice relating to the teacher 's role . Part three provides a survey of some of the research relating to children 's learning in science and begins to focus on the role of ICT . Issues of pupil age and gender as well as that of teachers ' science knowledge are identified with reference to research findings . A discussion of the implications of a constructivist approach to science is undertaken , highlighting the following challenges : ' One of the principal problems a teacher faces when using constructivist approaches to science teaching is the consideration of the unique ideas and experiences 30 individuals bring to each new science topic . How can the teacher elicit and challenge all of these to ensure that children develop the desired scientific concepts ? How can s/he ensure that each child is involved in science investigation ? How can s/he promote group work with limited science resources so that children can co-operate in science projects ? ' p 20 The view is presented that the primary curriculum should be made more exciting and comprehensible by focusing on observation and description , leaving explanation for KS3 . ' The author of this report strongly recommends that primary children should not be taught aspects of science that are too difficult for their teachers . ' p 18 Part four evaluates how ICT is currently being used to support primary science based on different modes of use . The value of spreadsheets and databases as tools in the primary curriculum is discussed as outlined in the following extract . ' Poole ( 2000 ) , however , warns that primary children have used spreadsheets without going through all the preliminary stages such as selecting axis scales and deciding on the best type of graph to explore patterns in the data . He suggests that the key issue is the pupil 's ability to handle and interpret the data , so that the use of ICT for graphing needs to be part of a well-coordinated programme for teaching graphical skills . When the use of spreadsheets is considered in terms of the skills , concepts and attitudes summarised in Table 2 ( see source ) , however , it appears that the only added value of using a spreadsheet in terms of primary science is the speed with which the data can be presented graphically . This could indeed prove to be problematic because if the children are not drawing the graphs for themselves , they may experience a ' conceptual gap ' between measurements and their graphical representation . McFarlane ( 2000b ) , however , argues that using the graphing applications of spreadsheets can allow data handling exercises to focus on presentation and interpretation rather than simple construction . The issue could be analogous to that of children using calculators routinely instead of mental arithmetic ' p23 The term ' drawing graphs for themselves ' may be the cause of confusion here . Rather than being an issue of the technology used to create a graph ( i. e . pencil , paper and ruler versus computer and software ) , it may be an issue of agency and experience in the design of graphs for differing purposes . Data logging is evaluated positively but issues of practicality are highlighted . CD-ROMs and the Internet are evaluated as a reference source . Examples of students ' evaluations are included . E-mail , digital cameras , PowerPoint and Interactive Whiteboards are evaluated as a means of communicating concepts and understanding . The view is expressed that ICT can realise its greatest potential as support for presenting scientific information . Control technology , simulators and virtual reality are evaluated as a means for exploration and investigation . The final part of the report identifies opportunities for research focusing in particular on the subject knowledge of the primary science curriculum , the match of software to science learning , the impact of using spreadsheets and the design of CD-ROMs . 