Computer Studies w/o Excessive Coding? 255
Peterus7 asks: "I'm a student at the University of Washington, and I was planning on majoring in Computer Science or Informatics until I took Computer science, and I'm realizing that it's simply beyond me. I grew up with computers, and naturally I want to study a field that involves a lot of interaction between people and technology (mainly computers), but the Intro to Java class I'm taking now is driving me over the edge. Any suggestions for a technologically intensive field that doesn't require ungodly amounts of coding, or perhaps any general methods for surviving computer science courses for new students?"
ECE (Score:3, Insightful)
You could always try the EE route. Usually you need a few courses in intro. programming and maybe have to write some matlab code someday.
Computer Science (Score:5, Insightful)
Sorry... (Score:5, Insightful)
I think it's extremely important to at least understand the basics of "how is software built". And learning a programming language is actually a lot easier than learning a real language, and you can learn both if just sit down and practice, gawddamnit !
"Opportunity is missed by most people because it is dressed in overalls and looks like work." - Thomas Edison
Computers and ? (Score:5, Insightful)
Really. You need to diversify your investments, skill and monitary investments both. Diversification is the key. Find a niche market you can fill and fill it well. Computers and Video production... things like that. What are your other intrests? How do computers fail to help people in these areas? How can you improve the use of computers in these other fields? Do you know anyone who is in a special industry? Have you volunteered to do anything in the community? How can computers help them?
Re:ECE (Score:5, Insightful)
Yes. If you go for ECE you'll be writing MATLAB code, but if the programming in CS is too tough for this guy, then EE definitely will. There are probably another three calculus classes to take before he can do ECE, and if programming Java is too tough for him, Calculus definitely will be. Nevertheless, the CE route (which still requires all that Calculus and probably still more coding than he seems willing to do) is more like what he wants, it seems. CE will be more about digital design of computers, but he needs classes like introductory java to be able to follow the examples in algorithms and data structures classes.
Re:Sorry... (Score:5, Insightful)
No, he shouldn't be "thankful". Quite to the contrary. LISP is an interactive, dynamically typed language, which makes it great for introductory CS teaching. So are Python, Basic, Logo, Ruby, and many others.
Java is a statically typed, compiled language with enormous libraries and messy, complicated development environments. That makes it a poor choice for an introductory course.
I think it's extremely important to at least understand the basics of "how is software built". And learning a programming language is actually a lot easier than learning a real language, and you can learn both if just sit down and practice, gawddamnit !
For someone who already knows programming, that's true. But these students are supposed to learn programming.
Your argument actually supports what I'm saying: you should teach students programming in a language that is well-suited to the task of teaching and that doesn't burden beginners with irrelevant and complex features. You should also teach in a language that doesn't narrow the view students get of CS; sadly, Java is a one paradigm language, and a very limited paradigm at that. Once they have learned programming in a teaching language, as you say yourself, learning another programming language is easy.
Re:Oh dear. (Score:3, Insightful)
My advice: stop reading slashdot (Score:4, Insightful)
If it turns out you can't learn to code, stay away.
You are simply not a 'nerd'.
Been there... (Score:5, Insightful)
Find buddies.
I'm not kidding. People to study with equals much faster learning. When I started uni (too long ago) I was doing a Comp Sci/Electronic Engineering double, and the workload was insane. Pretty quickly, everyone worked out pretty quickly that the only way to cope with the insane workloads was to work together.
I don't mean cheating either. It's just that it's like having a tutor, all the time. That should be your first port of call, and if you still can't do it, (not having at go at you) you should really look at a change of careers.
Hope that helped.
Re:Careers dont all requre coding (Score:4, Insightful)
Saying it is "beyond me" tells me that you have given up getting better at it. I suggest you find something you are good at. Maybe information systems will provide you with satisfaction.
Good Luck.
choose another major (Score:5, Insightful)
It's going to sound a little harsh, but if you want to futz with computers, go work for Best Buy or CompUSA in the repair department, or start your own PC repair shop. If you're looking for a more analytical field and enjoy both coding and higher-level math, CS is more your bag.
Don't mistake this for elitism -- someone who enjoys construction isn't necessarily an engineer, and someone who enjoys using computers and software isn't necessarily going to enjoy trying to design computers and software.
Also keep in mind that computer use is something that professionals depend upon more and more, so even if you choose a field which doesn't seem to relate to "computers", you'll probably end up staring at one for years to come anyways.
Good luck!
poli sci (Score:2, Insightful)
Re:Oh dear. (Score:3, Insightful)
1) Coding at CS undergraduate level is hard.
2) Unless you already know how to program, as CS degree is practically impossible.
Both of these assertions are false. In particular, number 2 is an absoulte crock.
In what way is writing a program to solve a problem in Java any less intellectually challenging than using C to solve the same problem?
The 'hard' part in writing a program is how to attack the problem, i.e. the structure of the program; this bit doesn't change (much) from language to language.
The introductory software engineering course in my undergrad program covered Haskell (a functional language) as well as Java to get this point across (we covered C elsewhere). Two very different programming paradigms, and each week we had an assignment that was to be completed in both. We learnt very quickly to think in terms of the problem not your favourite language.
How to think... (Score:4, Insightful)
"An Universiry education is designed to make you THINK. A course is designed to make you think "
If you want to learn about computers then a Uni education is the best. It won't necessarilty teach you specific skills (Word, Excel, IOS etc) but will teach you how to understand the issues in a computing fashion.
I've seen lots of people who know alot about Excel, but because they haven't been taught the principles of programming, don't use 'names' when selecting areas for formula's etc. They just use the cell ranged (C1-C13). When you have to insert/delete a row, it quickly becomes a mess to update all the calculations.
OK so this is not the best example, but I think it proves the point. If you know the principles you can work the problem, rather then just knowing specific things.
Re:Computer Science (Score:3, Insightful)
Computer Science != Computer Programming. A good computer science program will have minimal coding requirements (just as much as is required to demonstrate the theory).
Re:Sorry... (Score:4, Insightful)
besides writing programs for it.
* Administration, you don't really need much programming experience to administrer a large site of e.g. Active Directory controllers.
* Network planning/engineering..
* Application useage, e.g. modelling in Maya , 3D theory.
Re:Computer Science (Score:4, Insightful)
You have to understand a language well enough to figure out the examples given in higher level courses. Therefore, for most people, the first year or two of a CS degree is very definitely computer programming.
"I want to be a doctor, but I can't handle blood!" (Score:1, Insightful)
Sorry to be blunt, but if you can't handle an introductory course to Java programming, then you have misjudged your own abilities, and computer science is not for you.
"I really like physics, but I can't do math."
"I really like sports, but I hate breaking a sweat."
"I really want to be a doctor, but I can't handle blood."
You need to be realistic about your own abilities and find something that is more suited to your own abilities, and more important, your ability to persevere. Maybe a college degree isn't for you. If you want to stay in technology, maybe you should get a 2 yr IT certificate, or maybe get your MCSE and become an admin.
Other people have suggested Electrical Engineering, but sorry, if Java is blowing your mind, how the hell will you be able to do the math and physics involved with Electrical Engineering? I have an Electrical Engineering degree, and I studied my ass off, so I know how hard the math and the concepts are in the upper levels. If you can't handle programming (which is essentially flow charting) you can't handle engineering, period.
Sorry about that, but maybe this is the right time to switch fields into something else that you will be able to formulate a career on. It really sounds like computer science will just lead to misery for you.
Re:Sorry... (Score:3, Insightful)
On the contrary, that makes it an excellent language to learn with because you don't suffer from the "shooting yourself in the foot" syndrome. This is the exact reason why CS classes in nearly every high school while I was that age taught programming in Pascal...the compiler will catch the programmer assigning an int to a string then testing it like a boolean. Beginning programmers shouldn't have to worry about these things, they should be grasping the larger concepts language structure and the first algorithms.
What have CS courses switched to? Java. Why? First off, Javadoc. You head over to Javas resource page and you have an easily indexed hierarchy of all the base Java classes. Secondly, Java reads like English. Sadly, System.out.println is probably the most useful and complicated statement a beginner will learn, but look for any Java source and you can practically read, in English, what the code is doing.
--trb
Re:Sorry... (Score:3, Insightful)
Really ? There are thousands of things to do with a computer besides writing programs for it.
* Administration, you don't really need much programming experience to administrer a large site of e.g. Active Directory controllers.
An administrator who can't write scripts (scripting counts as programming, IMHO) to automate task isn't worth the money in my world. Especially when managing large sites you won't get very far with just the GUI's provided by MS and third-party companies. Even more so when there are UNIX systems around.
* Network planning/engineering..
* Application useage, e.g. modelling in Maya , 3D theory.
I didn't know you had to study to use Maya... but on second thought... ;-) Seriously though, the one who asked this "Ask Slashdot" said "or perhaps any general methods for surviving computer science courses for new students?", and if you don't learn at least the programming basics you simply won't survive this.
Learn to code! (Score:2, Insightful)
How are you supposed to know the machine if you don't know how it works? People that know how to use few specific applications or know how to write HTML or XML don't deserve a PHD.
It's like being a mechanic who knows how to drive a car, but doesn't know how to fix the engine
Re:ECE (Score:5, Insightful)
Re:You are talking about SCIENCE (Score:3, Insightful)
I teach 1st year CS at University and a lot of the time the student's program compiles (computer says it is right) but doesn't do what they have been told to do or would break if you sneezed near it, both of which count as wrong (or not quite right). The computer only tells you if your codes syntax is correct it has no idea if it is semantically correct.
This is science - you can only be right or wrong, not a mixture of both.
Coding isn't as precise as people like to make out. Programs are an expression of an idea and as such the details differ even if the overall idea is the same. Some implementations will be better expressions than others.
If you want to study about human related things, then you need to study business, not science.
A computer is not an independent entity it sits in an environment and interacts with that environment. People are part of that environment therefore at some point computers (and the code therein) have to interact with people, even if it is through another piece of code. Computer Science is human related at some level.
Re:"I want to be a doctor, but I can't handle bloo (Score:3, Insightful)
I know an excellent Electronic Engineer who works with high speed RF and digital circuits, who wouldn't be able to handle Java programming. He cannot handle VHDL and that is somewhat closer to circuit design.
Electronics takes a different kind of thinking than programming, and some people have a distinct aptitude for the former.
Re:Computer Science (Score:4, Insightful)
If higher level courses include *any* examples of code, they're not being taught properly. Pseudo-code (or even just pretty pictures) should be sufficient.
I'm sorry, (Score:5, Insightful)
Seriously, I'm curious what kind of Job you want after you get this degree. How technical? If you don't wish to write code, and earn a degree that's related to "Computer Science", I'm not sure that you are going to find a Technical-related career all that fun. This is what we do.
If you are imagining a career that you just use a computer, anything will do these days.
And further to the point, if you can't hack coding (pun welcome) , RUN AWAY FROM CS. If you end up in a career where you are going to be building interactions between users and computers, and can't code, I don't want to work with you.
eof
Re:Computer Science (Score:4, Insightful)
I think nowadays, you'd have to be going somewhere like MIT or Cornell to get a *true* CS education, with high-level examples, pseudo-code, etc. and little actual coding.
Of course, this is all my opinion.
Re:Computer Science (Score:4, Insightful)
One girl asked me, the first time we were in the lab, 'Do these computers have HotMail?' I almost cried. A few weeks later, the fellow beside me asked me for help with a compile error that he couldn't figure out. I looked over at his screen, and saw the error. 'Missing semicolon on line 34'. I told him he was missing a semicolon on line 34 and off he went.
People don't understand that computer science is computer work, not computer play. They signed up, most of them because they like chatting on MSN and want to make lots of money. They don't realize that there's a lot of work, thinking, and math to CS, and sometimes, it's just over their heads.
--Dan
Good for you (Score:4, Insightful)
Career wise, I look at my company and we have plenty of coders, but what we really need is salesmen who understand technology. There is always work for people who can sell. The requirements would be a business degree with a minor in information technology (whatever they call the track that prepares you for an MIS career) and (THIS IS NOT A JOKE) you have to play golf. I am not making this up: we are seriously hampered by a lack of golfers in our company. In major consultancies, golf is almost a religious obligation.
That said, if sales is not your cup of tea, let me give you a number of job titles you might be interested in that don't involve much or any coding:
* Network/System Administrator
* Data Center Administrator
* Database Administrator (DBA)
* Database Analyst
* Systems Analyst
* Graphic Designer
* User Interface Designer
* Project Manager
* Geographic Information Systems Analyst
* Technical Writer
* Product Manager
this list goes on and on.
I would suggest the following. Look at the help wanted ads and make a list of the kinds of jobs being listed. Take that list, and the one I've provided above and do a little research on what those people do and what they need to know. Next, think of some company you might want to work with, call up the HR department and say that you are a student that is looking at career paths and you'd like to find out about the kinds of career preparation you need to do job X. Don't worry if you get blown off by some companies. For reasons that will become clear, the ones that rude and unhelpful are not the kinds you want to talk with anyways. With luck you may be able to get in for a meeting and talk to some people in HR or who actually do some of the kinds of jobs you are interested in.
You have two agendas: an overt and covert one. The overt agenda is as I have said above. The covert one is to meet people and build a network. There's a good chance that if you show the kind of initiative I'm suggesting you will land an internship or summer job, and eventually a permanent job offer. Also, you will begin to build a network.
If I had to make one suggestion to people starting their careers is that their most important resource they have is their list of friends and acquaintences. Cold calling looking for a job sucks, so I'm suggesting you want start working on getting past that part now. When you apply for a job, you have to jump through a series of hoops and you can be disqualified at any point for some lame reason without ever getting to the all important interview. But you can call a friend any time, and if he happens to be hiring or be friends with the person who is hiring, you're in. Ideally, you want to be in contact before the job is created so that it is specifically designed for you.
Re:Computer Science (Score:4, Insightful)
That said, the first year courses are all introductions to programming and programming concepts. You then take one more course in pure programming in your second year along with your logic and algorithmics classes. After that, you're expected to be able to pick up languages as you go. Classes in non-procedural programming (Lisp, Prolog), Object Oriented Languages (Java, Smalltalk), and Compilers (lex, yacc) all expect you to do a considerable amount of programming to cement certain concepts in your head. Even the algorithmics courses expected you to be able to come up with an algorithm and implement it.
So, Computing Science is NOT the same as Computer Programming, you're right. However, the pure study of algorithmics and protocols and language without any practical element is nearly useless at the undergraduate level. Only as you get higher level degrees does it become truly possible to leave the computer behind and do all of your work on paper.
Re:Sorry... (Score:2, Insightful)
Shell perl C at least a decent understanding..
Make -- dunno how many times ive had to fix makefiles to point to the right shit on various non linux platforms building OSS on them.
Understanding the computer from ground up has helped me tremendously throughout my career. This means understanding how CPU work how memory works
how software interacts with software..
I dunno how you can get off saying an admin doesnt need to know how to program.. an admin that cant automate is gonna be a tired and angry admin
You may loathe Software Engineering... (Score:5, Insightful)
There's a huge difference between Computer Science and Software Engineering. CS is the theory behind computers. It's based heavily on math and induction and is incredibly interesting stuff if you like discrete mathematics. It's a deep field too. If you want to know just how deep, take a look through any of the three volumes of "The Art of Computer Science" by Donald Knuth.
Software Engineering is a byproduct of Computer Science. It's just one of the applications. Programming is very appealing to some, but others would just rather focus on the theory. Java is probably the most implementation-oriented languages anywhere, with a huge library of built-in functionality, emphasis on integration, etc.
So hey, you have a choice. If you think CS is better for you, find a school that does more math and less programming, and the other way around for SE. And, seriously, it may seem daunting at first, but read Knuth's books if you think you're interested in CS. Not cheap, not easy, but eternally rewarding.
Re:Sorry... (Score:3, Insightful)
In intro CS classes, programmers shouldn't write applications that are large enough for that to be a concern.
This is the exact reason why CS classes in nearly every high school while I was that age taught programming in Pascal...the compiler will catch the programmer assigning an int to a string then testing it like a boolean.
The reason high schools used Pascal was because it was a fashion to do so, just like it's a fashion to use Java now.
What have CS courses switched to? Java. Why? First off, Javadoc. You head over to Javas resource page and you have an easily indexed hierarchy of all the base Java classes.
Java's automatically generated documentation is about as un-didactic and scary to a beginner as any kind of documentation could be. And even for experienced programmers, that kind of automatically ground out documentation junk is perhaps better than nothing, but that's about the best one can say about it.
Secondly, Java reads like English. Sadly, System.out.println is probably the most useful and complicated statement a beginner will learn, but look for any Java source and you can practically read, in English, what the code is doing.
It is highly doubtful whether "reading like English" is a desirable feature in a programming language, even if Java did "read like English". That's because Java certainly doesn't behave like English, so why should it give the impression that it "reads like" it? Of course, in reality, it's hard to see what is so English-like about constructs like "if(...) {
hmmm... (Score:3, Insightful)
love it or leave it.
Something computer related you may enjoy (Score:3, Insightful)
You may want to exercise the artist in you and look at computer graphics. I work with a web designer who hasn't the foggiest what is happening behind the scenes, but is expert in how users will use the system, what colors and layouts are most pleasing, and things like that. These are all things that are really quite interesting to study, and even more fun to apply.
Finally, never discount the value of being a good lawyer, doctor, or accountant. These are tried and true professions, and they require you to think and nowadays to use computers heavily. I have worked with doctors writing software for them, and I have worked with accountants as well, and these careers are anything but dry and boring.
Computer Science Is Not Taught Properly (Score:5, Insightful)
And actually I'd have to disagree with you somewhat: higher-level courses should have purely theoretical lectures, but students should get the opportunity to implement those theories in labs. Labs in CompSci?! A novel idea, I know. It's almost enough to make it into a real science...
Re:Computer Science (Score:2, Insightful)
The particular choice of language is not relevant as long as it allows you to express what you need too, In fact most of the time when designing an algorithm pusedo code (of course all our pusedo code is almost C ) is a the way to do it, and later choose whatever language you feel can best express the algorithm. By your senior year you should be able to pick up any language and be functional within a day or two. Right now i feel comfortable with c/c++, java, perl, sparc asm, oberon (i am writing an oberon compiler), sql. But i dont know a thing about (ok maybe a few things but..) C#, python, php, or visual basic. But i know that if tommorow my professor said i want you to write an application that does x and use C#, I could grab a book look up the basic syntax and language features, and avaialble libraries and be on my way. Dont get me wrong i am not saying i can be an overnight expert in C#, but can be functional overnight.
I think some people have problems coding because it looks like english but its symantics are very mathmatical and the state of the public education system at least here in the us is not very strong on mathmatics, and many kids leave high school heading to college who barely survied two years of algebra and maybe a geometry course ( worse for some not headed to college) and believing that they have seen the highest levels of math they ever will need. Well sorry thats not the case.
Re:ECE (Score:3, Insightful)
Too bad your comment is rated so low as it's probably true. The majority of people in my freshman year EE classes switched majors to Computer Science after encountering Physics and Math 101 -- I remember rooms going from standing room only first semester to mostly empty seats second semester! And a lot of those CS converts switched to Business after taking their first CS Math courses. Find what you really like to do. Life's too short to spend it hating your job(s) constantly.
Re:Computer Science (Score:3, Insightful)
Au contraire (Score:3, Insightful)
How can you possibly make a business decision to go with Java versus Python versus Ruby, if can't code in any of them? How can you create meaninful UML diagrams if you have no clue as to what they represent? And how the hell can you make any high level architectural decisions if you are clueless about the low level stuff works?
It's like your grade school teacher told you years ago: you're going to be using arithmetic and algebra the rest of your life, so you had better learn them. The same holds true for programming in any field related to computers. One example. The user interface design guys do a lot of analysis. They get in megatons of user data, and need to process it to get meaningful stuff out. So they write quick and dirty Visual Basic programs to do it. It's hardly the pinnacle of programming, but it beats going to the software department and begging for charity work when resources are tight.
Well, um (Score:3, Insightful)
CS isn't about just using computers. It's about understanding the principles upon which they operate. Stacks, Queues, Linked Lists, Matrices, Vectors, Arrays, Binary Trees, Hashes, myriad other data structures, bubble sorts, inheritance, polymorphism, structs, classes, virtual functions, and many, many other concepts that would give the "average" computer user a spliting headache. When you boil it down, CS is about the low level manipulation of data.
I can't imagine any effective BS degree program that involved computers that shouldn't include at least some programming. If you extrude the line of reasoning to other fields, the best car salesmen are the ones who know what is going on under the hood. I wouldn't buy a car from someone who couldn't explain to me why ABS brakes, or tuned port injection are beneficial to me. How can you expect to get into the computer field if you don't understand what's going on inside of the little box with all of the lights on it?
In all seriousness, maybe computers isn't the field for you.
LK