Important Questions about CS473

Why are there separate undergraduate and graduate sections of CS 473?
Successful research in computer science requires a much stronger foundation in the core principles of computing than most students acquire even in the best undergraduate programs (like ours). For this reason, we have much higher expectations for graduate students than for undergraduates.

Fortunately, computer science graduate students generally meet these higher expectations with ease. Most have already taken at least one algorithms class; repeating undergraduate-level material is simply a waste of their time. Graduate students are (self-)selected for their interest, ability, and experience in computer science and their intellectual maturity; even those who haven't had an undergrad algorithms course are more capable of mastering advanced material than most undergraduates.

Until a few years ago, there was only one algorithms class at UIUC, called CS 373, which was required for both undergraduate and graduate students. Grad students always significantly outperformed undergrads in this course. The immediate reason for the split is that the combined class simply became too large to teach effectively. (Some students think 473U and 473G are still too large to teach effectively; it's hard to argue with that.)

Who is teaching each section?
  • In Fall 2006, Jeff Erickson will teach the undergraduate section. The graduate section will not be offered in the fall, partly because of a temporary shortage of theory faculty, and partly because decreasing graduate enrollments make offering the course every semester less of a necessity. Graduate students can satisfy their core theory requirements this semester by taking 475, 476, 571, 477, or 578.
  • Course assignments for Spring 2007 are not yet finalized, but according to the current plan, Jeff Erickson will teach the grdauate section, and Mahesh Viswanathan will teach the undergraduate section.

    Can graduate students take 473U?
    Yes, but probably not for graduate credit. The undergraduate section of 473 does not satisfy the theory requirement for any computer science graduate program at UIUC. Computer science (and ECE) graduate students cannot get graduate credit for the undergraduate section of 473. Other departments may have different policies for their students.

    Can undergraduate students take 473G?
    Yes! In particular, if you are enrolled in the 5-year BS/MS program, you must take 473G (or 475 or 573) to satisfy the theory requirement. If you are considering applying for graduate study in CS at UIUC—either in the 5-year program, the regular MS or PhD programs, or the Internet MS program—you should take 473G. If you take 473U and then later become a graduate student here, you will have to take 475 or 573 to satisfy the theory requirement. I repeat: You cannot get graduate credit for the undergraduate section of 473, even retroactively.

    Mathematically and/or algorithmically mature undergraduates are encouraged to take 473G, even if they are not considering graduate school at UIUC. Every semester I taught the combined 373, at least two of the best five students were undergrads. (The same is true in most of the 500-level theory classes I've taught!)

    However, most undergraduates should take 473U or 475. Based on past performance, I expect nearly half of undergraduate computer science majors at UIUC would not pass 473G. See the more detailed discussion of grading below. If 473G is flooded with undergraduates, a large fraction of them will probably fail. I am quite serious about this. If you are not prepared to take a graduate-level theory class, do not take 473G. You have to decide for yourself, of course—you're an adult—but I would not recommend 473G unless you recieved at least a B+ in 273 and 225 and at least one senior-level mathematics class requiring formal proofs.

    Wouldn't it be better to just have two different course numbers?
    Yes, it would! We're working on it.

    I took 373/473 as a UIUC undergrad. Do I still have to take a graduate theory course?
    If you took 373G or 473G as an undergrad, no. You've already satisfied the graduate theory requirement.

    If you took 373U or 473U as an undergrad, then yes. The undergraduate section of 473 does not satisfy the theory requirement for any computer science graduate program at UIUC, even retroactively.

    There is one annoying bureaucratic hurdle to jump if you have already taken 473U and you want to take 473G. Officially, you can't retake a course that you've already taken, and you've already taken (another section of) 473. To work around this antiquated rule, register for independent study credit with either Jeff or the current 473G instructor. Your independent study project will be to act exactly like a 473G student. This will still satisfy the gradute theory requirement.

    I took an algorithms class somewhere else. Do I still have to take 473G?
    If you took an "advanced" or "graduate" level algorithms class at another university within the last five years, you may already satisfy the graduate theory requirement. To see if you qualify, bring Jeff a copy of your old syllabus (or point to a web page).

    If you only took required undergraduate-level algorithms courses, you must still take a graduate theory course to satisfy the graduate theory requirement. If you think that's a waste of your time, you're welcome to take the proficiency exam.

    How is CS473G graded?
    Letter grades for all students will be determined by the on-campus graduate student grade distribution. Undergraduates and off-campus graduate students will be graded by the same standard as our traditional on-campus graduate students.

    Here's a short version of the grading standard I use:

    • Historically, grades are based on a weighted average of homework (30% total), two midterms (20% each), and a final exam (30%). (The number of midterms and the weights may change.)
    • Anyone with an average above 95% gets an A+. This is the only way to get an A+.
    • Anyone with an average below 50% automatically fails. This is not the only way to fail.
    • For everyone else, the mean is the cutoff between B+ and A-, and every 2/3 standard deviations is 1/3 of a letter grade (B+ vs. A-, for example).
    • Extra credit (if any) is added after the curve.

    Typically, about 45% of graduate students get As (+/-), about 50% get Bs (+/-), and the rest get Cs or Fs. (PhD students require at least a B+ to satisfy the theory core requirement; masters students require at least a B-. Anything below B- is a failing grade in a graduate course.)

    When the class was combined (and called 373), graduate students always performed significantly better than undergrads, despite having more required work with harder material. In Fall 2002, if everyone had been graded according to the graduate curve I just described, about 5% of the undergrads would have As, about 20% of the undergrads would have Bs, and almost 50% of the undergrads would have failed. (In reality, since undergrads were graded on a separate curve, about 25% got As, about 30% got Bs, and less than 5% failed.)

    This disparity was consistent across several years. In light of this past performance, I expect nearly half of undergraduate computer science majors would not pass 473G.

    Okay, how is CS473U graded?
    I use almost exactly the same grading standard as for 473G, but with different constants:

    • Grades are based on a weighted average of homework (30% total), two midterms (20% each), and a final exam (30%). (The number of midterms and the weights may change.)
    • Anyone with an average above 95% gets an A+. This is the only way to get an A+.
    • Anyone with an average below 30%, or a homework average below 50%, automatically fails. This is not the only way to fail.
    • For everyone else, the mean is the cutoff between C+ and B-, and every 1/3 standard deviations is 1/3 of a letter grade (B+ vs. A-, for example).
    • Extra credit (if any) is added after the curve.

    A typical grade distribution is about 25% As, 30% Bs, 30% Cs, 10% Ds, and 5% Fs.

    Boy, you sure do ramble on.
    Is that a question?

    Ack! The course is already full! Is there a waiting list?
    Yes! I will pass around a signup sheet during the first week of class; this is your only opportunity to add your name to the waiting list. Come to class, take notes, do the homework, just like the registered students. Students on the waiting list will be automatically registered as space becomes available, in decreasing order of Homework Zero grade. If you don't turn in Homework Zero, you will not be allowed to register late.

    Two caveats: First, only graduate students (including students in the 5-year master's program) can be on the waiting list for 473G. Second, this waiting list policy is contingent on the approval of the oozing bureaucratic nightmare whose true name cannot be spoken outside the darkest planes of Hell, but which is known to its fragile mortal victims by the dangerously innocuous name "Banner".

    Oh, come on. Banner's not that bad, is it?
    Back, foul demon! Back to the sulphurous fire that spawned you!

    Is there a proficiency exam?
    Yes! Most students may take the regular final exam at the end of the semester as a proficiency exam. Just show up and write PROFICIENCY in large friendly letters across the top of your exam. (If there is enough demand, I may offer a proficiency exam earlier in the semester.)

    • Graduate students: You must get a grade of B- or better to receive any proficiency credit at all, and a grade of A- or better to pass the PhD core requirement. The curve will be determined by the registered on-campus graduate students.
    • Undergraduates: You must get a grade of C- or better to receive proficiency credit and pass the degree requirement. The curve will be determined by the registered students.

    Proficiency grades do not contribute to your GPA or your full-time student status.

    Students who want to take the final for proficiency credit are strongly encouraged to take the midterms as well; your proficiency grade will be determined by a weighted average of the exams you take. The times and locations for the midterms will be announced on the course web page. You may also find the lecture notes and homework problems useful as study material. On the other hand, if you find yourself learning a lot from the lectures and homeworks, why not just take the class?

    A few students are not eligible for proficiency credit:

    • Anyone who has already taken the same section of 473 but whose grade did not satisfy the relevant degree requirement.
    • Anyone who has previously failed a proficiency exam for the same section of 473.

    Finally, please do not wait until your last semester to take the proficiency exam.

    Is is possible to cheat in 473?
    Unfortunately, yes.

    Students in 473 are encouraged to use any printed, online, or living resource at their disposal to help solve the homework problems, provided that each student writes their solutions in their own words and properly credits all sources. If you use something you found in a book or a journal paper, cite it. If you use something you found on the web, cite the web page. If use use an idea you got from anyone else—in person, by email, on the phone, by IM, telepathically, whatever—give that person credit for the idea. This is the same standard of conduct that researchers are expected to follow for formal publications; start following it now. Using multiple sources will not lower your homework grade, as long as they are properly cited.

    Avoiding plagiarism is really very simple: Never present someone else's words or ideas as your own. Repeating ideas from other people, papers, or web pages without giving proper credit is plagiarism. Verbatim duplication of any source is plagiarism, including official homework solutions from previous semesters of 373/473, even if you properly cite your sources. Turning in a copy of someone else's work as your own, even with their permission, is plagiarism. Allowing someone else to copy your work verbatim, or without giving you credit, is also a violation of academic integrity. See Article 1, Part 4 of the UIUC student code (http://www.admin.uiuc.edu/policy/code/article_1/a1_1-402.html) for more information.

    Violations of academic integrity will not be tolerated. Please see the CS department's recomended penalties for cheating offenses (http://www.cs.uiuc.edu/undergraduate/cheating.php). All cheating cases are reported to the department's academic office. Students can be (and have been) expelled for multiple cheating offenses.

    Our higher expectations for graduate students also extend to issues of acedemic integrity. A notice of any cheating offense by a graduate student will be entered into their file, where it will be seen by the student's adevisor, as well as their qual, prelim, and thesis committees. Several faculty members have publicly stated their unwillingness to advise or serve on a committee for a graduate student who has committed even a single cheating offense, no matter how minor or how far in the past. In short, if you cheat as a graduate student, you are signing your own academic death warrant.

    But aren't all pancakes three-dimensional?
    Oh, shut up.