A Comp Sci Major With Free Time?

<p>Hey everybody,</p>

<p>So I'm just finishing up my fourth semester as a Comp Sci/Math Double Major and I'm planning my courses for next semester. By the end of this semester, I'll have taken Organization of Programming Languages and an Intro to Algorithms course for comp sci and Advanced Calc II and Statistics for math. I only need 21 more credit hours for comp sci, 9 for math, and 12 for others (writing, other gen ed, etc.) This would put me at <12 credits a semester. </p>

<p>Is this normal? Its just that I haven't taken a semester under 15 credits since I started here and going down to 12 seems weird. I considered graduating early, but I might be starting a co-op (I applied and they seem interested in me) next year and the co-op requires I have at least four semesters left. I could finish in 3 semesters if I didn't do the co-op, but the final semester almost comes out 'free' since the co-op pays pretty well. I might be counting my eggs before they hatch, but what I should do for the remaining semesters? I don't think I want to go to grad school, but would grad courses look impressive on a resume? Or should I just take more undergrad courses? Or should I just appreciate my schedule is a little light?</p>

<p>EDIT: Another question. My school has relatively loose requirements for upper level comp sci courses. There are no specific comp sci courses you "have" to take to graduate, but are there some that are pretty much so fundamental that you need to take them? I hear Data Structures is one, are there others?</p>

<p>Thanks,
EddieD</p>

<p>Yes, Data Structures and Operating Systems are the last 2 “core CS” course that you should take. As far as electives, let’s be honest, there are more jobs that relate to “information technology” than pure CS. Information Technology is the processing (programming), storage (databases) and distribution (networks) of data to information. There is also big business is securing data (cryptology, information assurance). A firm grasp of cryptology involves a good grasp of number theory and abstract algebra.</p>

<p>That should give you some ideas on electives.</p>

<p>Important courses if you want to go into industry software development:</p>

<p>Data Structures (presumably a prerequisite for most others)
Algorithms and Complexity
Operating Systems
Computer Networks
Software Engineering (overview)
Databases
Security</p>

<p>Extra space in your schedule can be used to take in-major electives like:</p>

<p>Compilers
Computer Architecture
User Interfaces
Graphics
Artificial Intelligence
Language and Automata Theory</p>

<p>Or interesting or useful math courses like:</p>

<p>Abstract Algebra
Number Theory
Cryptography</p>

<p>Or out of major courses like:</p>

<p>Economics (always useful to know)
Psychology (useful to know in terms of how humans behave, including when using computers, acting within economic systems, and as the weak link in computer security)
Technical Writing and Communication
anything else that is interesting to you</p>

<p>Of all of those courses, the only ones I’m not looking forward to are OS and Computer Networks (also Software Engineering if only because I don’t like the teacher…) Oh well, that’s future Eddie’s problem! I still have to Data Structures first anyway.</p>

<p>Thanks for the advice!</p>

<p>Also, it seems that the consensus is to take more undergrad courses instead of grad courses? </p>

<p>Sorry for the double post.</p>

<p>It depends. More undergraduate courses will give you more breadth. Graduate courses will give you more depth.</p>