We use Eventbrite to manage event bookings. If you view or interact with this content, Eventbrite may store cookies on your device for functional, analytical or targeting purposes. Please accept cookies to book your place, or visit the event listing at Eventbrite.
This content is provided by " + networkList[key] + ". If you view or interact with this content " + networkList[key] + " may store cookies on your device for functional, analytical or targeting purposes. Please accept cookies to use this content.
For students planning to take part in the Chemistry Olympiad, trying out past papers gives them the opportunity to hone key skills and boost their confidence ahead of the competition. This collection brings together past papers from 2003 onwards, each accompanied by a summary of the topics covered as well as a mark scheme with answers.
Past papers can be used flexibly by teachers and students, with varying degrees of independence. Browse the summary of papers and topics below to find a particular question, or select a paper to work through from beginning to end.
Topics include reactions that produce phosphine; carbon capture by calcium looping; synthesis and reactions of levulinic acid; Newman projections; synthesis of hydroxychloroquine; and kinetics of the formation of xenon difluoride.
Topics include the reactions and structure of calcium carbide; the thermodynamics of hydrogen as a fuel; the structure of UV-absorbing chemicals; structures of silicon oxides; kinetics in colourful compounds; and synthesising [5]-ladderanoic acid.
Topics include carbon dioxide in fizzy drinks; electrolysis of precious metals and NMR spectra of platinum complexes; the kinetics of nerve agent treatments; synthesising pesticides; and calculations on biodegradable polymers.
Topics include reactions within lithium-ion batteries; sustainable methods of producing ammonia; isotopes and reactions of Uranium; the synthesis of dextromethorphan; and compounds of helium and sodium.
Topics include the reactions of lanthanum carbonate; ionisation energies of sodium; the synthesis of tazarotene; analysis of chemicals that bombardier beetles use to defend themselves; and the structure and reactions of methane hydrates.
Topics include synthesising Ambrox; analysing a copper complex using titrations; thermodynamics of halogen fluorides; calculations on salty solutions; using osmium compounds in organic reactions; and the structure of gold.
Topics include methods of producing pure silicon; the kinetics of vitamin D production in mushrooms; thermodynamics and structure of mercury fulminate; reactions and analysis of aluminium compounds; mass spectrometry of polypeptides; and the synthesis of fexofenadine.
Topics include the reactions and thermodynamics of rocket fuels; structures of phosphorus allotropes; analysing phosphate levels in blood; spectroscopic analysis of flame retardants; the synthesis of Tamiflu; and reactions of chlorine dioxide.
Topics include reactions of the ingredients in sherbet lemons; reactions in vehicle exhausts; structures of acyl chloride compounds; thermal decomposition of copper(II) sulfate; producing oxygen in emergencies; the synthesis of sildenafil; and mass spectrometry and NMR of haloalkanes.
Topics include the properties of carbon oxides; reactions of diiodine pentoxide; calculations with methanoic acid; NMR spectra of NanoPutians; estimating blood alcohol levels; and the synthesis of rimonabant.
Topics include redox reactions; reactions of pollutants that erode monuments; calculating dissolved oxygen in water; the structure of agent orange; the thermodynamics of white and grey tin; electronic transitions in hydrogen; and structures of sulfur-containing compounds.
The ability to write code accurately and fluently is a core competency for every computer scientist. However, learning to program is prohibitively difficult for many students, and this limits diversity in students that pursue computer science or gain programming skills to enhance their other careers. Novice programmers tend to make many mistakes on the path to becoming expert programmers, with the hardest-to-resolve mistakes occurring at the algorithmic level (Altadmri and Brown 2015). Students who receive help while programming do better in their courses, but it takes time to find a teacher or TA and have them look over code, and students have expressed a need for more immediate help during their work process (Carter et al. 2015). Since teachers are limited in the amount of time they can spend helping students, an easy-to-access, automated help source would be a great benefit to students.
Instead of having experts provide the knowledge used within tutors, we can assemble that knowledge through the use of student data, particularly the solutions students write when they solve open-ended problems. In the programing domain, these solutions are the code written to solve a given programming problem. Student solutions can be used to construct a solution space consisting of all of the different states that students have created while working in the past, with paths between the states showing how to get from any given state to a correct state. The idea of data-driven tutor authoring is not new, but past efforts, such as Bootstrapping Novice Data (McLaren et al. 2004) and the Hint Factory (Barnes and Stamper 2008), rely entirely on the collected data to fill out the possible paths, giving help to students based on what others before them have done. This approach is severely limited for domains with large solution spaces, as it cannot provide help to students in states that have not been seen before and it does not guarantee that every student will always be able to get a hint.
A variety of systems have been built to provide tutoring services for programming problems. Many of these use approaches traditional to ITS design, such as providing examples, simulation, or scaffolding dialogue; a review of such systems is provided by Le et al. (2013). These services accomplish many of the goals of tutoring systems, but none of them provide next-step hints for code-writing problems.
Having personalized feedback such as next-step hints is an integral and highly beneficial aspect of intelligent tutoring system design, as was originally demonstrated with the Lisp tutor, which showed that greater control over feedback options led to more efficient learning (Corbett and Anderson 2001). Other studies have demonstrated that struggling students benefit from higher levels of tutor interaction (Razzaq et al. 2007) and that bottom-out hints can be treated by students as helpful worked examples (Shih et al. 2011), Hints generated from data have been evaluated in classroom contexts with positive results; for example, the Hint Factory was shown to help students complete more problems (Stamper et al. 2011) and help students complete problems more efficiently (Eagle and Barnes 2013). Therefore, it is important for us to design techniques for generating these valuable next-step hints.
Hint-enabled tutors for code-writing are rare, as they take much time and effort to create. However, there are a few examples outside of data-driven tutors which have been made. Constraint-based tutors provide one approach, due to the ease of using test cases as constraints; one example even uses Prolog patterns to model a solution space (Le and Menzel 2007). Another example is an interactive functional programming tutor for Haskell, which uses model solutions and teacher-annotated feedback to provide tutored support for various programming states. This tutor uses a library of strategies and rewrite rules to support a variety of solution types, which is very similar to our own state abstraction technique (Gerdes et al. 2012).
Data-driven tutoring is a subfield of intelligent tutoring that bases decision-making within the tutor on old student work instead of a knowledge base built by experts or an author-mapped graph of all possible paths. The first iteration of data-driven tutoring with a focus on hint generation was started by the Hint Factory, a system for logic tutors which uses Markov decision processes to collapse student action paths into a single graph, a solution space (Barnes and Stamper 2008). This approach is dependent on pre-existing student data, but is still able to generate next-step hints for a large number of the states with a relatively small subset of the data.
Our own method of path construction extends the Hint Factory by enhancing the solution space, creating new edges for states that are disconnected instead of relying on student-generated paths (Rivers and Koedinger 2014). This makes it possible to generate hints for never-seen-before states, which the original Hint Factory could not do. This method has been adapted to work within an educational game for programming, using the visual programs that the students create to populate a solution space (Min et al. 2014). Similar work has also been done with the goal of giving students feedback on programming style, by creating chains of correct solutions in order to help students make their code more readable (Moghadam et al. 2015). A recent comparative analysis by Piech et al. (2015) tested multiple solution space generation algorithms (including our path construction and their problem solving policies) to determine how often the selected next states matched the next states chosen by expert teachers. They found that several of the approaches had a high match rate, indicating that this new approach has great potential to generate the hints that students will benefit the most from.
There have been other data-driven tutoring approaches developed in recent years that are not based on the Hint Factory approach. For example, several researchers used program synthesis as a method for automatic generation of hints. Singh et al. (2013) used error models and program sketches to find a mapping from student solutions to a reference solution. Lazar and Bratko (2014) used student-generated text edits to correct programs over time, an algorithm that could sometimes support even non-parseable programs. Perelman et al. (2014) used all common expressions that occurred in code to create a database that was then used for hint generation, instead of mining the edits themselves. These approaches have great potential for supporting new and obscure solutions, but also have the drawback of only working on solutions which are already close to correct; they all tend to fail when the code has many different errors.
c80f0f1006