To finish the calendar year - and start our second year as a group - we have two speakers lined up for this month: Tony Lewis and Ian Sheret.
This talk is about heaps, as in "a heap data structure" not as in "allocate it on the heap". Check it out!
Tony Lewis recently got around to finding out about heaps. As it turns out, they're rather natty and he wishes he'd learnt about them earlier. So Tony'd now like to spread the good word with a short talk. Don't worry if you already know what a heap is; the talk should contain something for you (and, either way, it'll be pretty short).
Questions he expects to cover:
• What's a heap for; how does it work? • How is it used in heap sort? • What tools does the C++ standard provide for heaps? • What real-world performance do C++ heaps give? • What problems can heaps help solve?
Tony Lewis has been programming computers for something close to 30 years. At university, he studied maths and then later, intelligent systems, with a couple of years at IBM in between. Since that, he's spent much of his time at University College London, working in a bioinformatics group that curates CATH, a hierarchical classification of protein structures. His real interest is getting computers to do more interesting things by getting them to evolve solutions themselves and he earned his PhD in this area. He'd love to find ongoing funding to continue that research. Whilst using C++ in all these different areas, he's slowly found himself being frustrated by it less and less and loving it more and more.
What have movie visual effects, Google street view, deep learning, and computational fluid dynamics got in common? Find out in this talk by Ian Sheret!
What have movie visual effects, Google street view, deep learning, and computational fluid dynamics got in common? They all make extensive use of C++ but more specifically they contain mathematical optimisation problems, and solving these problems quickly and accurately is key to delivering useful results. The best algorithms for solving these kinds of optimisation problems depend on calculating function gradients, i.e. differentiating functions to reveal how sensitive the outputs are to the inputs. Traditionally, this gradient information has been calculated via tedious manual manipulation of the underlying mathematical models, but is this the best we can do?
Automatic differentiation is a set techniques for calculating function gradients efficiently and accurately, with little effort from the programmer. C++ is particularly good at this, because templates allow compile-time manipulation of model code to add in the extra calculations needed to keep track of gradients. This talk will give an overview of the basic techniques, and how they're used in these real-world applications.