1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Computer Science, Where to Start?

  1. Nov 19, 2009 #1
    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.
  2. jcsd
  3. Nov 19, 2009 #2
    There's a book called "Concrete Mathematics" about math that comp sci students might need. If you haven't done programing, I guess you should just take out a beginners book in Python, Java or something and tinker around
  4. Nov 20, 2009 #3


    User Avatar
    Science Advisor

    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 whats 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, theres tonnes of information out there that can teach you that so I won't bother.

    All the best and good luck with it all.
  5. Nov 20, 2009 #4
    That "what are your computer skills" question you see on applications is really different from what do you know about computer science, I think. Fortunately, there are certifications galore in the IT field which teach you a lot of different things and you get to add to your resume in big bold letters when you pass (just kidding with the bold part).

    I recommend A+. Basically a heavy focus on being a computer technician, hardware issues, boot issues, operating systems, monitors and graphics cards, and printers. Not anything close to computer science. But stuff that makes you employable.

    At my internships, I've been told they really like people who have Microsoft certifications too. There's a ton of those, but mainly I'd start off with "installing and configuring windows 7" or whatever goofy name it has. Try studying for the test using virtualization software as an added bonus. Sun microsystems has a open source software called Virtual Box that makes it ridiculously easy to practice this stuff.
    Last edited: Nov 20, 2009
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook