As a recent graduate in Physics&Mathematics. A lot of jobs require programming skills. Mostly require C++. Is there some way to prove that I have the required programming skills without doing an degree in it?

I have taken 2 courses on Python, plus 1 course in matlab. No real experience, python is used in some physics courses.

What does "Competency in the design of software under the Linux operating system" and "Basic familiarity with C programming" really mean?

I'm considering taking a part-time computer science minor. Can I possible learn C++ on my own (which I already am) and then do projects?

  • 1
    This question appears to be off-topic because it is about programming – kevin cline May 11 '14 at 18:15
  • Well, I asked about it in programming but its off-topic because its about workplace. :S – progishard May 11 '14 at 18:19
  • The best way to demonstrate you can write a program in C++ is by writing a program in C++. Create a few tools that demonstrate your level of knowledge of the language, datastructures and algorithms (since you're in the scientific field I would consider it a must) and place them in an online repository like Github or Bitbucket. – Jeroen Vannevel May 11 '14 at 18:27
  • 2
    Please don't cross-post: programmers.stackexchange.com/q/238736/1996 – Jim G. May 11 '14 at 20:04
  • You are in danger of having your question put on hold because it is way too broad. I'll try to give you a reply later in the day but right now, I just paid off a huge sleep debt. – Vietnhi Phuvan May 11 '14 at 21:05

"Competency in the design of software under the Linux operating system"

It means that you have worked enough in Linux to design, run, troubleshoot software under the Linux operating system i.e. using Linux commands. Competency definitely includes knowing how to store your work where people can find it and knowing enough about say file and directory deletion that you don't teach your team mates that you didn't know that file and directory deletions are not reversible. Competency may also mean that you know how to install the language, language tools and possibly the IDE (Integrated Development Environment) as admin or root into a machine and configure them to work. The languages in question may be C/C++, Java, python, javascript, etc. You need to decide which language you want to start with, because each language requires a serious commitment of time and energy. I usually recommend Python to STEM students and graduates.

"Basic familiarity with C programming" really mean?"

It means that you can write, compile, run C programs and store them where people can find them. I means that you understand pointers in your sleep, that you understand data structures such as "struct" and that can write basic dynamic data structures such as queues and stacks. It may include your knowing of more advanced dynamic structures as binary trees. I am not sure if whoever uses that phrase "basic familiarity with C programming" includes socket programming - You'll just have to ask that person specifically.

"Can I possibly learn C++ on my own (which I already am) and then do projects?"

I learned C++ on my own. It took me 8 weeks - 6 weeks where I was banging my head into the wall trying to understand the language, and 2 weeks where something clicked and I was actually able to write C++ programs, as opposed to compiling C programs with a C++ compiler and calling myself a C++ programmer that way. OOP including mixed inheritance will probably drive you out of your mind. And of course, if you don't understand pointers and memory management, your experience in learning C++ will be an experience in pure massacre-ation :)

You need to have a serious talk with some STEM alumns who are making a living as software engineers as to what your options are with respect to learning computer languages. For example, Javascript is a great - although technically flawed - language to learn, it's community includes some of the smartest individuals anywhere, but the only thing you can do with Javascript is web programming. For example, C is a great language to push deeper in if your spiel is systems programming, software drivers design and legacy code support. And you need to have that talk for each language you are interested in.


"I have taken 2 courses on Python, plus 1 course in matlab. No real experience, python is used in some physics courses." This, by itself, is pretty useless.

My two cents worth is simple - you will be using software for measurement and modeling. Therefore, you need to learn whatever it takes to measure things with software. Probably the best thing to do starting out is buy one of the embedded controller kits - Arduino, Raspberry PI, Launchpad, etc. Just about every chip vendor has an SDK with an eval board. Get the thing to measure the temperature in your attic and report it to your cell phone. Note that this involves a 'round trip' - you have to make something work, not simply pass a course.

In the scientific world, you'll be dealing with hardware, often custom stuff people have slapped on some experiment. 'Knowing how to program' isn't enough - you don't have to design hardware, but you do have to know how to integrate 'off the shelf' hardware components as part of the instrumentation process.

Do that, and you'll have people ringing your phone off the hook, or whatever that means with smart phones.


You prove your competency by showing some projects you have done with it.

Even if you were to have a minor (or some) coursework in C++ (or whatever programming language), it is not nearly as informative as having a project to demonstrate your competency. A project shows that you understand the language, and more importantly understand how to use it to solve a problem.

  • Once I do those projects, should I somehow connect it to my resume? Do you possible know of any examples? I want know to what kind of project and how big. Thanks a lot. – progishard May 11 '14 at 18:34
  • Yes, should should put those projects on your resume. That is part of the reason you should be working on projects in the first place. The kind of projects depend on the kind of job you want to do. I can't answer that for you. – user19432 May 11 '14 at 18:37
  • I guess it would be unprofessional to give a link to my Github on my resume? – progishard May 11 '14 at 18:42
  • Why would it be unprofessional? It's exactly what Jeroen is telling you to do. – user19432 May 11 '14 at 18:43
  • @progishard: definitely not, take a look here for more info on the subject. – Jeroen Vannevel May 11 '14 at 18:44

Not the answer you're looking for? Browse other questions tagged or ask your own question.