kuahji said:
I'm a physics major & am in my third year. The problem is, I never had a computer science course & when I go to fill out applications for various things, everyone wants to know what my computer science skills are. I'm taking comp. sci. 1 next semester, but from now until the next semester starts, what some good books or references I could read on computer science? I really have no idea where to start, but would like to learn something slightly different from what I'd learn in the comp. sci. I course.
Hi there I've done programming both professionally and unprofessionally for about 8 years so I'll try and give you some tips into programming.
1) Think big
By thinking big I mean that you should over time and with experience know and see inside your head what the code is doing, how each bit of code depends on the other supporting code in your program and how the puzzle fits together. This becomes important as you get to work on larger and larger programs and as they become more complex, your role will be to implement both the simplest and most effective solution.
2) Think procedurally
Most code you will ever have to write/debug/expand etc will be procedural. Whether its written in machine language, Java, C++ whatever if you can apply paradigms to your code where you break up your programs to do tasks in the most "logical" way then it will help you get done what you need to. Also learn about documentation. If you write code that performs a given tasks and it takes 4 sub procedures to effectively do that task, think about the following:
a) Scope of the function
b) Related data going in and data going out
c) Put into context of what is happening
d) The role of data structures in your code
3) Build on existing infrastructure
There are dozens (if not hundreds) of existing data structures that achieve some particular purpose in programming. One of the more important things to do is to treat coding like it was building a house. You typically begin by planning to build a house by creating atomic elements (like the bricks, wooden framework etc), lay the foundations, create the links that bond different elements together and finish it off through careful structuring and bonding
of each element.
Programming is no different. You start off with code segments that typically will end up in
libraries where that library contains routines that will be used by other parts of a program. It can take a little while to get to used to but if you learn to do this early on, you will write better code and things such as templates in C++ become a lot more natural to you when you are learning.
4) Keep it simple
Sometimes it can be hard to get the right code the first time but typically more experience usually allows someone to get the right thing happening faster. Now code can become complex but for the sake of trying to alleviate problems in the future, keep your code simple and readable to the best of your ability. Break-up code into sub problems that can be easily analyzed by another coder. Trying to create ultra complex code or coming up with routines that are 10000 to 100000 lines will go against helping other coders from getting to understand what's going on and frustrate them. It can also be detrimental to you if you find that you need to add a feature or debug the code or have to work with it in some way.
With regards to learning particular languages, technologies, methodologies, infrastructures, data structures and all that, there's tonnes of information out there that can teach you that so I won't bother.
All the best and good luck with it all.