Nothing triggers impostor syndrome more than going through the final year of a degree knowing (nearly) nothing beforehand. This is how I felt during my first week as a third-year engineer at Cambridge.
For this academic year, I am doing what the other 200+ students at Cambridge are doing: completing a BA degree in engineering. What is different is that I have not done the first two years of the course. Everything is new to me. In the past term, I took five modules with examinable credits, but I also audited two more related modules at Cambridge and some courses available online to catch up on prerequisite knowledge and deepen my understanding. There will be five more modules next term before I sit for the final exam, and end the year off with two projects.
Signal processing and information theory
Information engineering is at the intersection of electrical engineering, computer science, and mathematics. The information engineering modules this year tackle signals and how we process them using statistical tools. I am interested in this field because it provides a perspective of looking at machine learning algorithms as a way to encode and decode the signal and distinguish them from noise. Many well-respected machine learning researchers like Mihaela van der Schaar have backgrounds in this field.
The reason why information engineering has such wide applications is that virtually everything we are concerned with has some form of information. When we measure the information with one metric and observe how it changes with another metric, we get a signal. A signal describes how some variables change with another variable. When we study “how it changes” from the perspective of the sender, we use random process from probability theory. When we study the same how question from the perspective of the receiver, we use estimation and inference from the field of statistics. The distinction between the sender and receiver lies in the fact that only the sender has perfect information of the signal, and the job of the receiver is to infer what the signal is. Receivers may also want to ask “whether there is a signal” with detection theory and recover the information by using noise filters.
Signals contain information, and can eventually influence a system that we are interested in. To study how this interaction works, we investigate the transfer function of the system. Sometimes the signal can destabilize the system. For example, wind can be seen as a signal correlating force with space-time, and it can destroy a poorly-built bridge, which is the system that we are interested in. The field concerns with this are control theory.
Other times, we want to represent one source of information in other forms, so we encode the information in an efficient, compressed way, communicate the information through a channel that may distort our message, and try to decode them probabilistically afterwards. We also want to quantify “how much” information there is. Information theory allows us to do this.
That is pretty much what has been covered in information engineering so far. For many topics, the properties of continuous (e.g. how blood pressure varies with time) and discrete (e.g. how blood pressure differs between 9 am and 9 pm) are different, so we need to study them in parallel.
I completed three projects for information engineering. In the first project, I designed and implemented a compressor using adaptive and contextual compression. In the second project, I studied a few techniques in probability theory, including histogramming & kernel density estimate, Monte Carlo simulation, Jacobian transform, and generation Laplacian and student-t distribution from a scaled normal distribution. In the third project, I studied requirements to stabilize an air-plane and implemented an auto-pilot system.
I studied two more modules in Information Engineering. The first module is called Inference, covering the mathematics of basic machine learning techniques, including regression (linear and Bayesian regression), classification, clustering (K-means and EM algorithm), dimensionality reduction, and sequence modelling (Markov and Hidden Markov models for discrete (N-gram) and continuous (AR) data, the Kalman filter, and forward algorithm). The lectures were well-motivated and enjoyable. In the project, I developed a classification algorithm using radial basis function kernels.
Medical imaging and computer graphics
The second module is on medical imaging and computer graphics. According to a friend whose acquaintances were involved in developing the course, it was made up of three courses’ worth of materials. The first part covers the physics and engineering details of medical imaging techniques such as X-ray, CT, MRI, nuclear imaging, and ultrasound. The conceptual framework for each imaging modules include 1. what properties are detected, 2. how are such properties stored in signals, and 3. how are these signals processed. The mathematical treatment is very rigorous - one has to understand the details of concepts like the back-projection theorem and iterative reconstruction technique.
The second part covers how do 3D data get stored in the computers. The questions covered include how do we store points efficiently, how to form lines and surfaces using parametric equations, how to create isosurfaces using various algorithms like thresholding and marching cubes. Since there is always ambiguity in data capture, how do we interpolate data using equations like B-spline and algorithms like distance transforms, and lastly the engineering details of how do we directly capture 3D data using a scanner.
The last part of the course concerns how do we render the stored data effectively. Shape-wise, this concerns perspective projection, clipping, and viewing systems. Color/light-wise, we learned the Phong reflection model, rasterisation, shading (flat, Phong and Gouraud shading) and determining depth and shadow using z-buffers. We also touched on other techniques like texture mapping, ray tracing and volume rendering, and the mechanisms of graphics hardware.
In the project, I implemented the above concepts in C#.
Biological and medical engineering
Biomaterials (medical device engineering)
From drug delivery, tissue engineering, and implant to device regulation, this covers a wide range of topics in medical technology. Yet, the depth of the topics is by no means compromised, as we learned how to use mathematical models for the mechanical and chemical properties of the device.
In the project, I investigated the gelling, absorptive, and mechanical properties of different types of the hydrogel.
Molecular engineering (synthetic biology)
Initially, I thought this would be an “easy” module given I have studied biochemistry and worked as a geneticist. However, the paradigm is very different in engineering. The focus of the engineering course is on how we can utilize biological systems. Delving deep into using biological systems to build synthetic circuits or to use DNA as information storage is simply fascinating.
In the project, I designed a COVID-19 vaccine and test based on the RNA sequence of the virus.
The first few lectures covered the basics of neuroscience, from synapses to electrical conduction. The part on decision making and reinforcement learning is fascinating, as it draws parallels between the biological algorithms (e.g. dopamine) to mathematical reward functions currently used in reinforcement learning (e.g. how to estimate the total reward given the observed reward). The project uses the principle component analysis and a cost function to model visual cortex mechanisms, which again is very interesting.
An extensive and challenging module covering the mathematical modelling of many physiological and biological mechanisms, from molecular diffusion, osmosis, enzyme reaction on the micro level to electrophysiology, fluid dynamics, and ventilation on the macro level. This module involves a lot of mathematical proofs involving partial differential equations and assumptions involving biological understanding. The most interesting part of the module is to see the interplay of mechanisms. For example, molecular diffusion and fluid dynamics during gas exchange.
Mangement modules from Judge Business School
This module involves operation management, decision making, portfolio theory and forcasting. I took away many useful concepts (e.g. how variability affects queuing, how variance can be a representation for risks). Overall a very interesting module.
A reinforcement learning project where data is obtained from a physical simulator of the cart-pole system. The aim of the project is to 1. model the cart-pole dynamics using linear regression and kernel regression; 2. Control the cart pole using “controller” that can exert a horizontal force of a certain magnitude at a given time as spcified by the controller function. The task is to optimize the controller function based on data collected from 2a. the observed dynamics or 2b. the fitted model from part 1 so that the pole can stay vertical above. 3. Optimize the model performance with observed or dynamical noise. Final report.
During the first half of the project, I developed algorithms that reconstruct the raw data collected from computed tomography (CT) to images through Radon transform, Fourier transform, filtering, and calibration. In the second half the project, a reconstructed image was given and we were involved with reconstruction (under parallel beam assumption), 3D visualization, modelling, and printing of the image data for the purpose of designing lung transplant. Interim report, presentation slides and final report.
Overall, it has been a very challenging journey to juggle understanding concepts, finishing problem sets, and completing projects. However, it is invaluable to have developed the confidence in dealing with quantitative subjects, and the perspective of looking at any problem from an engineer’s eyes.
August 2022 update:
I finished the BA engineering in the top 1/3 and my machine learning project was awarded the top project of the cohort. It has been a difficult journey, but was definitely worthwhile.