CSE 101 - Design & Analysis of Algorithm - Jones [SP23]

Content Calendar

Lecture Notes

Homework

Discussion/Review Materials

Practice Problems

Extra Resources

Gradescope entry code:

Piazza signup link: https://piazza.com/ucsd/spring2023/cse101

Welcome to CSE 101.

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.

Course Objectives:

  • 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 also a prerequisite. From this class, you should know how to use basic data structures (stack, queue, min/max heap, adjacency list, ....)

Professor:

  •  Miles Jones (mej016@ucsd.edu). 
    • Teaching Nov 8 until Dec 1 
      • Office hours
        • Tuesdays 2:45-4:00 CSE 4208
        • Wednesdays 3:00-4:15 Zoom
      • Lecture: 
        • TuTh
        • 11:00am-12:20pm
        • The Jeannie

 

Discussion:

  • Fridays:
    • 12pm - 12:50pm 
    • 1pm - 1:50pm
    • Mosaic 0114

 

TAs and Tutors 

TAs:

  • Minh Vo (m9vo@ucsd.edu)
    • Office hours
      • Tuesdays & Thursdays 1-2pm, CSE Basement B240A

Tutors:

Lectures:

  •  The lectures will be taught in person The Jeannie  TuTh 11:00-12:20
  •  The lecture slides will be posted before class on the content calendar.
  •  You may interrupt lecture to ask questions, make comments or express doubts.
  •  All lectures will be recorded and posted for students to watch when they want (podcast).

 

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.

 

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 we will make the exam available remotely through gradescope during the same time period.

 

Homework: 

Homework will be assigned on this website and you will upload your homework via Gradescope.

You may work in groups of size 1-4. Late homework will not be accepted.

Your lowest Homework grade will be dropped.

It is required to type your homework. (using latex, word, ....) (Figures can be hand-drawn.)

Points will be taken off for hand-written homework.

 

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). 

Descriptions need to be unambiguous. You should be able to give the description to any other student and have them easily implement a correct program from it. Proofs need to be completely clear, completely unambiguous, and logically compelling, but can be in high-level mathematical English. Time analysis needs to give a true upper bound on the time taken by the algorithm, in O notation. You need not argue that the bound is tight, but your grade will be partially based on how fast you show your algorithm is, not just how fast it really is. So if your algorithm takes time O(n^2) and you claim it is O(n^3), this is also correct, but you will be graded on efficiency as if your algorithm really took Ω(n^3) time. Some relaxation of this rule will apply to problems of a computational nature, where you are merely expected to present a solution and give some informal justification. Such problems will be designated by key phrases such as “Find a solution and justify your answer.”

Latex Resources: See extra resources.

Collaboration Guidelines:

Students are encouraged to collaborate on homework assignments. You may work in groups of up to four students. Your group will submit one assignment and gradescope will give you the opportunity to add all of your group members to the assignment. Groups do not have to be the same people for every assignment. You can change group members any time.

If you are discussing problems with students outside of your group, please only share hints and basic techniques. DO NOT share your answers or allow other students to copy your written work. The bottom line is to submit YOUR OWN work. If we find that your work is too similar to another group's then you may be suspected of an academic integrity violation.

 

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:

35% Homework, 15% for each midterm,  35% Final Exam

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        

 

Textbook:        

    (required text.) Algorithms, by Dasgupta, Papadimitriou, Vazirani        

    (optional text.) Algorithm Design, by Jon Kleinberg, Éva Tardos

Academic Dishonesty:

Academic dishonesty is considered a serious offense at UCSD. Students caught violating the UCSD Policy on Integrity of Scholarship will face an administrative sanction which may include suspension or expulsion from the university. You should read the UCSD Policy on Integrity of Scholarship, especially the Students’ Responsibility section.

Academic integrity will be taken very seriously be the course staff. Breaches of integrity may have broader consequences outside of the assignment in question. The following are considered to be breaches of academic integrity:

    • Collaboration on homeworks beyond the scope outlined in the section above (including sharing of homework solutions with other students before the homework deadline).

    • Collaboration or copying on exams of any kind.

    • Use of aids on tests outside of explicitly allowed materials (this includes copying solutions from previous quarters.)

Use of Outside Resources:

You should not attempt to search for homework solutions online or in sources outside of the course text. If you accidentally stumble upon a homework solution in such an outside source you should cite it in your homework solution. If your solution proves to be too similar to the cited one, you may lose credit on the problem, however failure to cite the other solution will be treated as academic dishonesty.

Diversity and Inclusion

We are committed to fostering a learning environment for this course that supports a diversity of thoughts, perspectives and experiences, and respects your identities (including race, ethnicity, heritage, gender, sex, class, sexuality, religion, ability, age, educational background, etc.).  Our goal is to create a diverse and inclusive learning environment where all students feel comfortable and can thrive. 

Our instructional staff will make a concerted effort to be welcoming and inclusive to the wide diversity of students in this course.  If there is a way we can make you feel more included please let one of the course staff know, via email/discussion board or during/after lecture/office hours.  Our learning about diverse perspectives and identities is an ongoing process, and we welcome your perspectives and input. 

We also expect that you, as a student in this course, will honor and respect your classmates, abiding by the UCSD Principles of Community (https://ucsd.edu/about/principles.html).  Please understand that others’ backgrounds, perspectives and experiences may be different than your own, and help us to build an environment where everyone is respected and feels comfortable.

If you experience any sort of harassment or discrimination, please contact the instructor as soon as possible.   If you prefer to speak with someone outside of the course, please contact the Office of Prevention of Harassment and Discrimination: https://ophd.ucsd.edu/.  

Students with Disabilities

We aim to create an environment in which all students can succeed in this course.  If you have a disability, please contact the Office for Students with Disability (OSD), which is located in University Center 202 behind Center Hall, to discuss appropriate accommodations right away.  We will work to provide you with the accommodations you need, but you must first provide a current Authorization for Accommodation (AFA) letter issued by the OSD. You are required to present their AFA letters to Faculty (please make arrangements to contact me privately) and to the OSD Liaison in the department in advance so that accommodations may be arranged.

Basic Needs/Food Insecurities

If you are experiencing any basic needs insecurities (food, housing, financial resources), there are resources available on campus to help, including The Hub and the Triton Food Pantry.  Please visit http://thehub.ucsd.edu/ for more information.

Course Summary:

Date Details Due