prerequisites for CS PhD

<p>I am a junior ece major considering in pursuing a PhD in computer science. What are some classes I must take in order to be considered for top programs?</p>

<p>Look here for some examples:</p>

<p>[Prerequisites</a> for Applying to UC Berkeley | EECS at UC Berkeley](<a href=“http://www.eecs.berkeley.edu/Gradadm/Prerequisites.htm]Prerequisites”>Graduate Research Program Admissions | EECS at UC Berkeley)</p>

<p>What areas of study are you considering? I would recommend the following courses/topics for graduate study in CS:</p>

<ul>
<li>Algorithms (recurrence relations, asymptotic complexity notations, searching, sorting, dynamic programming, graph algorithms, etc.)</li>
<li>Data structures (stacks, queues, trees, BSTs, balanced BSTs, graphs and their representations, linked lists, array lists or vectors, hash tables, etc.)</li>
<li>Discrete mathematics (propositional logic, predicate logic, proofs, mathematical induction, discrete probability, the pigeonhole principle, set theory, functions, relations, etc.)</li>
<li>Programming languages (imperative, functional, logic, object-oriented, parse trees, BNF grammars, calling conventions, sequence points, etc.)</li>
<li>Computer architecture (processor, memory, caching, branch prediction, assembly languages, parallel computers and programming, etc.)</li>
<li>Computer networks (addressing, topologies, multiplexing, contention, packet switching, circuit switching, routing, TCP, etc.)</li>
<li>Computer operating systems (file system, virtual memory, scheduling, etc.)</li>
<li>Software engineering (process models, quality assurance, modeling, documentation, etc.)</li>
<li>Theory & mathematics of computing (Chomsky hierarchy, regular languages, context-free languages, recursive and recursively enumerable languages, automata, complexity, P vs NP, NP-complete, complexity classes, etc.)</li>
</ul>

<p>Ideally, anybody applying to a PhD program in CS at a good school would be able to speak intelligently about all of these things, as well as his/her speciality. I may have missed some things - databases, artificial intelligence, graphics, etc. come to mind - but this represents, in my opinion, a minimum (and possibly less than that) set of prerequisite knowledge. Remember, you will have to pass pre-qualifying exams in various areas of CS in order to get a PhD, so you need breadth in addition to depth.</p>

<p>Thanks for the info. Right now I am more concerned about having the said topics show up on my academic record than anything else. I don’t think I have the time to learn everything before I graduate. Would this effect my chances in competitive PhD programs. I am doing Computer Engineering so I should have learned most of the topics aegrisomnia suggested. But there are few classes that I think I need to know, e.g. algorithm, but don’t count toward my major requirement. If I take them it would add a lot of pressure on my already heavily loaded schedule. I am not sure what to do.</p>

<p>Why not go for a PhD in Computer Engineering instead? As a PhD, you can study and research basically whatever you want anyway.</p>