About Abstraction

04/04/2017 19:12

I recently started working as a Statistical Programmer at a company specializing in the statistical analysis of clinical trial data and epidemiological data. As a consequence, I work with other people's code, validating it, trying to understand what it's doing with the data. It seems a good idea, when working with code, to strip away all of the details that occlude the main point of the data operations. Essentially, code represents functions that take as input data points and produce other data points as output. I'm working with SAS, which frustrates me, because I'm an R person. I've started making my own notation, consisting of logical and transformation symbols to condense a piece of code into a concise notation, similar to a mathematical expression. The question then becomes what these transformations do on particular data points, e.g. do they output the correct thing? It would be interesting to work on proofs to rigorously show that a program does what it's supposed to. Currently, we do double programming to validate the programs, but a mathematical notation and a proof of correctness would be stronger. The question really becomes how to make effective abstractions, to strip away the irrelevant diversity in the code and get to the core of the problem. The question is, how can we condense out simplicity out of complexity?

Computational work is about assembling suitable computational primitives in ever more elaborate systems for different goals. Make sure that you understand the primitives and how they interact in a system. 

 

***I showed this post to a friend and he said that I should check out the UCL in Logic, Semantics and Verification of Programs https://www.ucl.ac.uk/prospective-students/graduate/taught/degrees/logic-semantics-verification-programs-msc and https://pplv.cs.ucl.ac.uk/welcome/ UCL is too expensive for my pocket, but the program web page gives an opportunity to hack your education by composing a self-taught course consisting of cheap online courses and books:-) It is interesting to reverse-engineer expensive MSc programs. Hey, all I need for studying is my brain and a computer:-)