Studying Computer Science at Home?
Jack asks: "My fianceé would like to study computer science at home, with a view to becoming a software engineer. She is disabled, so it is hard for her to attend a course at an actual college or university. She completed high school, getting good qualifications in maths, but has no formal training in computer science, as yet. Can anyone recommend good home study courses for her? (We are in the UK)."
Check out MIT's OpenCourseWare. Many of MIT's classes materials all available freely online. If you are looking to learn computer science, it's hard to find a better curriculum.
Your fiancee can get a Comp Sci degree through the Open University, and she can mix and match courses to suit her particular interests and strengths.
My experience is with their maths courses and a Digital Communications course. The materials are very good as is their study support. It can be hard work though as you have to discipline yourself to study, you can't just go with the flow like I did at school and "scrape" good grades by virtue of having sat in the classroom and paid some attention.
My only gripe is with their Windows-centrism. For maths courses you have to use MathCAD which I have found does not run under WINE very easily or well, and a lot of their multimedia courseware in the digital comms course was Windows based (though IIRC WINE handled it quite well).
Yours Sincerely, Michael.
I know this can be really hard to start with. But once you get beyond hello world, you are going to need to find info quick. Get good with the docs while you are still learning. The first two links are available for full download to your local computer. I don't know if the SO needs a screen reader or anything like that. But it's always nice to have the docs close by.
Technology Consulting & Free Downloads
A quick search on "computer science distance education" and you can find a plethora of links, such as this one:
You can also check out Canada's Athabaska University.
EricSince leaving the UK I don't have access to the OU any more, and I sorely miss it.
They put a lot of work into making you feel part of a class - so you're not studying alone - with online conferences, a personal tutor, and real-life tutorials and meet-ups if you can get to them. They have a specific BSc (Hons) Information and Communication Technologies degree which is the match of any IT degree in the UK.
Finally, depending on her particular situation, she may not have to pay anything at all.
That's because people like me with awesome foundation knowledge and a fuzzy practical skill set wind up working at Home Depot.
My fianceé would like to study computer science at home, with a view to becoming a software engineer. She is disabled, so it is hard for her to attend a course at an actual college or university. She completed high school, getting good qualifications in maths
Sounds easy enough. Get her to start applying to universities for Distance/Open/Tele/Remote degree programs.
Admission:
* her good grades will help
* being disabled sure won't hurt her any, and might even help if quota systems are in place
Financially:
* her disability gives her more opportunities to apply for scholarships and bursaries
* ditto for being female and studying Computer Science (many private bursaries have been created to encourage females in this area)
* when she gains entrance, there will likely be someone at the institution she can talk to about applying for private or government financial grants
I have to point out that Science and Engineering are two different things -- and that you don't have to be a computer scientist or a software engineer to have a career in programming. Computer science and software engineering do have useful things to teach all programmers, but you don't have to have a degree in these fields to write code.
You're missing all of the mathematical background that makes up Computer Science. What you've proposed is Computer Programming.
Check out SCPD over at Stanford University.
to get her to pick an open source project she likes and start working on it! Just do documentation if she can't code yet, but get into it.
~~~~~ BigLig2? You mean there's another one of me?
I think when most people want to major in Computer Science they really just want Computer Programming...i know I was in this ship in college, it was either Computer Science or "Business Computing" which is like Excel macros and maybe Visual Basic. I hated math, and i have not used a lick of my Calculus in my programming job.
http://www.osac.state.or.us/oda/unaccredited.html
d .h tml
URL:http://www.osac.state.or.us/oda/unaccredite
This is the offical list by the state of Oregon, which lists acceptable schools at the top in one list, and scam schools on the larger list at the bottom. We have a scam school a couple of miles form here. Their credits are no good anywhere else.
These are available for download, but consider sending them $75US for the complete set of 17 DVDs. A great deal.
Start with some sort of learning BASIC. There's plenty of proprietary BASICs out there for just this purpose. Study the basic use of variables, loops, input, output, etc.
Move onto C, do basic memory management like linked lists, then go further into circular lists and doubly-linked. Still in C, move forward and write some functions for sorting and searching your linked lists. Start with a bubble sort and a binary search, explore further if you feel nessisary.
I get the first part, starting with Basic. Basic was my first programming language, on an IBM 360, Trash 80, and the Apple. But though I took C/C++, Fortran, and Pascal ages ago I got lost with "linked lists, then go further into circular lists and doubly-linked" unless they're about hashs just as are sorts and searchs.
Move into the land of Object Oriented programming. C++, Java,...I can't think of anything really specific to cover in OOP
How about UML and object think instead of procedure think.
Remember, the language reference is your first friend, and google is second. Only after you check those two do you ask someone for help.
Yeap, I prefer to rtfm before asking for help.
FalconShould there be a Law?
I think when most people want to major in Computer Science they really just want Computer Programming
Then they should say so. They're not at all the same thing. Sure, if you get a "CS" degree at Bumfuck State U., you're probably not going to get much real computer science, but that just means you don't really have a CS background.
Quidquid latine dictum sit, altum sonatur.
However, if CS is really, really what she wants, I suggest starting with some physics, number theory, discrete mathematics, boolean logic, and functional calculus. Why she wants to study these things outside of a formal framework and accredited degree program is beyond me, though.
Why? Because some people learn better in a nontraditionly setting.
FalconShould there be a Law?
I am currently attending UMUC and majoring in computer science, and their online courses are good.
If she can't go to college, how's she going to work?
Telecommuting. When I finally start working that's what I want to do as much as I can. Besides it didn't say she couldn't go to college it said it would be hard for her to go. There might not be a college offering a Comp Sci degree near her or if there is one it may not be as accessible as she needs.
FalconShould there be a Law?
The 4:00am question: I doubt it since she doesn't know how to program yet. But neither do I and I've written code for many many years now.
The A HA: Again I doubt it since she doesn't know how yet.
vi vs emacs: Just silly has nothing to do with programming.
typing fast: okay for one you have no idea what her disability is. she may not physically be able to type fast. no biggie - programming has very little to do with how fast you type - ask a typist to code your next project for you - see who gets done quicker her or you.
leafless tree: WTF?
clothes & closets: Again WTF? My closet is a mess. Why because I'm busy and have many many other things to do.
musical talent: Okay my music skills are bottom of the barrel, but many smart people do have good music skills, but many do not.
deep grasp: unless she studied it then nope.
collection of computers: nothing to do with being a good programmer.
newsgroups: probably not as she isn't into programming yet.
ask slashdot: many other ways to find answers to this question, like google.
In short don't be such a snob and narrow minded in your view of what a programmer is. You would be surprised if you saw the people I work with, and this ain't no back water its a major American university (We've got jocks (played football or basketball in College), Nerds (the typical - like your list), very Social (always knows everyone) and they are all very good.
Yea, from what I recall of it some 15+ years ago Kernighan and Ritchie wrote a great book. It was what we used as our textbook back then when I took C.
FalconShould there be a Law?
Okay forget all the rhetorical questions.
Is computer science her passion? yes/no
Life is too short to waste studying something that you're only mildly interested in.
Well I guess my point is that some people (like me) don't have a choice, there just was no degree in computer programming. My CS degree was a real "hard core" CS degree, but I certainly didn't need nor want the whole "Computer Science" end of it, as much as i just wanted the programming. But furthermore, say you want a job at (insert random application software company here). They almost always require a degree in Computer Science, not just Information Systems or DeVry programming or whatever. Despite the fact that you will never utilize half of the science end of the computer science while writing alot of consumer or business software. Even jobs using ASP, or working on Networks often require a Comp Sci degree, though I doubt half the people working there remember how to calculate big O or create a complicated tree or figure out the integral of a given equation.
Along a similar vein, my brother-in-law recently asked me to join him in a business venture, with a view of me providing the networking skills. The problem with this is, while I can set up a home network, my knowledge of REAL networking is lacking. I don't have a solid foundation of the basics or using linux as a server. From what I can tell, I am probably going to have to custom-build a router for reverse LSNAT. Could anyone point me in the right direction for getting started?
Free MacMini
I would suggest that she think more along the lines of what she wants to do as a software engineer. There are a wide range of possibilities, and all the schooling in the world will do little more than get one's foot in the door.
By determining what actual work she wants to do with the degree she will be in (IMHO) a much better position to identify or assemble the plan that will both meet her needs and empower her to make substantial progress in real world (outside of school).
Nothing stimulates the mind like working on a problem that is so interesting that it borders on compulsion. Working on a project that one enjoys is a truly uplifting experience, while working on projects that are uninteresting can lead to depression and worse. When she can really visualize what she wants to be working on, it will become very clear what will be necessary to enable her to pursue her dreams.
Best of luck!
"Can there be a Klein bottle that is an efficient and effective beer pitcher?"
http://mitpress.mit.edu/sicp/full-text/book/book.h tml
assert(expired(knowledge));
Well, regardless of the fact that being a good programmer will help you in your CS pursuits, if she wants to develop software I would suggest not worrying about the language as much.
/. rhetoric, bombast, and bad-mouthing about coders who can't write/construct threaded GUI apps in assembly using nothing but a one-shot CLI typescript entry (editors are for wimps), there are plenty of high-level languages that allow people to build extremely useful and powerful software tools without having to know anything about bit-shifting or loop optimizations.
/.
Despite all of the
That said, I would direct her to learn about Data Structures, Object-oriented Analysis and Design. _Planning_ what to build will make MUCH more of a difference in developing software applications than coding style/fu ever will. Horribly planned development makes projects harder to write, harder to maintain, and, worse, harder to use. If a project is designed well, you can always go back and improve sections with better techniques (aha, instead of sorting these everytime for easier searching, I'll just hash them instead)... whatever.
The science part of comp sci should (hopefully) give you skills to improve design and power by applying abstract ideas to real code but honestly what most of CS will do is show you the questions you have to ask, how to ask them, whether they can be solved, and then how to try and solve them...
if she wants to make software, tell her to study design... any dumbass can code... and mouth-off on
dave
I looked at ACCIS when they were the American Institute for Computer Science. Seemed legit, and they're still around several years later.
Looks like they've branched into certifications as well as degrees since.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
There's a big difference between just learning programming and learning computer science.
If computer science is what she's really after then here's a rather typical computer science ciriculum along with some poplular books that I can think of:
calculus
discrete math
linear algebra
numerical methods (optional)
programming intro (C/C++, Java, Scheme, Ocaml)
assembly language (x86, mips)
data structures
althorithms (rivest book)
theory of computation
digital electronics
computer architecture (patterson book)
embedded systems (optional)
theory of programming languages (python, perl, ocaml, prolog, lisp)
compiler design
operating systems (tannenbaum book)
artificial intelligence (optional)
software engineering (optional)
system administration (optional)
computer graphics (optional)
And I maybe left out a few more of the optional type of classes you can find at various universities. Anyway, just search the web for each of the above subjects and you'll find loads of information. When I was working on my degree, I found actual course websites to be particularly useful a lot of the time, as they'd have lectures, homeworks, exams, and projects, all with solutions a lot of the times.
Now software engineering is sort of a branch of computer science unto itself. So if that's the ultimate goal I'd suggest learning all of the above rather thoroughly and then moving on to specialize in software engineering.
Anyway, that's my two cents, for whatever it's worth. Wish your fiance good luck for me.
Free will is just an illusion
I might have more of a purist view of the subject since I have a mathematics background, but I think that learning a (procedural) subset of a language like Perl for the procedural side of things and something like Lisp or SmallTalk for the lambda-calculus side is more appropriate than a full blown low level language for a first language.
Though I don't recall much of it I've had perl but would also like to learn smalltalk and assembly. PHP is another language I'd like to learn.
FalconShould there be a Law?
I work on a project in C all day for the university I attend, and poke around with FreeBSD and packet filter's internals a lot, and I don't even do things like that...
;)
That's a little overcommitted to the field IMHO
Error 407 - No creative sig found
I looked at U of M online while looking for a decent online electrical engineering masters degree.. What is up with the prices? From memory, it would cost me about $800 per credit hour for grad school. So, about $24,000 for a MSEE from there. That may not be unreasonable, but it seems to me that online degrees should not cost so much, because much of the course should be automated...
A witty saying proves you are wittier than the next guy.
It's a good idea to take a home-study course, but you'll find that some of the material can tend to be on the light side (i.e. not enough technical "meat"). If I were you guys, I'd supplement my correspondence studies by picking up texts on the following subjects at Amazon (or borders, or whatever). This material amounts to a good, solid foundation in computer science and will turn her into a better programmer. Here's the list:
1. Pick a language and get a good, introductory text on it. I like Java, myself. A reasonably good book to get you started is "Learn Java in 21 Days" by SAMS.
(The rest of the choices should be chosen to mesh with your chosen language, perhaps java. These are listed in the order in which you should approach them, by the way.)
2. An algorithms text. Don't pick up any of the thin, softcover books which use the word "Algorithmics"; they're the equivalent of the "physics for poets" course liberal arts majors take in college. You want the equivalent of "Analytical Physics" here. Algorithms is the central course in computer science, the closest thing to "how to program" you'll ever see.
3. A data structures text. Yes, it's true that most modern languages provide you with data structures ready-made, but knowing their internals will help you choose the RIGHT data structure and when the day comes that you need to write one, you'll be able to.
4. A file structures text. These are getting harder to find, but they're valuable. You learn about how hard drives work, how the data is stored on them, etc, which helps you plan your file I/O better. Plus, you're usually introduced to some very good data processing algorithms.
5. An operating systems text, like the one I saw recently which describes BSD internals. Studying an existing O/S will take you leaps and bounds ahead of the people who just read theory.
6. A networking text, one that gets into TCP/IP especially. It's true you probably don't have to write sockets, but it's better to have at least tried it once or twice.
That's six books which together, add up to the spine of any computer science curriculum. With this particular set of knowledge, you'll be able to do just about anything.
Most people will suggest you study patterns also, but that's just light reading compared to this stuff, and you can do that anytime. Get through this, and patterns is a piece of cake.
Good luck!
Farewell! It's been a fine buncha years!
If you are looking for a Distance Education school, look no further than Athabasca University.
This used to be a farmer's university, which gave rural Albertans in Canada a way to plough the fields during the day and study for school at night. From the get go, it was set up to be for Distance Education.
This core principle of the university has not changed, although it now takes students from all over the world, and it has many different degrees.
The one that would be best for your fianceé would be the Bachelor of Science in Computing and Information Systems Degree. This is a four-year degree with serious courses.
Essentially, once you register for a course, Athabasca University will mail you your textbooks, your lesson plan, and the contact information for your tutor who will provide advice and grade assignments. You work at your own pace over the six months you are given to complete the course. At the end, you go to a recognized university or college near you and write your final exam there, under the supervision of someone trusted by Athabasca U.
I personally have taken two courses there (one on object oriented programming, the other on relational databases) and they have both helped me immensely at work. I imagine a student more motivated than I could do a whole degree this way.
Have her take a look at How to Design Programs -- there is a complete introductory course which uses the DrScheme programming environment.
The current UMUC tuition per semester hour is $423 for undergraduates. It's more for graduates. Tuition would be less than this for Maryland residents or active-duty military.
Actually his question list is a very good indicator of whether or not she will make an amazing software engineer. It is an indication of having an aptitude for software engineering. And vi vs. emacs is anything but silly - heck in my office using the wrong brace indent style will get you stabbed in the parking lot.
:
Other strong indicators
Does she own any dice that have more or less than six sides on them? Does she have a cloth bag full of dice, with a pull-string to keep the bag closed (Crown Royal, etc.)
Can she walk past a VCR that is blinking 12:00 without fixing it?
Does she remember your phone number but forget your name?
At 9:00PM on a Friday night is she a)watching TV, b)outside, or c) on the computer?
You say 'she isn't into programming yet.'
If you are right, then she probably doesn't have what it takes to be an amazing SE. All it takes to be 'into programming' is a $200 used computer and some pirated software (os, compiler, used books.) I was sitting in front of the family TV with a C=64 hooked up to it for DAYS at a time, skipping meals and not seeing daylight just to spend time hacking on some code I got in BYTE magazine.
If I was going to recommend something for her, however, I would suggest she get Studio.NET or WebSphere Application Developer, get her hands on as much code as she can find, and simply re-type it in line by line and run it, see what it does. Not cut-and-paste, actually print the code out and re-type it line by line. Get a good base of example code to see what does what, why the computer does what it does, and all that jazz just to get a feel for how a computer 'thinks' and how she is going to talk to the computer. Eight hours a day, seven days a week for two months - Google the commands to see what all they do, and watch the code run in the debugger. Either she will realize she hates computers, or she will go on to be a pretty amazing software engineer.
Glonoinha the MebiByte Slayer
I don't know which is worse.
That you are such a prick,
or that you are right.
There honestly isn't a future in computer science for a home schooled person.
I did, a few days ago, suggest that if someone wanted more than anything in the world to get their break into tech they could go into some company and offer to document code (ie, write the in-code line level, proc level and file level documentation describing what each routine did) - for free for the first month if necessary. It will get you in the door, and you will learn more about 'software engineering' than a person has a right to know.
People every day start a new company doing the crap that nobody else wants to do - and trust me, NOBODY wants to document their code.
Glonoinha the MebiByte Slayer
If she wanted to develop software as a passion she'd already be doing it. The obsessive programmers amongst us can't stop doing it, and while they can learn a lot from a decent CS degree they'd be programming without one.
If her intent is to do so as a career... well, most of being a professional developer is communication, meetings, analyzing requirements, more meetings, more communication. It's not a job that is well-suited to 100% telecommuting, nor to telecommuting at all for the first six months or so at an employer.
There are also many, many mediocre programmers available, so most employers have lots of people to choose from in the stack of resumes (very few good developers - but you only get good by actually working for a few years). Someone who isn't going to be able to meet with customers or show up at an office is not going to be at the top of the list. Bluntly, if her intent is to make a career out of it then there's going to be a lot of disappointment in the future, unless she has something a lot more specific planned than "being a software engineer".
So... what's the motivation for becoming a software engineer?
The details of how to learn to be a software engineer at home have been covered fairly well in other posts, but most of what you need to learn you learn by working with others in the field after you've done the academic side of things. But first she should ask whether it's the most constructive thing she could spend several years doing.
I feel for you, I had the exact opposite problem. I wanted to go into Computer Science proper, but ended up having to settle for a DeVry CIS program.
Of course, through independent study (using a lot of MIT Open Course Ware, etc) I'm giving myself a solid background in CS, and DeVry, if nothing else, does at least teach you how to get along in the business world (We actually have, for required courses, just as many business/management/accounting courses as programming courses).
Famous Last Words: "hmm...wikipedia says it's edible"
What the blimey are you talking about?
http://www.saxonpublishers.com/
IPTables enhancement Fail2Ban bans cracker-login's
pirated software? A linux distro is free and most come with a host of compilers. You can get free compilers for Windows platforms too, even Microsoft give away the .net compilers.
Basic math was pre ALgerbra? Go figure.
If she wants to be a software engineer why would Python be your advanced lang. Software engineers should be c, c++, and asembler possibly. Scripting lanauges are for information systems type apps and web apps.
I majored in Information Systems which is the intersection of business and computers. There was no excel macros. It was RDMS's, networking, Visual Basic was there(a lot of businesses have existing code in it) but there was also COBOL(glad I never got a job doing that), ASP, PASCAL, and Java for programming languages. Information Systems in a good program will teach you all the important high level programming tecniques and OOP. It is not concerned with math other than basic calc and mid level statitics. But its main focus if systems to drive business. To do this you need to learn much more powerful things then Excel Macros.
Logically, having a CS degree proves that you are capable with many elements of computing, while the absence of one does not prove that you are not.
The only problem is that if you don't have the degree, how can you prove that you are on the same level? Obviously there are avenues, such as job experience, but even then, it is lacking an non-partial authority.
Any CS-major can attest that programming can be hacked, but that making it properly is the hard part that the degree is useful for.
And my opinion is that in the past people in the computer industry had to hire people without CS degrees, because, for example, if in Alan Turing's time employers put a requirement for CS degrees then no one could fill such a job. But now that CS degrees have become common place and the people who are most likely to have the skills that the degree certifies would get a degree in the subject anyway, save the aging community in the field, but that is becoming less and less of an argument as they retire.
Hence, if, in 2005 you wish to start a 30-40 year career in the computer field, the CS route is the best way to maintain job security with the quality of competition from present and future generations (where quality demanded will grow as time continues and CS majors will beget more CS majors through market pressure).
Think about it in terms of game theory where you have a pigeon-holed based inflation. And in such a system, as the number of people available with a degree increases, so will the preception that the degree is required. Hence the "managers who will insist that only Computer Scientists are "real" programmers" segment of the population will grow until it becomes a standard.
The only thing against this prediction is that code monkeys should be cheaper. But by the time that pigeon-hole inflation comes into effect, their jobs will already be threatened, and computer scientists who have to eat will start competing for such jobs. Assuming this hasn't already happened, but I'm going to assume it has.
Am I open minded towards open source, or closed minded towards closed source?
To be fair, I run WSAD under SuSE Linux as my primary development environment so I assure you that it is entirely possible to run Linux and Pirated Software on the same machine.
... all software becomes F/OSS software.
The nice thing about running up the Jolly Roger is
Glonoinha the MebiByte Slayer
I am not physically disabled, but I am financially unable to quit work to attend college full time and the courses I need aren't available at night. So I am stuck with the online option which isn't really bad.
First thing, be aware of recruiters. I don't think you will have a problem here at this site, but if you go to some popular newsgroups for advice be ready to hear all about Mountain Air University or some other unheard of colleges. When I used to ask for advice, I would get some off the wall responses from people who were so sure that this college in Canada or that college in a cave in Arkansas was the right choice. Just beware of anyone who seems TOO willing to push a college down your throat.
Some online college rules in general. Be sure that it is accredited. I don't know what the accrediting body in the UK is that accredits all the traditional colleges, but find out. Then, any online college you attend should have that exact same accreditation. If not, don't bother. Any high school kid can throw up a website and sell degrees, but is anyone going to accept the degree? Probably not.
Secondly look at the courses the traditional colleges offer and compare those against the cirriculumn at the online colleges. If they aren't 80% the same, then your degree won't be usuable. No one wants a Computer Science degree holder who only took two computer related courses. Just like you wouldn't want a doctor who took one Anatomy class and the rest were your basic college courses. Make sure that the degree is going to actually teach you what employers are going to expect you to know. I would get a copy of the cirriculumn from a traditional university in the UK and compare it to any online college your consider.
I was just pointing out there's no need to pirate, not that it cannot be done.
Oh really?
Why?
Software engineers create embedded software and shrink wrap software. Its almost all made in C. Scripting lanuages are used for adminstrative scripts and info systems.
Category Theory is a subset of math, but do all mathematicians know it? Hell, I'll bet there are a lot that haven't even heard of it.
Furthermore, I'm a CS major, but I haven't studied all the topics within the discipline, nor do I plan on it.
Take something like architecture, or cryptography. It is possible to earn a CS PhD in these from earlier studies in Engineering and Math (respectively), and not have a clue how to program.
But, for an undergraduate degree, knowledge of programming is required. Hence, if a CS undergrad does not know how to program then it reflects poorly upon their character, but not the degree as a whole.
Am I open minded towards open source, or closed minded towards closed source?
Well, learn it for the sake of knowing what _not_ to do. PHP is Hell!
Why do you say this? What do you think is bad about it? Is it hard to learn? I ask because I don't know. The college I was attending started offering it a couple of years ago, that was when I thought of taking it.
FalconShould there be a Law?
notext-yes,offtopic.sorry.
If opportunity came disguised as temptation, one knock would be enough.
3^2 * 67^1 * 977^1
Software engineers use the best tool for the job, and if that means using a "lowly scripting language" like Python, then so be it.
U of MD (even the online courses) and UMUC are not the same school, though they're part of the same university system, their campuses are right next door to one another, and as a UMUC student myself I sometimes take classes on the UMD campus in College Park.
UMD offers EE degrees, UMUC does not.
-BK
Chemical Blog
Read my other post on the subject and you will see that I made an exception for guys like you (and like myself, although I did go and get my BS/CS under the Dept of Engineering, and am working on my MS/CS) - the crew once referred to as hackers.
.COM boom.) Those days are over - currently the companies are wayyy too picky and I don't see someone with no formal education and no practical experience getting hired into a tech position. I'm not disagreeing with you, circa 1999 - but that was then, this is now.
You can go a long way in IT without learning much of what they teach in college, if some company gives you a chance, like the opportunity you got (getting in during the
Sounds like you got lucky, and it sounds like you are good. If I had to pick one, though, I would rather be lucky than good.
Glonoinha the MebiByte Slayer
Software engineering is very different from computer science. Software engineers don't do engineering, while computer scientists don't do science. Very different animals indeed.
-1 Uncomfortable Truth
Higher education is not about learning a skill [or at least it shouldn't be] but about expanding and enhancing your ability to think. If all you got out of college was how to write C, you either went to a poor school or went in with entirely the wrong attitude.