Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

So what to do?

  1. Jun 30, 2012 #1
    Im a Computer Science Major, i just finish a programming Class.. it was a C class, i got an A on the class it was a bit to easy in my opinion, but im not confident in C

    Im good with functions, variables, pointers, basic structs, etc

    Im lacking understanding on structs using pointers, Objects, linked list, and probably few extra things...

    Now my question, i have a few C books, should i go ahead and keep reading about C in my own, and do random projects to finish my C learning?

    Also i have 1 month free from school and i wanted to kinda learn python i heard it was a good language to learn.. So should i forget about C for a bit and focus in python?

    Or 3 finish learning C and learn python at the same time?

    If the answer is either 1 or 3.. whats the best way to finish my C learning?? books? practice practice and practice?
  2. jcsd
  3. Jun 30, 2012 #2


    User Avatar
    Science Advisor

    Hey SuperMiguel.

    My advice is to pick an area of interest and start working on projects in that area.

    You can either get a framework that is already created like Python and it's libraries (as well as other custom created libraries), or you can grab a whole code-base written in C that has the same sort of functionality.

    From this you can start on little projects. Each project will teach you a specific thing not only about programming but also about the domain. You can then add more projects as you go building on the previous ones to do more complex stuff since this is what typically happens in projects nowadays: we have lots of stuff that people build on to do more complex tasks.

    The above suggestion doesn't have a preference for the platform you use, but the area you are interested in will help make that decision.

    If you need to work on things that involve the requirement for high-performance, then typically something like C is good because you can create stuff that runs faster than an interpreted program.

    Things like complex math libraries, simulation programs and games engines are like this due to the need of high performance and extensive features and usability.

    It's not to say that you can't use stuff like Python for this, but there are arguments for using C or C++ over something like Python for these kinds of things.

    Apart from your domain goals, you also have programming goals. You might just be interested in learning a particular programming paradigm just for the sake of extending your knowledge and that's great. If you can make it practical with regard to a mini-project that has other relevance then it's a lot easier to get motivated as opposed to just doing something without any real end-result.

    Some people like to just do random exercises, but in my experience, this is not as fruitful as having a directed purpose and interest in mind. Having a directed interest helps you stick at a particular thing and it's good for learning as well since you are able to tie everything together to give more comprehensive understanding of something rather than just working on things with absolute no connection.

    I'm not saying that you can't work on tonnes of things, but that having a directed goal helps put all of those things in perspective which IMO is important. Game engines have tonnes of moving parts but they have some very specific goals that tie everything together, as one example.

    Just my opinion, but I hope it helps you make a more informed decision.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook