PDA

View Full Version : Computer Science



conzymaher
04-18-2008, 12:47 PM
Im going to study Computer Science in College in October I was wondering if I should start learning some basic programming now to make it easier when I get to college?

Is it possible to learn programming alone with no prior experience? Could you recommend any resources / communities that would be of help?

In 1st year I will be learning Java and assembly

Thanks!

rcofell
04-18-2008, 03:58 PM
It's definitely possible to learn alone with no prior experience, in fact it may be easier for some people if that's their learning style.

There's a sticky at the top of this sub forum that has a bunch of links to various programming resources, you might want to check them out. I remember taking some courses in high school on visual basic(really easy to learn, especially if you want some basic GUIs) and Java, with a little HTML I believe. Our teacher didn't really teach us anything, we just followed some step-by-step book, which was kinda pathetic...

I've found out I do better learning a language on my own anyways, I'd rather do it at my own pace and not have to attempt to decipher the lecturer's attempts. One thing I'd suggest is just looking at code to figure out what it looks like and try to decipher it, I find it really hard to just learn what each little bit does and try to start from scratch with it, it's very helpful to see the example as a whole. There are many basic concepts in programming that're common in most languages, so once you're already familiar with one it's generally easier to learn another; I find myself just looking at the code to figure out the different syntax, as usually it's somewhat intuitive at least.

Each person has his/her own opinions, but I have to say I don't really like Java for a number of reasons, especially how they focus on it in beginner classes around here instead of C/C++. I'd much prefer the latter for performance reasons, because of the usual bloat of having an interpreter running the code and the memory management inefficiencies. But it still does teach you a lot of the basics and isn't too far off from C++, as both are object oriented languages and the syntax isn't too different.

Assembly gets to the guts of things, it's usually perceived as being extremely difficult, but it's not that bad once you have some experience with it. Sure, coding the same program/function in it versus an object oriented language takes up an exponentially larger amount of code, but it's mostly due to the fact it takes so many lines to accomplish the same functionality as the latter. Essentially when you compile C code each function/instruction gets broken down into multiple assembly instructions, with the number of C instructions to assembly instructions varying. But the drawback of course is less portability, with C code the compiler takes care of converting the C instructions to the specifics assembly instructions for the target cpu instruction set, as for when you do the straight assembly coding it's tied to one platform. I found that when doing through assembly it really reinforced the basics of memory access and pointers and the such, as you're basically doing straight memory manipulation.

Here's some programming languages you could start out with that simplify the memory management and allow for easier code writing: Perl, Python, or Visual Basic.

I hope this helps :)

conzymaher
04-19-2008, 05:15 AM
Thanks a lot! I have tried learning Java alone before, but there was just so much to take in and I was getting nowhere fast and I felt the manual assumed prior knowledge of programming...


I will have a look at VB, it looks like the most gratifying for a beginner as it has a GUI :p

*edit* Is Visual Studio Express 08 all I need? Or do i need to *ahem* acquire Visual Studio Professional?

Thanks :)

kiwi
04-20-2008, 02:11 AM
I'd suggest you to start with programming structures in general such as how loops, arrays, procedures, variables etc work (can be based on popular languages such as C). If you know that then learning any specific (imperative) programming language will be piece of cake because all you'd need to learn is syntax and some specific structures

You can definitely learn alone, google is full of resources :) Some books too

TheSilence
04-20-2008, 05:57 PM
I'm a programmer for a living and I cannot tell you the number of people who show up for interviews and know like one language but don't understand the basic concepts of math and CS in general. They can't learn new things and are just specialists in their language and we have no use for them.

Get yourself started by learning a few things about C, C++ or Java, but once you get into your education if you really want to be a programmer then the math and theory are really key - engineering studies like CS or EE are really about learning how to think more than learning a language or whatnot.

The people who are most successful usually both enjoy the job and have a very good understanding of the big picture and can learn new things very quickly. But love of the field I think is most important.

lolhalol
04-20-2008, 06:26 PM
@conzymaher

hey . looks like me and u are in teh same boat.. infact im typing from my universities computer lab... first day at school for cs foundation....


keeping an eye on this thread... :) learned some stuff already :)

good thread... keep it alive now.. :)

bullet2urbrain
04-21-2008, 01:27 PM
Good Luck :up:

:toast:


Take it from someone finishing his degree.... Starting early and/or having prior knowledge is great, but in a college level class, even if you were to learn how to use loops and basic syntax, that will probably only be 2 or at most 2.5 weeks of a 10 or more week course.

I personally in college have taken the following (For EE Degree not CS)

Java
C++
Assembly (for a PIC microcontroller)
IA-32 Assembly (for Intel CPU's)

so far, Java was cake, C++ wasnt hard either, IA-32 is a nightmare til you get used to it.

all in all, its great fun if you enjoy what you are learning

Love what you do, and never work a day in your life ;)

Particle
05-06-2008, 10:05 AM
What kind of programming you want to do also makes a big difference in how you should go about it. If you want to be a jack of all trades and master of none, go for a very general route. If you want to actually be able to sit down and have your program magically manifest due to an intimate relationship with a singular language, you need to specialize. The former are more likely to be hired in general positions. The latter are what are needed for high-end projects. Most of the time though, I think you'll find the the former become the latter, and the real instructor there is time & experience.

Xel'Naga
05-12-2008, 08:56 PM
Im going to study Computer Science in College in October I was wondering if I should start learning some basic programming now to make it easier when I get to college?

Is it possible to learn programming alone with no prior experience? Could you recommend any resources / communities that would be of help?

In 1st year I will be learning Java and assembly

Thanks!

I'm a second year EECS student so here is my advice:
1. Yes, learn some programing before going to college. C/C++ is a must.
2. Java in the first year seems odd. We do it in the second. In the first year we do C in the first semester and OOP C++ in the second.
3. What assembler are you studying? MIPS or x-86. You can read a little bit, but it's easy
4. Learn Linux. We use Linux exclusively and some courses are pretty much impossible to teach without Linux (like "Operating Systems").

Lev
05-13-2008, 06:24 PM
What kind of programming you want to do also makes a big difference in how you should go about it. If you want to be a jack of all trades and master of none, go for a very general route. If you want to actually be able to sit down and have your program magically manifest due to an intimate relationship with a singular language, you need to specialize. The former are more likely to be hired in general positions. The latter are what are needed for high-end projects. Most of the time though, I think you'll find the the former become the latter, and the real instructor there is time & experience.

not really true, really high end programmers who work for contracting firms constantly have to learn new languages

my father was senior software developer for macquarium industries for multiple years, he had to learn to use some languages he was not entirely familiar with such as csharp/dotnet, his strongest language is java

rogard
05-19-2008, 02:55 PM
computer science is far more than just programming - thats what "software engineering" is for :)

personally I would just get yourself a magzine a week from a news agent get DBA pro one week, Linux pro, networking pro the next etc etc pick different areas.

get upto date on terms like classifcation, schemas etc etc and how the terms can be used is multiple areas, how its is used in the real world as it will help you bring together the theory for exams and to write intelligently for papers.

tobe22
05-21-2008, 08:27 AM
In general, most languages are the same. They have loops, conditionals, jumps/gotos. I would get 2-3 beginners books on c/c++, I think it's the best language as a starting point, and pretty much every CS department is teaching it nowadays.

I said get 2-3, because it's always good to see programming concepts in a couple different perspectives. Although those books are trying to teach you the same thing, not everyone thinks the same, so the more perspectives you have about a subject, the more likely it will stick, imho.

Go amazon, for c/c++, or check out ur local library.

If you are willing to put more time and effort into "getting ahead," get some books about "data structures and algorithms" in c/c++. If are a math buff, get a java, c/c++ math/physics book. Heck, there are even games/graphics in c/c++ which you might like. As stated by previous posts, applying your programming knowledge is best. Being a specialist in any particular language, will give you an edge when applying your language skills; i.e., c/c++ virtual funtions are great for OOP, but do you understand the performance costs?

Be warned though, some of these algorithms and math books could be hefty, and you'll most likely move slow through them -- but they are well worth the read if you put the time and patience into it.

MS has a free version of their c/c++ environment -- it can be dowloaded here: http://www.microsoft.com/express/download/

I suggest downloading the iso, and burning it, or using a virtual drive product like daemon tools to install it from your HD.

I code (c/c++, some assembly) for a living, and I love it. Good luck!

xtc145
05-23-2008, 08:12 AM
There seem to be a lot of people here posting from their unique point of view rather than considering the best way to approach a career in development (I say this speaking as the Technical Architect at a java house).

The market at the moment is very much geared toward Object Oriented design with the majority of jobs in C# and Java. C++ (which is not OO) makes up a smaller proportion. This trend is likely to continue thanks to the ever increasing dominance of the internet.

So in terms of commercial reality, unless you have a yearning to work in games design or some other C++ oriented job, learning C++ is not as useful as learning Java or C#. There is also the benefit that C# and Java are syntactially almost identical (although Java has a much larger code base).

So basically if you want a job relating to the internet (it is highly likely you could end up working here regardless of your initial wishes), Java or C#/.Net are the way to go. I would recommend Java as there is higher demand for Java programmers than there are for C# ones (at least in the UK) and Java will give you a better idea of programming concepts.

I suggest you buy a simple step by step book and work through the examples, once you understand how class structures and inheritance works, you should be set.
Once you feel comfortable with the language, I suggest you look into servlets and the web side of Java as it will allow you to learn a lot whilst producing something visible - and providing a nice earner at college :)

tobe22
05-23-2008, 04:21 PM
xtc145, I agree with you about the internet software market. It is generally not C/C++, and I wasn't trying to emphasize it over any others in terms of commercial value. Just sayin, that whatever u decide to learn, applying it will give you greater insight.

BTW, java has even been used for mission critical applications, so don't think just because you know one particular language, that you are locked into a specific commercial market:

http://www.cnn.com/2004/TECH/space/01/16/space.mars.java.reut/index.html

Heretic
05-24-2008, 12:20 AM
computer science is far more than just programming - thats what "software engineering" is for :)

personally I would just get yourself a magzine a week from a news agent get DBA pro one week, Linux pro, networking pro the next etc etc pick different areas.

get upto date on terms like classifcation, schemas etc etc and how the terms can be used is multiple areas, how its is used in the real world as it will help you bring together the theory for exams and to write intelligently for papers.

"software engineering" is also far more than just programming ;)

As for the op, it really depends on how your intro classes are structured. At my school, there are essentially two intro Java classes: one for those who have never programmed and one for those who have. If you have no programming experience, any intro programming book in nearly any language will do. The concepts for intro programming are more important than the syntax and API features. The focus is usually stuff like loops, conditional statements, basic data structures (usually just arrays, sometimes stacks, queues, and trees), and variables (types, scope, etc). There may also be some focus on console output and file I/O, but those are usually language specific.

Google should help you the most if you're just looking for basic intro stuff. Also check your local library for beginner programming books. Having the basics down makes it easier for you to transition to other languages.