2. Software outsourcing is mainly to cultivate the ability to do software, that is, to train programmers. Non-outsourcing means that the enterprise has this department itself, because it is to train programmers and technical majors.
I'm going to a professional software development enterprise, and the treatment depends on my personal level. Don't pay attention to graduate courses.
4: That's tuition.