Note: If you are on the waitlist of CS218, and you seriously plan to take the course, please 1) send me an email, so I can send you all materials before you are officially enrolled, and 2) also work on the entrance exam on CodeForces (again send me an email and I’ll provide you the link), to make sure that your background is sufficient for the course.
Hi, welcome to CS218! 🎉
The course covers efficient algorithms and data structures for problems from a variety of areas such as sorting, searching, selection, linear algebra, graph theory, and combinatorial optimization. It will also cover techniques for algorithm design (greedy, divide-and-conquer, dynamic programming) and rigorous proofs of correctness and time- and space-complexity (amortized analysis, Master Theorem). In addition, we will also put a strong emphasis on the practice. In the course, we will consider both design and analyze the interesting algorithms in theory, and include some trainings to implement them!
⏰ Lectures: MWF 2:00 – 3:20 PM
🏫 Classroom: Student Success Center (SSC) | 235 [map]
We will use
- Campuswire for sending annoucements and online discussions.
- GradeScope to submit homework assignments.
- CodeForces to test coding assignments.
The course announcements will be sent via Campuswire, so please make sure you enable email notifications. ⚠ If you have not been enrolled in the system, send me an email (yihans [at] cs.ucr.edu) and I’ll add you to Campuswire, so that you won’t miss any important notifications.
⚠ You will likely find this course difficult. It is thus important for you to mentally prepare yourself for a difficult course. If you do your work, we are confident that you will finish this class with a satisfactory grade, and will one day (if not immediately) find what you learned in this course useful in your career (and fun, hopefully).
Please make sure you understand the policy of the course, especially about Academic Integrity.
✅Prerequisites: Upper level undergraduate algorithm course (CS141 or equivalent); proficiency in at least one high-level programming language. Proficiency with C++ is highly recommended.
If you want to understand whether CS218 (or this CS218) is the class you want to take, or learn how to prepare for the class, check the FAQ here.
Instructor:
-
- ✉ Email: yihans [at] cs.ucr.edu
- Office: WCH 308
TA:
-
Ziyang Men
- ✉ Email: zmen002 [at] ucr.edu
-
Zijin Wan
- ✉ Email: zwan019 [at] ucr.edu
🗓 Calendar:
You can add the this to your Google Calendar if you want (by clicking the little “+” bottom right). All the lectures and assignment deadlines are included in this calendar.
📘Textbook:
Introduction to Algorithms (CLRS).
Third Edition. Cormen, Leiserson, Rivest, and Stein. MIT Press.
[UCR Library Link]
We will cover many other interesting topics that are not in the textbook.