Hi, welcome to CS141! The course explores basic algorithm/data structure design and analysis. The topics cover general algorithm design techniques including analysis of algorithms, divide-and-conquer, the greedy method, dynamic programming, graph algorithms and basic parallel algorithms. It integrates knowledge of data structures, algorithms, and programming.

We will use CampusWire for online discussions, and GradeScope to submit homework assignments. The invitation will be sent to your emails at the beginning of the quarter. These are for both sessions. The course announcements will be sent via Canvas or CampusWire, so please make sure you enable email notifications from these systems.

You will likely find this course to be difficult. There are several reasons why. First, Computer Science and Engineering are challenging disciplines requiring extensive time to master, and algorithm is the core of it. Second, the material covered in the course, combines both theory (analysis of algorithms) and practice (implementing them), and thus require you to have solid background in both math and programming. Third, this course will require generating your own algorithms in addition to just memorizing and understanding existing algorithms. If you don’t know programming, then there will also be the additional overhead of learning coding, and you should start learning it immediately. There are many online resources for doing so.

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: CS014 (10C) with “C-” or better; CS111; MATH009C or MATH09HC; proficiency in C++ (or some other high-level programming languages).

Instructors:

  • Yan Gu (Session I)

    - Email: ygu [at] cs.ucr.edu
    - Lectures: Tue & Thu 2:00 – 3:20 PM
    - Classroom: BRNHL B118
    - Office: WCH 335
    - Office Hour: TBD
  • Yihan Sun (Session II)

    - Email: yihans [at] cs.ucr.edu
    - Lectures: Tue & Thu 6:30 – 7:50 PM
    - Classroom: MSE 104
    - Office: WCH 308
    - Office Hour: TBD

TAs:

  • Xiaojun Dong

    - Email: xdong038 [at] cs.ucr.edu
    - Office: TBD
    - Office Hour: TBD
  • Letong Wang

    - Email: lwang323 [at] cs.ucr.edu
    - Office: TBD
    - Office Hour: TBD

A Quick Note about emailing course staffs

Please remember that this is a large class and refrain from unnecessarily emailing course staff. They are likely to be ignored (although usually unintentionally), or you may get a response very late if that person is busy at that time. We recommend you to post on CampusWire that is visible only to TAs and instructors, and thus anyone seeing the post can reply. You could (and should) email instructors privately in cases that require privacy.

Discussions:

  • Mon, 5:00 - 5:50 PM, 7:00 - 7:50 PM, 9:00 - 9:50 AM
  • Thu, 10:00 - 10:50 AM

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]

Prerequisite knowledge in the book that will not be taught in this course: Please make sure you understand Sections 6, 10-13, and 22.1-22.3 in the book.