diff --git a/docs/Course Wiki/CS Course Offerings/CS473.md b/docs/Course Wiki/CS Course Offerings/CS473.md new file mode 100644 index 0000000..032ce6d --- /dev/null +++ b/docs/Course Wiki/CS Course Offerings/CS473.md @@ -0,0 +1,74 @@ +--- +tags: +- Theoretical computer science +--- +# CS473 + +CS473 is a really hard algorithms course. CS473 is an algorithm course aimed at advanced undergraduates and graduate students in computer science and related disciplines. The course is officially cross-listed as MATH473 and CSE414. + +## Content Covered +The course covers a wide rang eof algorithm design and analysis techniques. +- Fast Fourier Transform +- Advanced dynamic programming +- Randomized algorithms +- Hashing, filtering, and streaming algorithms +- Optimization: Maximum flows minimum cuts, Linear programming +- NP-hardness and related lower bounds +- Approximation algorithms + +## Prerequisites + +- [CS374](./CS374A.md) or [ECE374](../ECE%Course%Offerings/ECE374B.md) + +You should be confident in skills taught in CS173 (induction) and CS225 (graphs and recursive alogirhtms). + +- (Recommended) [ECE313](../ECE%Course%OFferings/ECE313.md) or equivalent probability course. + +## When to Take it +- If you are an undergraduate who has taken CS374, you are in the right place! Welcome! +- If you are an undergraduate who has not taken CS374 or an equivalent course, you are in the wrong place. You really do need to take CS 374 first. +- If you are a graduate student in computer science or a related discipline, you are in the right place! Welcome! +- If you are a graduate student without a strong undergraduate background in computer science, you might still be in the right place. Welcome! Past experience suggests that a strong background in proof-based mathematics is more important for success in this class than programming experience. If you have any concerns, please talk to Jeff or Makrand as soon as possible. +- Finally, if you want an easy A, you are probably in the wrong place. + +## Course Structure + +Course structure varies slightly by semester, for up to date or historical information, check the Instructors subsection. +### Lecture + +CS473 usually has lecture on twice a week for 75 minutes. Attendance is optional and lectures are recorded. Some students prefer to watch Professor Jeff Erickson's CS374 lecture videos instead, which are available on youtube, and listed in [Resources](#resources). + +### Homework + +CS473 has a homework assignment during each non-exam week, which students may submit in groups of up to three people. Assignments consist of 3-4 problems and can be difficult, so it is beneficial to start early. Typically, external resources are allowed but must be cited properly. There are usualyl around 11 homeworks per semester. Although you can only submit homeworks in groups of three, you may still work with others and use any outside source, as long as you cite it. This means you can talk with other groups about homework solutions, as long as your group writes your own solutions in your own words. + +### Exams and Grading + +CS473 has two midterms and one final, and typically does not curve exam scores. Each midterm is worth 21% and the final is worth 30%. The remainder comes from homework scores (one GPS is equal to one homework problem). The lowest 4-7 (dependent on professor) homework problem scores over the semester are not included in grade calculation. The cutoffs for the letter grade are slightly lower than standard (e.g. >=90 for A, >=85 for A-, >=80 for B+, etc), and the final letter grade is curved based on the mean and standard deviation. + +## Instructors + +The instructors for CS473 rotate between CS theory staff (course websites linked), recently this has been: +- Timothy Chan: https://courses.grainger.illinois.edu/cs473/sp2025/ +- Jeff Erickson co-teaching with Makrand Sinha: https://courses.grainger.illinois.edu/cs473/fa2024/staff.html + +## Course Tips + +It is important to work on homework assignments as a group, with others you work well with. Some groups prefer to solve problems together, while others prefer to break up the problems between members. Whichever approach you take, make sure to understand the solutions to every homework problem, because they may contain techniques that will be useful on exams. +Using LaTeX is strongly recommended, at this point if you are taking this class, you should probably know how to use overleaf and write LaTeX. + +Office hours are very helpful, you will find lots of other students at office hours which you can openly discuss approaches to homework questions with. TAs or professors will usually go over the general idea of the homework problems and provide useful hints. Q/A platform (Edstem, Discord) is also important since course staff will answer questions and make announcements related to the course. + +The course is usually curved generously, specific cutoffs can be found on the course websites. Do not feel discouraged or dissapointed if the first exam or few homeworks do not go as well as you are used to doing. You may still end up with an A or B in the course. +## Life After +Blargh + +## Infamous Topics + +- Randomized Algorithms: If you don't have a strong probability background, you may find this section of the course (and midterm 2) quite difficult. + +## Resources + +- [Professor Erickson's Textbook](https://algorithms.wtf) +- [Professor Erickson's Lectures](https://www.youtube.com/watch?v=A289028I8tc&list=PL0v718LJg-7_4Zwx3CE7kZ398mhlB2TqF) +- [LaTeX DFA generator](https://madebyevan.com/fsm/) (especially useful on the first three homework assignments)