Want to learn about Computer Science

A place to discuss the science of computers and programs, from algorithms to computability.

Formal proofs preferred.

Moderators: phlip, Moderators General, Prelates

EbrEbr
Posts: 1
Joined: Sun Nov 18, 2012 8:49 pm UTC

Want to learn about Computer Science

Postby EbrEbr » Sun Nov 18, 2012 8:56 pm UTC

I was researching Computer Science and I was trying to get questions answered about a career on Reddit, but I was met with snarky responses and it proved to usually be not that much help. (Although there were a few helpful people). Here's what I'm trying to do:

I've always loved computer since I was little; I've tried self-teaching myself programming, but I felt it was too difficult and gave up. I want to go into Computer Science because of my love for computers, and the salaries seem to be fairly decent. I also love the fact that we can create a program to make things easier on us humans! So I've been looking at some of the MIT courses that are online for free, and watching/taking notes on some of them. I have a few questions on what kinds of things i'll be doing with a CS degree, and if you'd answer them, I would be so very grateful!

1. What kind of job should I expect to have? Software Engineer? For the most part of this job, I know we program software for a company according to their specific wants, right?

2. What can I expect pay to be? Is it worth the amount of work for the pay?

3. Is a CS degree good for those who have plans to own their own business, possibly in relation to programming/web development?

4. What kind of things am I expected to know/learn?

5. If I could get started right now, what can I do? Continue the courses on MIT or learn a programming language that I can use in my career?

Sorry if it's a lot of information, I love computers and the science of it. I hope I can get some better feedback here than I did other places! I really hope to make the world a cooler place one day (if I can).

User avatar
Jplus
Posts: 1711
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Want to learn about Computer Science

Postby Jplus » Sat Dec 01, 2012 3:31 pm UTC

EbrEbr wrote:I've always loved computer since I was little; I've tried self-teaching myself programming, but I felt it was too difficult and gave up. I want to go into Computer Science because of my love for computers, and the salaries seem to be fairly decent. I also love the fact that we can create a program to make things easier on us humans! So I've been looking at some of the MIT courses that are online for free, and watching/taking notes on some of them. I have a few questions on what kinds of things i'll be doing with a CS degree, and if you'd answer them, I would be so very grateful!

If teaching programming to yourself fails, it can be for two reasons:
  • You lack the resources to have everything explained that you need to have explained (this is very likely).
  • Programming is not your thing (this is also a very real possibility, unfortunately programming is not for everyone just like playing the piano is not for everyone).
I first tried to learn programming when I was 14 and I failed (I bought a book on C++ but I had no idea how to acquire a compiler). When I was 16 I got a better environment for learning to program (graphing calculator with manual) and then I succeeded.
In order to get a quick idea of whether programming could be your thing, you could take this test, then score your results in this form with these instructions and this answer sheet. For a full overview of what the test is about, see this page (only after taking the test).
If you are afraid that programming is not your thing (though don't worry about that unless the test gives you a really bad score), but you still want to make a better world with better computers, then you may want to consider studying human-computer interface instead. There are several universities that offer such a program.

EbrEbr wrote:1. What kind of job should I expect to have? Software Engineer? For the most part of this job, I know we program software for a company according to their specific wants, right?

Most programmers that make software for a company according to the company's wants didn't study Computer Science (but some did). The only thing that counts for such a job is that you know how to program. That's not the primary topic of Computer Science: that's really about what can be computed, and what is needed to make that possible.
If you come from Computer Science, you have the option to work as a programmer for a company, but you'll probably prefer to get a higher position, to start your own company or to stay in academia.

EbrEbr wrote:2. What can I expect pay to be? Is it worth the amount of work for the pay?

If you are able to program, and especially if you studied Computer Science or if you're very motivated (which you seem to be) or you're really good, you're pretty much guaranteed to get a decent pay.

EbrEbr wrote:3. Is a CS degree good for those who have plans to own their own business, possibly in relation to programming/web development?

Yes, although knowing a lot about programming doesn't necessarily make you a good entrepeneur.

EbrEbr wrote:4. What kind of things am I expected to know/learn?

In Computer Science: programming, algorithm design and analysis, computational models, and probably other things. It depends on where you go and what subjects you choose later on during your study programme.

EbrEbr wrote:5. If I could get started right now, what can I do? Continue the courses on MIT or learn a programming language that I can use in my career?

You can do anything you want! You should probably make clear to yourself what you want to achieve in the end and base your decisions on that. In any case, learning to program and continuing the MIT courses will probably be very beneficial.
Don't worry about the specific programming language, by the way. It totally depends on your environment what is being used. Also, once you know one language you can learn them all (and it's a good thing to know multiple programming languages). Start with one that you find easy to learn. You could take Logo, which was specifically designed with teaching in mind.

EbrEbr wrote:Sorry if it's a lot of information, I love computers and the science of it. I hope I can get some better feedback here than I did other places! I really hope to make the world a cooler place one day (if I can).

Your motivation is really good. Please stick to your dream, I hope you'll get very far.

Also, this a very inspirational website that you should check out: http://worrydream.com/
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
c_programmer
Posts: 93
Joined: Sun Apr 04, 2010 1:36 am UTC

Re: Want to learn about Computer Science

Postby c_programmer » Sun Dec 02, 2012 10:58 pm UTC

Quick background: I'm a CS student at UIUC and I've been programming for about ten years.

EbrEbr wrote:1. What kind of job should I expect to have? Software Engineer? For the most part of this job, I know we program software for a company according to their specific wants, right?


Computer Science is the formal study of the theory behind computing, it can prepare you for a wide range of things. A lot of programmers work for a company fulfilling their software needs, others are on specific projects doing specific things. Others chose to go out on their own and do consulting, taking shorter term contracts doing all sorts of things. Complexity can range from simple stuff like websites to complex things like operating systems or advanced scientific. If you get an advanced degree you'll be doing research based things, researching algorithms and such.

EbrEbr wrote:2. What can I expect pay to be? Is it worth the amount of work for the pay?


http://payscale.com/. Salary varies enormously based on your area of expertise, geographical location, education and amount of experience. Software pays nice, even at entry level jobs. However, if you don't like it and are doing it only for the money, you won't last long. You have to enjoy the problem solving aspect in programming, if you find that annoying no amount of money will make software worth it.

EbrEbr wrote:3. Is a CS degree good for those who have plans to own their own business, possibly in relation to programming/web development?


A CS degree is always helpful in the programming industry, sometimes it is required before they'll even consider you. Web development really has no need for a CS degree though, you won't use any of it other than your programming classes. I've been doing web dev for a while and honestly can't wait to get out of it, that's the main reason I'm studying for a CS degree. Starting your own business comes with it's own set of challenges, none of which have anything to do with CS.

EbrEbr wrote:4. What kind of things am I expected to know/learn?


To get into a CS degree? You don't have to come in knowing a lot, quite a few students never touch a programming language until their classes require them to (although the ones with prior experience do much better). If you did poorly in math in highschool you should probably go to a your local commnity college, get good grades in your math and science classes then try to transfer to a [url="http://colleges.usnews.rankingsandreviews.com/best-colleges/rankings/engineering-doctorate-computer"]really good CS program[/url].

What will you be expected to learn? Math, lots of math; my path requires calc I, II, III, linear algebra, discrete math and probability theory. If I was specializing in an engineering discipline differential equations and a few others. Plenty of computer science courses that use that math, exactly what courses strongly depend on what you want to do, some CS degrees are focused on theoretical applications while others are focused on an area of engineering (that's at least how Illinois does it, I'm focusing on systems programming). The CS courses will be covering material ranging from programming in a language to how computers handle decimal digits (in theory) to compiler design. Most require two to three three physics classes (kinematics, electromagnetic, and quantum or thermal). This is of course in addition to the regular general stuff all students have to do.


EbrEbr wrote:5. If I could get started right now, what can I do? Continue the courses on MIT or learn a programming language that I can use in my career?


How old are you? If you're still in highschool, study hard in math and get the best SAT/ACT scores you can manage. Those MIT courses are always a good resource. I'd definitely try to pick up a programming language, it won't magically become easy when you have a professor and knowing what you're doing will make the class trivial if necessary to take at all. I can't emphasize math enough, starting college at a math disadvantage has done nothing but set me back.

HaaSuub
Posts: 1
Joined: Sat Dec 29, 2012 10:27 am UTC

Re: Want to learn about Computer Science

Postby HaaSuub » Sat Dec 29, 2012 11:22 am UTC

NOTE: My original version of this post was flagged as spam, I'm guessing because I provide a lot of links to resources. I've cut them out, and replaced them with suggestions about Google/Youtube searches.

I'm a second year Computer Science student at the University of Washington. I've never worked in industry, so I can't provide much insight into your career-related questions, but I can give you some kind of idea of a university-level program in computer science.

4. What kind of things am I expected to know/learn?

Like c_programmer said, math is the main one. I know of at least one study about CS education, which compared various factors, such as previous programming experience, communication skills, SAT scores, prior use of computers, etc., and their correlation with success in university CS courses. The study found that good math skills had the highest correlation to success in computer science, even more so that previous programming experience. This isn't to discourage you if you aren't great at math; it's not so much that you use a lot of math when you do computer science (well, you do somewhat, especially in algorithm analysis, but in most cases you don't need much higher math background -- UW CS requires calculus and linear algebra). The thing is, though, that CS and math use very similar modes of thinking, so much so that Stanford even has a program called Symbolic Systems, which combines math, CS, logic, etc. because the kinds of thinking you use in all those disciplines are very similar. I also think c_programmer's advice about going to community college to work on math if it's not going well for you in high school is a good idea.

5. If I could get started right now, what can I do? Continue the courses on MIT or learn a programming language that I can use in my career?

My own opinion is that the key to doing well at computer science is having the right mental model, the right picture inside your head of how the computer functions -- a few of my professors say you often need to "play computer" -- that is, think like a computer when coding. (Just an aside, here's a great video of the physicist Richard Feynman talking about mental models, albeit in a very different situation--counting: [search Youtube for Richard Feynman Thinking Part 1")

So, if you want to prepare for computer science, and it doesn't come that naturally to you, I'd suggest, first and foremost, developing the skill of thinking about how you think. I think one of the most useful skills for learning about anything, and computer science especially, is being able to tell how you think something works (in this case, a computer). If the system you're studying, a computer, does something you don't expect, you need a road map to figure out why your mental model of how the computer works doesn't line up with reality. Being very aware of how you think about the computer will give you this road map, or at least a starting place.

So, if you've found that programming doesn't come completely naturally to you, I suggest INTROSPECTION ABOUT YOUR OWN THOUGHT PROCESS. Of course, practice in programming and reading is important too, but I feel like introspection is often overlooked, considering how useful it is.

Another suggestion I have is to find interesting problems to solve with programming. I, too, tried to teach myself programming, with little success, when I was younger. It wasn't until I took a programming class that I got really into it, and looking back, I realized that this is why: I wasn't doing anything interesting with my programs. I'd learn, say, C++ from C++ for Dummies, and read through the examples, but I wasn't really doing anything worthwhile with the language. So I think a key thing to keep in mind while programming is to keep it interesting. You'll have a hellish time learning a programming language if you don't do anything that intrigues you with it. For some examples of problems that I think are kind of interesting, here is the homework page of the UW Intro CS course this past fall: [Google search "CSE 142 Autumn 2012 Homework"]. I think they provide some interesting challenges for programming (the course is taught in Java). If you write solutions to these problems, though, DO NOT post them on the internet. That's a big no-no academic-integrity-wise, and is essentially cheating by providing the answer to the public, including potential future students.

If you're interested in what a course of study in Computer Science looks like, google UW CSE courses. You'll find a course list, including these classes:

The core courses for the CS degree are CSE 142 and 143 (the intro classes), 311 (Foundations of CS, which is basically discrete math), 312 (Foundations 12, probability theory and algorithms), 331 (software engineering), 332 (Data structures and algorithms), and 351 (The Hardware/Software Interface).

I'll just leave you with a couple of resources. MIT's OCW is great, of course. Also, there are some free books on learncodethehardway. A quick google search should yield results. I haven't actually worked through any of these, so I'm not sure of their quality, but they're free, so there you go.

And one final note: I suggest trying to get comfortable with a Unix-type OS, like Linux. You can dual-boot Windows and Linux--I know Fedora (a Linux distribution) provides a great download, which you burn to a dvd, from which a wizard will take you through partitioning your hard drive for a Fedora portion and your current OS. It's hard to get used to Linux if you've always used Windows or Mac, and I didn't even get comfortable with it until I took a class on it. But, I gotta say that Linux, in many ways, is much better for programming than Windows, and it's made by and for geeks, basically, so it's great for someone interested in Computer Science. That said, the OS is tough to get the hang of sometimes, and it lets you do a lot with it, so you always have the risk of messing something up.

Hope this helps! I really love studying computer science, and if you're interested in it, I wholeheartedly suggest pursuing it, even if programming is hard sometimes. It gets easier as you progress, believe me.


Return to “Computer Science”

Who is online

Users browsing this forum: No registered users and 3 guests