<p>Hello all, I am a high school senior going to major in CS at a university. After hearing that a lot of programming can be self-taught, would it be more beneficial to take electives in more theoretical, math-based areas, like numerical analysis and neural networks. Or should I take as many programming-heavy courses as possible? I appreciate any answers I can get.</p>
<p>None of your upper level classes are going to be “just programming.” Doesn’t matter if they are practical or theoretical in nature. </p>
<p>That said, take whatever you are interested in. I’d say, of job postings I’ve seen for undergraduate CS majors, about 3/4 do not mention any particular class they expect applicants to have taken or topic learned (other than the major CS), and about 1/4 do. Even if you take the classes most useless to industry, you’re still gonna get a job.</p>
<p>
</p>
<p>Exactly.</p>
<p>Undergraduate CS prepares you for a solid foundation and the ability to research things that you don’t know. The reason you take “Organization of Programming Languages” is to know how languages work in general…so you can pick up on the next “big thing” when need be at your job. Same for Operating Systems Theory.</p>
<p>Courses like algorithms, operating systems, networks, databases, security, and software engineering tend to be broadly useful in most industry software jobs, so it would be a good idea to include them in your course selection, along with electives in your areas of interest. Of course, much of CS can be self-educated, but knowing more of the “core” concepts starts you out ahead in the self-education that you will continue to do in your career.</p>
<p>If you intend to go to graduate school in CS, you may also want to consider theory of computation, compilers, and computer architecture courses, in addition to courses in your areas of interest.</p>
<p>Unless things have changed in CompSci education recently, numerical analysis should have more coding than a lot of ‘coding intensive’ courses I can name :). </p>
<p>Besides, the ‘useless’ classes are the most fun and often give insights that are very useful in your career down the road… A class in ‘computer optimization’ I took during my MS degree got me interested in high performance computing, and we wasted many a CPU cycle trying to improve matrix multiplication or other complex operations. When I had to work on a compiler at work the knowledge was extremely useful (say, why is PL/1 faster than C on VAX/VMS :)). A class in graphics where we rewrote GKS (my age is showing) got me into computer graphics. And so on. </p>
<p>I think I took nearly 32 undergrad and grad classes in CompSci (BS and MS) and can’t think of one class I don’t use on a regular basis. Maybe Software Engineering :).</p>
<p>@turbo93 what are you employed as.? Is software engineering in no way relates to what you do for your job.?</p>
<p>Sent from my HTC One X using CC</p>