Posted 23 Jan 2002 at 23:47 UTC by Malx
Do you remember CERN programmers? Their great ideas and software?
AFAIK - they where physicist first of.
So I am really curious in base education of Advogato's geeks. Are you all graduates of Computer Science departments?
Even if you are - have you studied other sciences?
Whould you think that it is essential for good programmer to know math of physics also?
What else knowledge helping you?
I did my first two years at CalTech studying first astronomy and
then physics. I transferred to UC Santa
Cruz where I got my B.A. in Physics.
My programming is mostly self-taught, although a good foundation was the
course on data structures (CS 10) that was taught by Carver Mead at
After being in the industry a few years, I decided that even to work as
a programmer, I had done better to study physics than computer science.
I think it gives one a more practical problem-solving ability, and a
deep understanding of how things work.
My experience of the software that physicists write for their own use,
though, it is that it is horrifyingly badly architected and implemented.
I think a lot of physicists would find great relief if they learned to
Mathematics, posted 24 Jan 2002 at 10:10 UTC by ali »
I'm studying mathematics at a german
university, and am listening to computer science lessons as a
All in all, I would say that any programmer needs at least one
additional field of (real and deep) knowledge, depending on his
favourite type of programming. Two examples coming to my mind:
- Low-level stuff
IMHO knowledge of mathematics is absolutely required for any
programmer who wants/needs/has to program computing stuff (Like,
Advogato's trust metric versus the CGIs)
Having learned similar subjects teached in both mathematical and
CS lessons, I observed this:
- Algorithms teached in CS are teached oversimplified and often
simply wrong. The (mental) tools required to analyze problems, to
find suitable algorithms, and to code efficient implementations
isn't teached or trained at all. (Which says something about the
average student. Of course there are a lot of brillant people who
can think for themselves) This was to some extend discussed in another advogato thread
- Mathematical concepts are usually omitted, although having great
importance (some buzzwords: cryptography, jpeg, mp3, network
- User interface stuff
I think (and this is backed by personal observance, too) that any
design student ("graphic design", not "code design") beats most cs
people in this field. A deep understanding of how to arrange text,
graphic, light and colors to make a novice viewer immediatly get the
point gives you huge advantages everywhere it comes to user
interaction or information presentation.
I think (now I'll be offending some readers - sorry for that in
advance) that "programming" is no sufficient ability. It's a basic
knowledge (like "standing up in the morning") required to do a job.
It is there to support someone to squeeze his primary knowledge into
a computer. But this opinion is of course based on my viewpoint of a
computer being a problem solver, which is not everyone's.
Biochemistry, posted 24 Jan 2002 at 17:02 UTC by welisc »
My first degree was in Biochemistry and my PhD is in Structural
Bioinformatics; as a programmer I'm almost entirely self-taught apart
from a brief introduction to TrueBasic running on DOS many years
studied calculus and statistics in the first two years of
my undergraduate degree and it was useful grounding for
studying algorithms and data structures.
Music Composition, posted 24 Jan 2002 at 17:03 UTC by aeden »
I have a degree in Music Composition from the University of Miami in
Florida. All of my programming skills are self-taught or from real-
life experience. Whenever I mention this to others they don't seem
that suprised as there seems to be a strong link between music and
computers (and math).
Science, posted 24 Jan 2002 at 17:43 UTC by Darkman »
My background is all in the hard Science. Joint undergrad degree in
Chemistry / Physics, with a Masters in Materials science, and doing a
PhD in Solid state computation.
I've never formally studied CS. I started in BASIC on a Z80 machine,
dabbled in machine code, and migrated through a few languages, till now
when I work mostly in Fortran90, and C.
Most of what I've seen in CompSci is how to do various algebraic
processed. Within the hard sciencies, its much more about numerical
analysis and such.
Geek of CS, posted 24 Jan 2002 at 19:25 UTC by i0lanthe »
(For some reason this thread is reminding me of Dr. Science...)
I have a bachelor's in computer science. I think the world would be a
more interesting place if everyone had a background in math and physics,
including programmers. However I can't claim to have ever actually
understood E&M, so there you have it.
I also second the nomination of
knowledge of "user interface stuff", but the intro to HCI class I took
tackled it from the cog-sci/user-study end rather than from the
(and boy, it was weird being in a lecture hall with a 50/50 gender
ratio. I guess that might be another argument in favor of studying a
Law and Linguistics, posted 24 Jan 2002 at 19:37 UTC by mk »
I can programme fine, but I don't know any computer science. I'm cognisant of
the general issues, but I tend to do userland Unix systems programming where the
data structures and algorithms don't get too complex. If I ever need to know the
efficient way to do something, I'll just ask a CompSci or dig it out of a book.
This is one of my favorite rants. I view a CS degree in the same
way a working engineer might view a physics degree. In theory some
one with a BS in physics should be able to design a bridge, in
practice they don't know enough of the details and practical gotcha's
to build a safe bridge.
Computer science for the most part teachs the "science of computing".
This is a very valuable field, but as far as most practical programming
is concerned it's way overkill. If you needed all that theory to
get work done, then why do many very good Software Engineers come
from totally non-CS backgrounds?
I really think that Software Engineering should become it's own
branch of knowledge. Much like the way Engineering and Physics split
in the 1800's.
When I interview job canidates, I'm much more concerned with the
bridges they've built, rather than the education they got. I've
also been to interviews where it's clear they want to know what
my CS theory background is and they could care less about the
bridges I've built. In a shop with CS grads, they think having
a CS degree is important. In a shop run by the accidently trained,
they are much more concerned with actual experience. I haven't
seen many groups where the mix is equal...
GED, posted 24 Jan 2002 at 22:52 UTC by vab »
I dropped out of highschool. Eventually, I got a GED from the State
when I was 17
(8 years ago now). The only reason I took the GED test was because the
wouldn't let me get a driver's license with out a High School Diploma.
I personally don't think it's important for a programmer to have base
in any subject other than mathematics. I've spent a massive amount of
my own with Math textbooks. However, much of the need for that
investment was the
of my desire to work with cryptography rather than a need related to
general programming. So, if you just want to
computers, it's probably not a bad idea to drop out of school and just spend
the time studying on your own, you'll save a good deal of money. Most
employers will be happy to hire you if you put together a portfolio of free
software or other programs you've written. The only place that I ever
where I was given a hard time for not having a college education and my pay
suffered for it was at a University, specifically the University of Florida.
I've given many people the advice to drop out of High School/College. A few
have followed it and of the ones I've kept in touch with, none have
encountered a hard time because of it.
abstraction, posted 24 Jan 2002 at 23:17 UTC by sergent »
You need good skills for solving problems in a structured manner. These
turn into instincts over time, but I think you can learn them.
Good engineering, math, and science courses tend to require some variant
You need to tune your brain to be able to think at multiple levels of
abstraction--I think a common analogy is that you need to be able to see
both the forest and the trees at the same time.
Working on problems that encourage this skill make
you a better programmer, even if they aren't programming problems.
Mathematicians and physicists and musicians and many other people have
to be good at this too.
I think the other part of it is
having good judgment--knowing what to do, not just how to do it. People
who are good at this always seem to come out looking smartest.
I have not got a degree in anything, but I did not drop out of high school. I have been programming since I was about 8 and my Mom bought me an Atari and a book of games written in basic that I had to enter.
That was how I got started, I then moved on to learn QBasic, and now Java. I must agree with the comment about graphic design helping with interface design. One of my majors in high school was art(along with maths and science) and this has helped me no end when designing simple, effective UI's.
The only thing that I can say would have helped me more, is learning about basic data structures at an earlier stage, plus gaining a better understanding of how computers(well x86) ones actually process all the ones and zeroes we throw at them. I think the biggest help for me was learning and OO programming language since this seems to fit the best with how I approach problems i.e. one step at a time.
On the degree front it would have been useful to have one, since in Cambridge(England) they are very wary of hiring people without degrees, even if you have proven you can do the job. It may be a class thing rather than anything else, but it does help people take you a bit more seriously.
Computation, posted 25 Jan 2002 at 12:08 UTC by gerv »
I have a degree in Computation
from the University of Oxford, UK.
What is somewhat unusual is that I started out at Oxford doing
Chemistry, and completed 2 years, 1 week and 3 days of that four-year
degree before (after a bit of a crisis) switching into the second year
of the three-year Computation degree. This is, to say the least,
So, my degree is actually in the subject I spent less time at University
One of the wonderful things, for me, about starting in the second year
was that I managed to avoid the first year, which is shared with the
Maths and Computation degree and so has a very high mathematics content.
I hate mathematics. They have since restructured the course; I believe
this is less of a problem now. The course has also been renamed to the
more-understandable "Computer Science", to reflect its more practical
bent. I firmly believe that there are large
swathes of mathematical knowledge that you just don't need to be a good
at what we do.
I now work as a software
engineer, where I find that bits of the degree do come in useful now
and again. For example, I made our product start about eight times
faster by replacing a terrible hashing algorithm (average 600 hash
collisions per read for 2000 objects in a 10000-slot table!) with a good
one. But I wouldn't have known it was terrible if I hadn't studied them
I have BS in Computer Science (my primary course of study), but I also
got a BS in Business Administration. And after a year of German, a
semester of French, and a linguistics course, I could have gotten a
minor in linguistics with one or two more courses. Of course, if I had
taken one or two more accounting courses as part of my business degree,
I could have had a minor in accounting. Same with economics. I prefer
to know a little bit about all kinds of stuff. I'm thinking about going
back to school for a BS in EE; this would be helpful in my current
career writing firmware.
If it weren't so hard for so many people to do well, I'd agree with the
previous comment about programming being like standing up in the
morning -- it's just something you do. I agree with the spirit of the
comment, but I guess not the degree; it really is something you have to
learn to be able to do it well. Although I guess standing up in the
morning is the same way.
Basically the argument is that domain knowledge is more
important than CS theory (if I understand you properly). And that is
100% correct. I don't so much care if you know how to prove a problem
is np complete, but I'd prefer that you know something about data
networking. Either one takes a while to learn, but the latter is much
more likely to make you productive on my project.
Establishing the habit of learning is more important than the material.
My personal (diary?) example: I have a M.A. in History. Am entirely self-taught in programming but started around age 8 when introduced to the Apple ][ with BASIC, then Forth and Assembly. Later C, Pascal and Logo (as a weak substitute for LISP). As an adult learned Perl, Python, C++ and Java. Around this time recognized that there were archetypical programming concepts and began reading textbooks on Comp. Sci. Tinkered with Smalltalk and Scheme. Constantly reading, especially other people's code. Realized two years ago that I have fundamental gaps in my knowledge and am still filling in from textsbooks on such things as Number Theory and Combinatorics (not anywhere near done filling this in).
bbense: Amen. I believe the same thing. I've even suggested to some
people that the industry should be reformed so that people who are not
certified software engineers should not be allowed to write
software that is sold for profit. This is not a popular opinion. I think
it's the innate hacker distaste for regulation.
Computer science is an important thing - the people in the ivory towers
advance the state of the art. Software engineers are equally important
as they apply some subset of computer science (and some creative
hackery!) to do more practical work.
I majored in Computer Science, by necessity. I figured that, of all my
interests, it was the most likely to allow me to make a decent wage. I
have a minor in Mathematics (not a difficult thing when there's a 75%
overlap between the minor's requirements and the math requirements of
the C.S. degree), took just about every undergrad physics & astronomy
class available, and was one class away from a minor in creative writing
when I decided I was going to go out of my skull if I spent one more
semester than absolutely necessary in school. At that point I stopped
taking everything but the C.S. courses and graduated a year later.
Oh, yah, I studied classical Latin (as opposed to Medival/Church Latin)
for three years of those years, but have forgotten most of it.
Total time in college: five years.
Before college, I was on track to a private "Fine Arts" school, but I
burnt out on all of the pretentiousness surrounding that track (and the
expense didn't help).
linguistics, posted 31 Jan 2002 at 21:00 UTC by ebizo »
I have a degree in linguistics (BA), but that's not good
enough for recruiters anymore. I am unemployed. Most of
the recruiters I deal with can't spell Perl or SQL on a
consistently correct basis. And they think linguists are
only translators or interpreters, not people who analyze
the structures and patterns of languages, etc.
And lately they more often want PhDs in computer science.
I learnt programming when I was 10.
Programming has an overlap with scientific thinking and problem solving
but it isn't exactly the same thing.
Computer science isn't about learning programming as some people have suggested.
But neither is software engineering... :)
Programming is an endeavor on its own. A very delicate technical skill,
which can be excelled at by only the most intimate practicioners.
Therefore it is very stupid to disregard either of Computer Science,
Software Engineering or Programming. They all have great value.
By the way, to the mathematician: a computer isn't a "problem solver".
That's one of the things you learn when you study computer science along
with several non-trivial and highly mathematical theories. I wonder
if you've ever read a computer science paper in a difficult field such as
Theory of Computing, Programming Languages, Algorithms or Artificial Intelligence.
Take your time, you will see that it is far from blind application of a
few known facts.
Hrrmm well I have a dual degree from a liberal arts college: http://
Eventually I want to pursue a PhD in Human Interface Design...
Some people wonder how the two mix.. it's funny because in
Anthropology you want to basically develop consistent and
repeatable formulas for why people do what they do. And why
people say they do something is never *really* why they do it... just
like in Sofware Engineering, what a client says they need is never
what they *really* need...
When I was younger I wanted to be an artist and I had a lot of
formal art training. I guess for me, software is an artistic
expression. I'm really in OO, it reminds me of Plato. I also like
UML... maybe I just like to draw all the circles and lines... -_^