I'm Charlie. I'm currently at the Engineering Department at the University of Cambridge, where I'm writing up my PhD thesis. My current area of research is neuroscience. I work with brain-machine interfaces and on a topic called representational drift. These are both means of exploring how populations of neurons learn to model the outside world.
I spent over five years working in tech, where I've held job titles like Tech Lead, Senior Software Engineer, and Senior Researcher. I've been involved in projects ranging from distributed simulation architecture design to touchscreen signal-processing algorithms. I'm a generalist, and I will gladly go wherever there are interesting problems to solve.
I believe strongly in the value of teaching (and its corollary, learning!) in all its forms: from lecturing undergraduates to reviewing code. I think that play is an integral part of how we learn, and so games are a topic very dear to my heart.
Publications
- C. Micou & T. O'Leary (2023) Representational drift as a window into neural and behavioural plasticity. Current Opinion in Neurobiology
- C. Micou (2022) Dynamic dictionary-based network compression. US Patent 11,405,054
- M.J.R. Lewis, C. Micou, M. Witkowski (2020) Scalable simulation system with scalable data propagation. US Patent 10,643,010
- C. Micou, M.J.R. Lewis, M. Witkowski (2019) Distributable and customizable load-balancing of data-associated computation via partitions and virtual processes. US Patent 10,380,282
- S. Gao, D. McLean, J. Lai, C. Micou, A. Nathan (2016) Reduction of noise spikes in touch screen systems by low pass spatial filtering. Journal of Display Technology
- S. Gao, J. Lai, C. Micou, A. Nathan (2016) Reduction of common mode noise and global multivalued offset in touch screen systems by correlated double sampling. Journal of Display Technology
Career
2021-2025 PhD at Cambridge
I'm currently a member of Tim O'Leary's lab at the Department of Engineering at the University of Cambridge, where I'm funded by an EPSRC/UKRI grant.
There's a phenomenon we call representational drift. This describes changes in the neural representation of familiar environments, tasks, and concepts that takes place even in the absence of learning. These changed representations are not better or worse than previous ones, merely different. I believe that these are tantalising clues that can help us examine learning algorithms implemented in animal brains. I'm currently working on how the statistics of drift constrain the exchange of information between populations of neurons.
Populations of neurons in different regions of the brain represent the world at different levels of abstraction. For example, while neurons in the visual cortex respond to patterns of light on the retina, neurons in the hippocampus respond to highly abstract concepts such as location within an environment. I'm working, in close collaboration with Julija Krupic's lab at the Department of Physiology, Development, and Neuroscience, on a closed-loop brain machine interface that allows hippocampal activity in mice to directly control movement in a virtual reality environment. This results in a variety of interesting phenomena, but you'll have to wait for the paper(s) to hear more!
2015-2021 Improbable
I spent the majority of my time at Improbable working on the SpatialOS Runtime: the company's core product offering at the time. This was a distributed application for managing the simulation of both large game worlds and digital twins. We did some pretty cool work on network protocols, load-balancing, and making distributed simulation tractable for game developers. Development was primarily in Java, occasionally featuring Scala, C++, and Go.
- 2019-2021: Senior Researcher / Senior Software Engineer
- 2018-2019: Tech Lead
- 2016-2019: Software Engineer
- 2015: Software Engineer (Intern)
2013 Eseye Ltd.
I interned at Eseye Ltd. as an embedded software and electronics engineer. I worked on novel remote monitoring devices and efficient use of bandwidth and power consumption when they communicate over GPRS.
2012-2016 MEng at Cambridge
My undergraduate degree was in engineering: two years of general engineering, covering topics from aerodynamics to electronics, and two years of specialised modules. I focused largely on signal processing, statistical pattern recognition, electronics, and control theory. My Master's thesis (under the supervision of Arokia Nathan) addressed power efficiency and force detection in capacitive touch screens. I was funded through a full scholarship awarded by the Dr. Tech. Marcus Wallenberg Foundation.
Teaching
Postgrad Workshops
I wrote and teach a course on software engineering literacy for academics, including six lectures and practical exercises (topics include version control, build systems and portability, cross-language interop, profiling and performance optimisation, and code style).
Undergraduate Labs
I wrote and instruct a lab for 3rd-year undegraduate students studying control theory. This lab bridges the gap between continuous and discrete control, while also introducing ideas about modelling human agents within control systems. Over a hundred students take this lab every year, and some of them even enjoy it!
Undergraduate Tutorials
I tutor 1st and 2nd-year engineering undergraduates on a variety of course topics (Vector Calculus, Electromagnetism, Fields & Waves). I also teach a small practical module of my own devising: this is a course to encourage 1st year students, especially those without the advantages of access to workshops in their secondary education, to feel welcome in and familiar with workshop environments.
Undergraduate Lecturing
I lecture representational drift within the context of a broader module on brain-machine interface design for MEng-level students.
Master's Projects
I am currently supervising two MEng research projects. These use full-body motion capture to control virtual tasks. This system gives us high resolution data on behaviour during tasks and, as the purpose of neural activity is to eventually drive behaviour, insight into the mechanisms of learning to perform new tasks.