Why I'm Learning Operating Systems
I’m a biomedical engineer who researches reversible nerve conduction block at the Nerve Block Factory research lab at MetroHealth. Somewhere along the way, I realized something. I’m more interested in computing systems, not only as research tools for advancing biomedical applications but as compelling subjects worthy of study in their own right.
The Turning Point
Three years ago when I was in grad school, I took an embedded systems course to get a high-level understanding of the PIC12 microcontroller. This simple, yet capable chip was the brains of a wireless bladder pressure monitor, an innovative device that was built in the lab where I worked as a graduate research assistant. Instead, I found myself fascinated by how computers worked at the lower levels of the abstraction ladder. Frankly, I was envious of being a “janitor of science”, an expression Richard Hamming used to describe himself at Los Alamos, where he maintained the research apparatus but didn’t drive the fundamental discoveries of the Manhattan Project. Similarly, I was trusted to do computational tasks to keep the research going, like writing MATLAB and LabVIEW programs for data acquisition and analysis but I wanted to contribute to the fundamental questions about computing systems themselves.
I began to study computers: dual-booted Linux, worked through parts of SICP and TLPI and studied discrete math and algorithms. I built up solid fundamentals but never followed through on documenting my learning or completing nontrivial projects. Time to change that.
What Next?
I was recently accepted into Georgia Tech’s online master of science in computer science (OMSCS) program. I will continue working full-time while doing OMSCS part-time. Next Spring, I will take GIOS and have already started going through the assigned textbook OSTEP, the canonical Operating Systems textbook suggested by teachyourselfcs.com to those who are self-studying computer science.
Why Operating Systems?
Operating systems sit at the intersection of hardware and application software, exactly where my work until now in embedded systems and biomedical instrumentation has been pointing me. Understanding the three OS fundamentals: virtualization, concurrency & persistence will make me a better systems programmer and give me the foundations that I need for the computing systems track at Georgia Tech.
About This Blog
This is a learning log, not a tutorial site. I’m documenting my journey learning about computing systems, sharing what I’m building and occasionally struggling with. If you’re learning similar topics, maybe we can learn together.
This Week
I’m reading OSTEP chapters 1-4 (Introduction through CPU scheduling). I’ll share notes on key concepts that resonate with me.
Let’s see where this journey leads.
ME