Programming - Need Advice

Computer science != Programming

For lack of a better analogy: Programming is to computer science as soldering is to electronic engineering.

If you're looking to get a head start, get some decent books on algorithms and data-structures, computer architecture, and operating systems.

That said, maybe you do just want to learn how to program, and that's just as valid - I personally am much more motivated when I have a project with the goal being to create something - and it's easier to come up with projects that aid in learning programming than to come up with projects that aid in learning core computer science concepts (they are more efficiently learned in abstract, and then crystallised by project work - which you tend to need to program for anyway).
 
im off to bed lads.

Please keep giving your brillaint advice, thoughts and knowledge and if possible and you have the time, your own stories on how you got started, how you started and what you learned.

i think everyone got started with hello world :p

the best way to get started is to have some reasonably simple problems to solve with a program (once youve learnt some of the basics). other than your basic hello world, or 'output the numbers 1-100 with a for loop' types of thing the first program we had to make was something where you input two dates and it worked out the number of days between them. as you can imagine we werent allowed to use the date and time functions because that would have made it stupidly easy

it was interesting getting around the whole 'im a computer and i dont understand calendars' thing
 
If you want to get a taste of computer science, you could do much worse than to enjoy the CS50 series http://cs50.tv/2010/fall/

I probably disagree a bit with the calls to learn C++ first. I would probably learn C rather than C++ simply because there's fewer things to learn and you're working just that bit closer to the metal (i.e. you will have to understand computer organisation on a pretty fundamental level).

I would also disagree it would be better to work with an IDE like visual studio. It hides so much of the actual process of compiling and linking a program that as a prospective Computer Science student, you should be looking to understand as soon as possible. Get a copy of Ubuntu and install the Geanie text editor and you have everything you need to get started.

And if you're more interested in just programming then I would actually learn something like Python instead which is a far better platform for learning and applying programming techniques.

What I am concerned about though, is that Computer Science is being used as a synonym for programming. It's not really the same thing. Thinking back to my degree (which was Computer Science) I really think too much emphasis was placed on learning Java and C and less on the structure and interpretation of computers and using them to solve problems through abstraction.

If you're serious about Computer Science do take time to understand the guts of how computers actually work (will likely involve some Maths!). One of the best exercises we did at University was writing a general purpose calculator in PDP-8 assembler. Not interesting in the sense we made a calculator, but interesting in terms of understanding and working with a limited and (by modern standards) unusual architecture.
 
Computer science != Programming

For lack of a better analogy: Programming is to computer science as soldering is to electronic engineering.

If you're looking to get a head start, get some decent books on algorithms and data-structures, computer architecture, and operating systems.

i'll agree with that, however, i'm finding the algorithms part of my course pretty straightforward so far. the most complicated things we've had to learn are a couple of convex hull algorithms and the radix sort, both of which ive had no problems understanding despite the lecturer being the worlds fastest speaker and having a heavy indian accent
 
Learn either Java or C, they are nearly identical but I do recommend C since there are significantly more tutorials out there and you can quickly move onto C++.

If you head on over to www.cplusplus.com there are some great C and C++ tutorials to get you started.
You will most likely in university be using Visual Studio 2008 or 2010, however, since you are a student you can get the full whack (Visual Studio 2010 Professional) for free by going to www.dreamspark.com

I started learning with C++ and from just that I now know C, C# and Java.
 
Computer science != Programming

For lack of a better analogy: Programming is to computer science as soldering is to electronic engineering.

If you're looking to get a head start, get some decent books on algorithms and data-structures, computer architecture, and operating systems.

This is also a very valid point, however almost all of the Computer Science students on their first year of university start programming in JavaScript, which in my opinion is a low-level language.

If you want to mix programming with electronics then think about doing Electronic Engineering or Electronic & Computer engineering which mixes some really heavy programming in with microcontrollers, robotics (AI) and general computers.
 
This is also a very valid point, however almost all of the Computer Science students on their first year of university start programming in JavaScript, which in my opinion is a low-level language.

If you want to mix programming with electronics then think about doing Electronic Engineering or Electronic & Computer engineering which mixes some really heavy programming in with microcontrollers, robotics (AI) and general computers.

Javascript is a client-side scripting language for the web. :)
 
Learn either Java or C, they are nearly identical but I do recommend C since there are significantly more tutorials out there and you can quickly move onto C++.
Java is closer to C# than it is to C. Sure, Java syntax derives from C syntax but aside from that, C# is much closer - the main points that come to mind are that Java and C# are managed and object oriented, while C is unmanaged and imperative. Oh and there's the other thing of Java and C# standard libraries being nicely documented, whereas C... well, let's not talk about it.
 
Java and C# are actually imperative languages as well (i.e. they work through the issuing of commands, this is in contrast to functional languages like Haskell or Declarative languages like SQL).

C is procedural though while Java and C# are Object Oriented.

C's standard libraries are very well documented.

Try:
$ man printf

And if in doubt, grep -R 'term' /usr/include :)
 
Java and C# are actually imperative languages as well...
True, but you know what I was getting at!
C's standard libraries are very well documented.
OK, I didn't phrase that properly. What I really meant to say was that the standard libraries that really are *standard* are quite limited, not that they're documented badly. So you have to be sure C is the right language for the project you're working on, to ensure you aren't having to reinvent the wheel along the way.

*Utters something about it being too late for him to discuss this without making mistakes*
 
True, but you know what I was getting at!
OK, I didn't phrase that properly. What I really meant to say was that the standard libraries that really are *standard* are quite limited, not that they're documented badly. So you have to be sure C is the right language for the project you're working on, to ensure you aren't having to reinvent the wheel along the way.

*Utters something about it being too late for him to discuss this without making mistakes*

No problem, and you're right :) 'Standard ISO C' (i.e. C99) has a tiny standard C library. I don't think the latest Visual C product is even standards compliant anymore either.

GCC should be fine though.

Regarding learning C, I think it's a bit like learning assembler was 10 years ago. A bit of fun to see and understand how computers really work under the hood. I mean, the basic level of understanding required to write and build even a trivial C program is a world away from writing a PHP script.
 
Javascript is a client-side scripting language for the web. :)

Yea, sorry by low level, I meant a basic language. I didn't mean similar to machine code... Although C is exactly that (low level). Basically in computer science, the first languages you will learn are JScript and then Java.

Java and C# standard libraries being nicely documented, whereas C... well, let's not talk about it.

C has a very well documented standard library. :confused: - Read above, NVM.
 
Last edited:
I don't really see much value in learning C/C++ right off the bat if you're intending to study comsci at university. You'll no doubt start out in Java and progress onto C on your course anyway, and learning C/C++ now will just introduce you to things like pointers and memory allocation before you have a grasp of the basic concepts of things like OO.

Personally I'd say there's a lot more use in learning Java or C# as a starting point because they force strongly typed programming and object oriented concepts into your learning. You won't have to worry about the small things you find in C/C++ that will become a lot clearer when you're sat in a lecture or in a lab with someone helping you through them. I'd also say it's easier to turn up to your 'pointers' lecture and 'get it' with a good grasp of OO, variable scope etc, which you'll quickly and easily learn through Java and C#.

I'd be shocked if any course started you out in JavaScript. Can you imagine teaching a bunch of greens about prototypes and js constructors and then dumping them into Java or C? Most of them would be clueless.
 
Last edited:
ok i didnt read all the posts above and just skim over them but i think most of them would recommend a book or two for you to read. I wouldnt bother to be honest.

Once you get to uni the first year is kinda crappy and you will have plenty of time to learn the stuff you need to learn but that being said learning about data structures and general program stuff could help you a bit but i would stop at learning a particular language. The reason i say this is becuase I had several people on my course who didnt really have much experience with computers as they had done some random history Alevel and managed to get into uni with it. I`m not saying that is your case at all but you will have people on a uni course that are not at the same level as others and the idea of the first year is to make sure at the end of it everyone is at the same level.

Learning about basic programming mechanics is were i would start so when you get to uni you at least understand them no matter what language you use to do them in that would be my recommendation.
 
Difficult to suggest what to start with:

First programming I did was C/C++ during the year of Elec Eng I studied, I then changed course to Comp Sci and learnt predominantly Java (with some C++, SQL, Haskell and some 'imaginary' languages thrown in (I kid you not)).
When I started work for a tiny company I was doing PHP web development and when I changed jobs to development in a multinational I moved to C#.NET and VB6 (legacy systems suck...).

All the languages above (C#, Java, PHP, C, C++, VB6) are very similar in that their general principles, syntaxes and semantics are very very similar. If you went to a job knowing 1, the employer would have to be very naive not to think you couldn't quickly train in the other.

They do each have some nuances though.

VB6 - ignore. hateful old crappy language :)

PHP - Glorious language for website back ends which lets you get away with murder (whether that is good or bad is another discussion)

Java and C# are largely the same beast (I believe C# is Microsofts version of Java after a falling out with Sun). They're platform independent languages thanks to the JRE/CLR respectively and are used in a wide variety of situations from website backends (not sure about Java for that one) through to standalone desktop apps.

C/C++ a great deal more powerful, potentially more complicated and perhaps harder to learn. To me Java and C# wrap you in a bundle of cotton wool and stop you from making any serious mistakes or problems. With C/C++ the gloves are off and your in the big boys school now :) Don't let this put you off though. Knowing C/C++ is very useful and powerful.

Ramble over...

I'd learn C/C++, but just be aware it can be a bit more complicated, fiddly and prone to code debugging moments such as "OMFG JUST WTF IS WRONG WITH YOU - JUST WORK!!one1.
As has been said, find some decent tutorials, start at the beginning - that means Hello World... and build up slowly.
 
Forget learning OOP at this stage. Focus on the fundamentals. OOP is something that you can pick up at Uni whilst all the other kids are still fretting about while{} loops. Honestly though, OOP takes years of practice to really learn and become fluent with.

Personally, I would learn how to use C. It's about as low level as you can go without getting too silly. But it isn't hard to just pick up and play with. Remember C and C++ are the same except that C++ supports OOP.. which you don't need yet.

Don't bother with PHP or VB. These will teach you things in a bad way that could take many months or years to "unlearn".

Once you've learnt the basics of programming in C then give C# a try. It has nothing to do with C, mind. Other than sharing some syntax and constructs.
 
Last edited:
Back
Top Bottom