Barring any extremely unfortunate disaster, I am five weeks away from a final defense and a Ph.D.

At this point, we are in the re-write stage ("of my unforgivably horrible and weak thesis") but it is expected to work and be ready for my final defense in a month.

Prior to the thesis, my advisor REALLY wants me to program the algorithm I give as part of my dissertation. Though I have the algorithm pseudocoded, I have no idea anymore about basic commands, data structures, counters, declaring local and global variables, and just general grammar and structure for what he REALLY wants me to program on (though I don't HAVE to): Mathematica.

Worse, every time I try to get a dry, discrete checklist of what he wants for the program, it varies, often leading him to talk about ill about computer scientists and lament about how traditional languages just don't do the job PASCAL used to do (dead serious). Hence, the last piece of progress required of me by his say so - a piece not really contributing to my original work and that could represent time better spent revising my writing and preparing for my final defense instead of learning how to print "LEOOH WHIORLD" on MATHEMATICA - is setting up, after two years of back-cracking dissertation work, to be what ultimately "does me in."

When (or even if) I get standards for this program he wants to see, would it be unethical of me to hire a tutor to help me code the program, or even hire a programmer to help me write the program, even given that I pseudocode the program myself? Skipping the hours and hours of manual searching to learn how to read in files (and files with gigantic matrices at that) and how to look up code corresponding to pseudocode, keep up with counters etc. really seems like a good investment for me, but my moral bells are a ringing on this one, even if I pseudocode the project myself.

  • 1
    I've cut down on a lot of the backstory to focus on the actual ethical question. Please feel free to undo some or all of the edits if you think I've changed your question too much! – tonysdg Mar 12 '17 at 2:05
  • 2
    What does your advisor say regarding this question? He is probably the only one that can answer this question conclusively. – mdd Mar 12 '17 at 2:05
  • 1
    I think it is not unusual to have someone else implement an algorithm that you developed. However, your advisor needs to know and consent to this. – mdd Mar 12 '17 at 2:15
  • 2
    I wonder what is your major and what is the focus of your thesis. It greatly influences if coding yourself is central to your job or not. Also, i am curious what do you do with a pseudocode/algorithms if it is not even implemented/ tested. – Greg Mar 13 '17 at 5:40
  • 2
    I view a PhD as a bit like an apprenticeship to be a researcher, so it may be that in engaging someone to do the programming for you you are not demonstrating that you have acquired a necessary skill. It may be this is like an apprentice cabinet maker getting someone to do their dovetail joints for them, or perhaps getting someone to do the french polishing. Whether this is O.K. depends on the nature of the subject. Of course this assumes that you explicitly acknowledge in the thesis that someone else did the programming, otherwise it would be plagiarism. – Dikran Marsupial Mar 14 '17 at 12:06

Misrepresenting the hired work as your own would be inappropriate, but the following strike me as safe conditions for academic subcontracting:

  • Have your advisor's consent (thanks mdiener)
  • Find a suitable programmer and get them to understand the algorithm
  • Verify and document that the program operates correctly
  • Disclose everything in both thesis and defense
| improve this answer | |

I don't see an issue with hiring someone or getting a peer to contribute to the software as long as they are acknowledged accordingly and included in any future publications on it. Research is often team effort. However, your concern seems to be saving time during the final stages of your thesis. Sorry but I don't think the process of recruiting someone qualified for the project and explaining your algorithm to them will achieve that, even if your advisor agrees to it.

The most qualified person for the job appears to be you and it would benefit your career to take responsibility in releasing the algorithm. You don't need to do this during your PhD. If it really doesn't add to the original contribution of knowledge perhaps leave it until after the thesis is completed. It is common practice at our institution to prepare publications based on thesis work after the thesis has been competed including accompanying data and software releases. I'd try pitching the thesis completion as a top priority to your advisor with the added offer to complete the software and publications afterwards. This should be easier to convince them to do rather than hiring someone else short term.

| improve this answer | |
  • I agree! Oddly, I have already attempted to pitch the importance of completing my thesis to my advisor, even promising him that I would write and attempt to release a paper with the code after my degree was complete, and he nonetheless said that a correctly working program of my algorithm was going to be necessary for me to earn a "pass" at my final oral exam, no matter how solid the rest of my content was. I believe this is because of some very large systems he has been trying to find minimal support solutions for, and he's retired and headed out the door when I'm done. – Thomas Rasberry Mar 13 '17 at 18:26
  • 1
    Well thankfully in most systems, your advisor does not decide whether you pass the PhD. Your examiners do and you can make the case to them that your contribution as it' stands is significant and original, especially if they are otherwise satisfied with your thesis. However, your advisor does have more experience with the process than you do and they can make recommendations so take their advice seriously. Nevertheless, hiring someone else to do it isn't an ideal solution if they see it as necessary to demonstrate your thesis and submitting it to fulfil your degree. Best of luck to you. – Tom Kelly Mar 13 '17 at 21:14
  • 1
    Having completed a short term project using Mathematica, it shouldn't take that long to get a handle on it. Especially if you've used other programming languages. Check out the Mathematica SE site! – Tom Kelly Mar 13 '17 at 21:17
  • Tom, at my institution, what would happen if I refuse to code is that my advisor will email my committee and tell them that I am not ready for my final orals, and the exam will therefore be cancelled. It is an unfortunate common complaint that advisors are leaned on too heavily at my institution, with little comparative role from other committee members. Attempting Mathematica has been a nightmare for me - it seems more like a command line system than a programmer's system. Browsing online seems to reveal that programming would be much different than the languages I've used before. – Thomas Rasberry Mar 15 '17 at 23:14
  • That's rather unfortunate to hear, particularly considering that everything else sounds to be going well if you've scheduled your oral exam so soon. If programming the algorithm is really necessary to demonstrate your original contribute (even if it is really more of a research output), perhaps it may be better to do it in a language you are more comfortable with (e.g., Python)? You haven't given much detail on what the actual algorithm does or what your field usually uses but learning Mathematica this late in the thesis should only be needed if it is indeed the best tool for the job. – Tom Kelly Mar 19 '17 at 7:06

Really you should hire this person to teach you Mathematica rather than code your algorithm for you.

You should code and run this algorithm yourself on whatever data (or input) you have using whatever platform you have. It shouldn't have to be Mathematica, why not MATLAB or even C or C++?

If you can write pseudocode, you can write real code.

| improve this answer | |
  • I have previous experience with Fortran, C, and Pascal (which should give away my age). I recently gained clearance to program it in Matlab, since Matlab is kind of the path to a shortest implementation, but I do not know crucial things even after spending three hours in its tutorials today (such as how to do all of the matrix operations I need in modular arithmetic). My direction may be down the line you suggest, where I could pay someone to teach me the more intricate commands I don't know already and cannot Google, and to debug. – Thomas Rasberry Mar 15 '17 at 23:09
  • 1
    write your alg in C, then. run it on a file of data (that you would use fopen() and fread() to get) and show your results. – robert bristow-johnson Mar 16 '17 at 2:10
  • 1
    actually, probably you should do it in MATLAB. since that is the easiest to look at intermediate data with their various plot() functions. – robert bristow-johnson Mar 16 '17 at 2:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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