Base education?

Posted 23 Jan 2002 at 23:47 UTC by Malx Share This

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?


My degree's in Physics, posted 24 Jan 2002 at 08:22 UTC by goingware » (Master)

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 CalTech.

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 program better.

Mathematics, posted 24 Jan 2002 at 10:10 UTC by ali » (Apprentice)

I'm studying mathematics at a german university, and am listening to computer science lessons as a subsidiary subject.

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:

  1. 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 planning)

  2. 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 » (Journeyer)

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 ago. I 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 » (Journeyer)

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 » (Apprentice)

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 » (Journeyer)

(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 graphic-design end (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 little HCI.)

Law and Linguistics, posted 24 Jan 2002 at 19:37 UTC by mk » (Journeyer)

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.

It's Computer Science not Software Engineering, posted 24 Jan 2002 at 20:07 UTC by bbense » (Journeyer)

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 » (Journeyer)

I dropped out of highschool. Eventually, I got a GED from the State of Florida when I was 17 (8 years ago now). The only reason I took the GED test was because the state 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 knowledge in any subject other than mathematics. I've spent a massive amount of time on my own with Math textbooks. However, much of the need for that investment was the result of my desire to work with cryptography rather than a need related to general programming. So, if you just want to program 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 worked 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 » (Journeyer)

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 of this skill.

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.

High School Education and Common Sense, posted 25 Jan 2002 at 11:47 UTC by CryoBob » (Journeyer)

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 » (Master)

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, somewhat unusual.

So, my degree is actually in the subject I spent less time at University studying. :-)

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 in class.

Gerv

a little bit of everything?, posted 25 Jan 2002 at 16:18 UTC by bstpierre » (Journeyer)

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.

The habit of learning, posted 25 Jan 2002 at 16:39 UTC by technik » (Journeyer)

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).

Re: It's Computer Science not Software Engineering, posted 25 Jan 2002 at 20:13 UTC by ahosey » (Journeyer)

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.

Computer Science + a voracious apatite for knowledge, posted 25 Jan 2002 at 20:21 UTC by klevin » (Journeyer)

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 » (Journeyer)

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.

Neither CS or SE isn't programming, posted 31 Jan 2002 at 21:42 UTC by exa » (Master)

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.

Thanks,

BA/BS Anthropology & Comp Sci, posted 2 Feb 2002 at 11:58 UTC by nerdgir1 » (Journeyer)

Hrrmm well I have a dual degree from a liberal arts college: http:// www.evergreen.edu

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... -_^

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page