TITLE: Another Thesis Defense
AUTHOR: Eugene Wallingford
DATE: May 03, 2008 10:10 PM
DESC:
-----
BODY:
I
may not be a web guy,
but some of my students are -- and very good ones. Back
in December, I wrote about one of my students,
Sergei Golitsinski,
defending an MA thesis in Communications, which
used computing to elucidate a problem
in that discipline. For that study, he wrote tools that
allowed him to trace the threads of influence in a prominent
blog-driven controversy.
Sergei finally defended his MS thesis in computer science
yesterday. Its title -- "Specification and Automatic Code
Generation of the Data Layer for Data-Intensive Web-Based
Applications" -- sounds like the usual thesis title, but as
is often the case the idea behind it is really quite accessible.
This thesis shows how you can use knowledge about your web
application to generate much of the code you need for your
site.
I like this work for several reasons. First, it was all
about finding patterns in real applications
and using them to inform software development. Second, it
focused on how to use domain knowledge to
get leverage from the patterns. Third, it used standard
language-processing ideas to create a
modeling language and then use models written in it to
generate code. This thesis demonstrates how several areas
of computer science -- database, information storage and
retrieval, and programming languages among them -- can work
together to help us write programs to do work for us. I
also like it because Sergei applied his ideas to his own
professional work and took a critical look at what the
outcome means for his own practice.
Listening to the defense, I had two favorite phrases. The
first was recursive weakness. He used this term
in reference to weak entities in a database that are themselves
parents to weak entities. But it brought to mind so many
images for the functional programmer in me. (I'm almost
certainly recursively weak myself, but where is the base
case?) The second arose arose while discussing alternative
approaches to a particular problem. Referring to one, he
said trivial approach; non-trivial implementation.
It occurred to me that so many ideas fall into this category,
and part of understanding your domain well is recognizing
them. Sometimes we need to avoid their black holes; other
times, we need their challenges. Another big part of
becoming a master is knowing which path to choose once
you have recognized them.
Sergei is a master, and soon he will have a CS degree that
says so. But like all masters, he has much to learn. When
I wrote about his previous defense, his plan was up in the
air but pointing toward applying CS in the world of
communications. Since then, he has accepted admission to a
Ph.D. program in communications at the University of Maryland,
where he hopes to be in the vanguard of a new discipline he
calls computational communications. I look forward to
watching his progress.
You can read his
CS thesis on-line,
and all of the code used in his study will be, too, soon.
-----