Academic Advice for New PhD Students

You will be assigned a mentor based on the interests that you stated in either your personal statement or your GTA application. Your mentor will act as an advisor during your initial months in our graduate program. This person can be an invaluable resource for helping to choose special topics courses, discuss class difficulties that you may be having, or other difficulties that you may encounter in adjusting to a PhD program. Once you have found a research area that interests you, you are free to ask another person to become your dissertation advisor. If that person accepts, then that person will assume the mentoring responsibilities. You should make an appointment with your mentor as soon as possible to meet with him or her.

Your primary goal at the beginning of your program is to complete the core classes, CS530, CS560, and either CS580 or CS581, as quickly as possible. CS580 and CS581 can be both used to satisfy the theory requirement, so you only need to take one of those two courses. These core classes are meant to give you the background that will allow you to succeed in more advanced special topics courses. Additionally, if the graduate committee decides that you have not had the equivalent of CS380, Theory of Computation, then you will be required to take and pass CS380 with a grade of C or better.

Your secondary goal at the beginning of your program is to find a research area that interests you and to find an advisor in this area that is willing to supervise your dissertation. Toward this end you should start taking special topic courses as time permits. In fact, beginning with the second semester of your graduate program, you should start to take at least one special topics class each semester.

The first two years of your program should be devoted to finishing your core classes and finding a dissertation advisor. Doing so will allow you to attempt the qualifying exam, the first milestone in the PhD program, at the beginning of your third year. In order to take the qualifying exam you will need to have 1) completed the core courses and 2) have a dissertation advisor.

Once you have completed the qualifying exam, the rest of your program becomes much less structured. You will form the rest of your committee, which will consist of your major advisor, two other advisors from computer science, and one advisor from outside the department. You will also define a dissertation problem and present it in an oral exam to your committee. The oral exam constitutes the second milestone in your PhD program. Finally, upon completion of your dissertation research and the writing of your dissertation, you will orally present and defend your dissertation in front of your committee. This defense constitutes the third and final milestone of your PhD program and and its successful conclusion will result in the awarding of your PhD.

Course Advice

The normal load for a new student is 6-9 hours (2-3 courses). The minimum course load if you are receiving financial assistance is 6 hours. As noted earlier your primary goal is to 1) complete the core classes, CS530, CS560, and either CS580 or CS581, as quickly as possible, and 2) complete CS380 if it is required by the graduate committee. However, you may first have to complete one or more pre-requisite courses. The following table should help you decide whether or not you need to take the pre-requisite courses:

CoursePre-requisitesAdvice
CS530--Computer ArchitectureCS160You should be able to take CS530 your first semester as long as you have had a rudimentary architecture course. The official pre-requisites for CS530 are CS311 and CS360 but in fact you need neither course in order to succeed in CS530.
CS560--Operating SystemsCS360This course is a rigorous, lab-oriented course that is taught in C. It assumes that you already understand how many of the Unix system commands are implemented and how Unix posix threads work. If you have any doubts about how much Unix preparation is required, you should check the CS360 syllabus and notes. You can find the syllabus and notes by clicking on or going to http://www.cs.utk.edu/~plank/plank/classes/cs360. CS560 also assumes that you have worked with Dr. Plank's dlist (doubly linked list) and rbtree (red-black tree) libraries but the documentation for these two libraries is excellent and you should be able to pick them up on your own.
CS580--FoundationsCS311/CS380CS580 reviews some of the material presented in CS380 and then covers computational complexity and computability. It is a homework-oriented class but is every bit as rigorous and time-consuming as CS560. Before you take this class you should have a firm grasp of the following subjects:
  • Countability and Diagonalization
  • Regular Languages, Finite Automata and the Myhill-Nerode Theorem
  • Context-Free Languages, Grammars and Push-Down Automata
  • Turing Machines, Decidability, Recursive and Recursively Enumerable Languages
  • Rice's Theorem, Cook's Theorem, and the Chomsky Hierarchy

If you have not taken a formal theory course before, then you will probably want to take CS380 before attempting CS580.

CS581--Advanced Design and Analysis of AlgorithmsCS302/CS311 CS581 concentrates on techniques for designing algorithms, techniques for analyzing the running times of algorithms, and techniques for showing whether or not a problem is NP-Complete. It also introduces you to some advanced algorithms that we feel you may find useful in your PhD program. Like CS580, CS581 is a homework-oriented course that is every bit as rigorous and time-consuming as CS560. It assumes that you already have had an introduction to proof techniques, such as proof-by-induction and proof-by-contradiction, that you should get in a discrete math course such as CS311. It also assumes that you have had a junior-level data structures and algorithms class where you have been exposed to balanced trees, hash tables, heaps, graphs, and various sorting techniques. If you have not encountered these data structures or algorithms you should consider taking CS302 before taking CS581.
CS380--Theory of ComputationCS311CS380 covers the subjects enumerated above that you should have mastered before taking CS580. If you need to take CS380 make sure that you have had a discrete mathematics class as an undergraduate. If you are not sure whether you have had a discrete mathematics class you probably have not. You can find the course syllabus for our discrete mathematics class, CS311, at http://www.cs.utk.edu/~mclennan/Classes/311/.

Selecting Courses

Your first priority is to take the course courses, and, if you need to take the pre-requisites first, to take them as soon as possible. CS530 and CS580 are typically offered only in the Fall semester and CS560 and CS581 are typically offered only in the Spring semester. CS302, CS311, and CS360 are offered each semester and CS380 is typically offered only in the Spring semester. That means that if you want to take CS580 and have not had a theory of computation class, you will need to take CS380 your first year and then CS580 in the fall semester of your second year. The core classes tend to demand more effort than non-core classes so if you take two core classes in the same semester I would not recommend that you take any other classes that semester.

All incoming graduate students are also expected to take CS300 (This course has been canceled for fall 2006. If you want to take a scripting course you can take CS594--Scripting Languages with Brad Vander Zanden instead). This course meets once a week for two hours during the Fall semester and teaches you about various software tools that will help you in both your GTA responsibilities and in performing and documenting your research. Each week the course assigns you a short lab that gives you some experience with the tool that was presented that week. You will need to ask Donna Bodenheimer (bodenhei@cs.utk.edu) to enroll you in CS300 since we closed the course in order to ensure there would be enough room for incoming graduate students.