This class is about algorithms. There are two main goals; introducing students to common algorithms and analyzing their runtime and correctness, and developing broad problem solving techniques related to the algorithms we discuss.
We will concentrate on general techniques that have been used to develop and analyze efficient algorithms for a wide variety of applications. We organize algorithms by technique, rather than application domain. Students will be expected to master these techniques, not just to understand the standard algorithms, but to design new algorithms using similar methods.
We shall cover the most widely used algorithm techniques in depth: Graph Algorithms (DFS/BFS/etc.), Greedy Algorithms, Divide and Conquer Algorithms, Dynamic Programming Algorithms, and Hill-climbing (e.g.,Max Flow). We will also give a quick introduction to Complexity, especially NP-completeness and its consequences for algorithm design.
There is no particular programming language you need to know for this class since most of the content is based on pseudocode. That being said, there will be some optional exercises in python using Jupyter notebooks.
Learning outcomes:
Write clear high-level and implementation-level descriptions of algorithms.
Write clear justifications of correctness and clear runtime analysis of algorithms.
Demonstrate familiarity with common algorithms and data structures.
Trace common algorithms on simple examples to gain familiarity.
Analyze the runtime and correctness of algorithms.
Develop algorithmic problem solving techniques for novel problems based on common algorithms, data structures and design paradigms (including divide and conquer, dynamic programming, greedy algorithms...).
Prerequisites
The main prerequisites for this class are CSE 21 and CSE 20 (mainly CSE 21). From CSE 20, you should know basic proof techniques (especially induction) and basic logical reasoning. From CSE 21, you should know basic algorithm analysis, graph theory, and basic probability.CSE 100 is not a prerequisite anymore but it used to be. From this class, it is nice for you to know how to use basic data structures (stack, queue, min/max heap, adjacency list, ....) but is not necessary.
Office hours and One-on-One sessions
The instructor, TAs and tutors will hold office hours (locations TBD). During office hours, you can ask questions about lecture or homework. There may be other students there from different groups. It is okay to share some strategies and hints but it is discouraged to share your answers directly with other students. Office hours are a great way to get ideas and hints on how to start and finish the homework. This class is challenging and it is recommended to attend office hours in order to succeed.
One on one sessions are 30 minute sessions that you can sign up for to meet one-on-one with a TA or tutor. (Or, if you like, you can schedule a session for your whole group.) One-on-one sessions are not intended for discussing the current homework assignment, they are for discussing previous homeworks and lectures. They are designed to help students who may feel behind in the class and want to revisit some concepts from previous lectures.
Lectures
The lecture slides will be posted before class on the content calendar link.You may interrupt lecture to ask questions, make comments or express doubts (Please raise your hand and [In case of emergency, I may have to teach remotely. In which case:] for those via zoom, you can use the chat feature. There will be TAs monitoring the zoom chat.)
All lectures will be recorded and posted for students to watch when they want on podcast.ucsd.edu.
If I have to teach remotely then you are not required to have a webcam.
Course Resources:
Gradescope (link on canvas sidebar)
Gradescope entry code: EJG8RX
Piazza (link on canvas sidebar)
Textbooks:
(required text) Algorithms, by Dasgupta, Papadimitriou, Vazirani
(optional text.) Algorithm Design, by Jon Kleinberg, Éva Tardos
Coursework and grades:
Assignments/Graded work:
Your grade will be based on the following:
Homework
2 Midterms
1 Final Exam
Homework:
Homework solutions should be typed (NOT HANDWRITTEN) and turned in through Gradescope by 11:59pm on the due date. You will be able to look at your scanned work before submitting it. Please ensure that your submission is legible or your homework may not be graded. You may resubmit updated versions of your homework up until the deadline. Only your most recent Gradescope submission will be graded.
Late Homework:
You may hand in your homework up to 24 hours late with a penalty of 1 point.
Regrade Policy:
Please make regrade requests on gradescope. Regrade requests should be open for 4 days. The entire problem will be reevaluated so grades may go down. Please only make a regrade request if you believe that the assignment was graded incorrectly. If you would like to understand how the assignment was graded please book a one-on-one session or bring it up during office hours.
Standards for HOMEWORK assignments:
Most required assignments will be mathematical or theoretical in nature, involving designing and analyzing an algorithm. Although some assignments will require students to design and analyze pseudo-code programs, no implementation will be needed to complete these assignments. However see below for algorithm experiments. Grading of all problems (homework and exam) will be both on the basis of correctness and on logical consistency and completeness, i.e., “mathematical style”. It is your obligation to provide a compelling argument that forces the reader to believe the result, not just notes from which an argument could be constructed. In particular, the correct formulas or pseudo-code are not a complete solution by themselves; their significance and the logic of their application need to be explained.
When giving an algorithm, the following three things should always be included, unless the problem explicitly says not to:
- a clear and complete description of your algorithm, including a high-level description;
- a correctness proof, showing why the algorithm solves the problem in question;
- a time analysis, giving the worst-case run-time (up to order, in O-notation).
Latex Resources: See extra resources.
Midterms:
There will be two midterms.
Test 1: Graph algorithms
Test 2: Greedy and Divide and conquer
There is an option to drop your lowest midterm score and have the final exam count for more.
Each midterm must be taken during the class time. For extenuating circumstances, if you are unable to physically come to class, then please let me know.
Final Examination:
The final examination will be held at the date and time stated in the course calendar. It is your responsibility to ensure that you do not have a schedule conflict involving the final examination.
Final Grade:
The final grade will be computed by taking the maximum of the two schemes:
Grading option 1: 35% Homework, 15% MT1, 15% MT2, 35% Final Exam
Grading option 2: 35% Homework, 20% best midterm, 45% Final Exam
Tentative Grade Scale: Your final grade will be based on the following scale. (You will earn the grade in the table based on your numerical score or higher.)
A+ A A- B+ B B- C+ C C-
97 93 89 85 81 77 73 69 65
Late or Missed Assignments/Missed Exam Policy
Late Homework:
You may hand in your homework up to 24 hours late with a penalty of 1 point.
Exams:
Other than extenuating circumstances, there is no credit for late or missed exams.
Technology Policy
For homework assignments and for exams, you are permitted to use calculators. (See the section on Academic integrity for more details.)Outside Tutoring
Individuals are not permitted to approach students to offer services of any kind in exchange for pay, including tutoring services. This is considered solicitation for business and is strictly prohibited by University policy.Academic Integrity
In this course we expect students to adhere to the UC San Diego Integrity of Scholarship Policy. This means that you will complete your work honestly, with integrity, and support an environment of integrity within the class for which you are tutoring. Some examples of specific ways this policy applies to CSE 21 include:- Do not discuss solutions to homework problems with people besides your homework partner (except during office hours, with the instructional team).
- Do not share written solutions with other groups.
- Do not collaborate or copy exams.
Follow the golden rule for Academic Integrity: Always give credit for any outside help on any assignment, except for those whose job it is to help you (Instructors, TAs, tutors, the textbook, your teammates, and class handouts.)
Note on ChatGPT and other GenAI software: Inputting homework or exam questions into ChatGPT or any other GenAI software and turning in the answer that is given is considered an Academic integrity violation. As with any other resource, I expect your words and work to be your own.
Please let me know if you have any questions about these guidelines and if you are unsure if something is considered a violation, you can always ask.