It seems that whenever you tell someone you're doing a compsci degree that they instantly:
a) Glaze over
b) Get scared (fair enough, there are some deeply, deeply weird Computer Scientists)
c) Decide that you do 'computers'
If I had a penny for every time someone asked me 'how are your computers going?', or states 'this is Dan, he does computers' or, 'Dan does IT', I'd be a very rich man.
The full rant is put better by someone from another site I visit:
So, why don't people get it, and what can be done about prior to the interview stage where you actually get a chance to explain that you've essentially been studying an area of maths, not cocking about playing games for three years?b3ta wrote: "To say I work in IT is like saying an architect is good at colouring in. To say I 'work with computers' is like saying an accountant 'works with a calculator'. Both technically correct but missing the point very badly. I'm a software engineer. I know the syntax and semantics of all modern programming languages including every subtlety to do with object orientation and reflection, I understand the difference between memory allocated on the stack and memory allocated on the heap and how to do garbage collection on the latter, I can pass by value, pass by reference and do pointer arithmetic, I know dozens of different abstract data types (how they're used, how they're implemented, when they're appropriate for use, what their time and memory complexities are for all associated operations). I appreciate the complexity Apple had porting applications from the PowerPC chip to the x86 chip owing to the pure little-endianess of the latter. I understand what it means for a problem to be called NP-complete and can prove it too I know how to calculate the big-O complexity of an algorithm, I know how to write the algorithm using recursion, how to test the bloody thing when I'm done. I know about critical sections, semaphores, concurrent processes and avoiding deadlocks in distributed environments. I know about system architectures, how to write a .Net DLL that implements a COM interface, I know about OS paging, what the kernel does, whether my program is likely to be IO, network, database or processor bound. Perhaps you'd like me to describe the ISO OSI 7-layer model to you illustrating the interfaces built on top of each other and the protocols these networking abstractions use to communicate with each other. I can even get back to philosophical fundamentals with logical truth-tables and De-Morgan's law, state whether your language is Turing complete, assert that we'll never know if your program will end owing to the Halting problem. It's not just transistors either, I understand how neural networks work as logic gates using their weighted pathways to train themselves, how it's possible to store memories in a Hopfield net. I appreciate the strengths and weaknesses of various programming paradigms: imperative, functional, logical. All this and I can write your sodding program via the waterfall, spiral or evolutionary software design methodology if you'd like.
You wouldn't attempt to draw up a will after reading a book on law for 5 minutes, you wouldn't try and build a house after watching a DVD on structural engineering and you wouldn't offer to do an appendectomy on your best mate because you saw one done on ER. I have spent 8 years at university learning my craft, give me the respect I deserve! I... am... a software engineer."