Welcome to CSE 101. CSE 101 is intended to introduce you to useful methods and concepts for designing and analyzing algorithms.
You will become familiar with algorithms for classical and modern problems and learn how to analyze their correctness, running time, optimality, and worst-case behavior.
In this course, you will learn about:
We look forward to guiding you through the foundations of algorithmic
thinking and problem solving.
Oliver Braun
Analyzing running time and proving correctness are essential for understanding how an algorithm works and how efficiently it solves a problem. In this section, we study one classical minimization problem and one classical maximization problem. We examine how complete enumeration can be improved through branch-and-bound and how dynamic programming can yield pseudo-polynomial-time algorithms, even for NP-hard problems.
Content:
Packing and scheduling problems arise frequently in industrial applications, including production planning. We study how to prove the optimality of greedy algorithms and how to analyze the worst-case performance of approximation algorithms.
Content:
Divide-and-conquer is a powerful algorithm-design technique that can significantly improve running times. We study classical examples and analyze both correctness and efficiency.
Content:
Linear programming is a widely used mathematical tool for solving optimization problems in industry. We study graphical solutions, the Simplex algorithm, and the interpretation of information contained in a final Simplex tableau.
Content:
Graph algorithms are central to many real-world applications. We examine how graph structure can be exploited to improve algorithmic performance, how dynamic programming solves the all-pairs shortest-path problem, and how heuristics can be used for vehicle-routing problems.
Content:
Why are some computational problems inherently difficult? We study the distinction between optimization and decision problems, reductions between problems, and the concepts of NP-hardness and NP-completeness.
Content:
Lecture slides and relevant supporting material will be made available on Canvas. Students may earn bonus points through selected activities conducted during lecture.
In the TA-led discussion sections, we will primarily work through problems from previous exams. These discussion sections are intended to help you prepare directly for the types of problems, proofs, and algorithmic techniques expected on the midterm and final exam.
Optional homework problems will be provided for additional practice. They may explore selected topics in greater depth and go beyond the exam-focused problems discussed in the TA-led discussion sections. The homework is not required and is not graded as a regular assignment. Written solutions will be published, and selected problems will also have solution videos on Canvas.
CSE 101 includes three programming assignments worth 60 course points in total. The programming assignments provide practical experience with the implementation, testing, and analysis of algorithms and form part of the regular course score.
The instructions for each programming assignment will specify the task, submission requirements, permitted programming languages and tools, deadlines, collaboration rules, and documentation requirements.
We expect that all students will need help at some point during the course. If you have questions after attending lecture or discussion, after reviewing the homework solutions and solution videos, or while working on a programming assignment, you are encouraged to attend office hours.
The instructor, TAs, and tutors are available to help you understand the course material and develop effective problem-solving and programming strategies.
We will use Canvas to provide:
We will use Piazza for course announcements and questions related to the course. When you have a question that may also be relevant to other students, please post it on Piazza rather than emailing the instructional team. This allows everyone to benefit from the response.
Constructive contributions on Piazza may earn bonus points.
Your regular course score is based on the following assessments:
| Assessment | Points |
|---|---|
| Midterm exam | 50 |
| Final exam | 150 |
| Programming assignments | 60 |
| Total | 260 |
Programming assignments 1, 2, and 3 are due on Friday of Weeks 3, 4, and 5, respectively, at 10:00 p.m. Pacific Time. Each assignment is graded out of 100 points. The assignment score is divided by 5 when calculating the regular course score, so each programming assignment contributes up to 20 course points.
Students may earn bonus points through:
The total number of bonus points is capped at 21 points, corresponding to approximately 8% of the 260 regular course points.
Your final course percentage is calculated as 100 × (exam points + programming-assignment points + bonus points) / 260. Bonus points are added to the regular course score, while the denominator remains 260. Consequently, the final course percentage may exceed 100%.
Letter grades will be assigned according to the following scale:
| A+ | A | A- | B+ | B | B- | C+ | C | C- |
|---|---|---|---|---|---|---|---|---|
| 95 | 90 | 85 | 80 | 75 | 70 | 65 | 60 | 55 |
These grade thresholds may be lowered after the overall distribution of course scores has been reviewed, but they will not be raised.
Both exams will be conducted in person.
You may use one handwritten note sheet, prepared either on paper or on a tablet and then printed:
You may also use a calculator, but no other assistance of any kind.
Please write your name on the note sheet. The note sheet must be submitted together with your exam.
Requests for regrades must be made by returning the exam to the instructional team on the day it is handed back, before taking it away.
Academic integrity is essential for supporting learning and teaching at UC San Diego. The academic integrity requirements for CSE 101 supplement those described in the UC San Diego Academic Integrity Policy and the Academic Integrity Pledge. Academic integrity violations will be taken seriously and reported to the Academic Integrity Office.
Key facts about academic integrity related to CSE 101:
Unless the instructions for a particular assignment state otherwise, generative artificial intelligence tools that produce or revise text or code, including ChatGPT, Claude, Google Gemini, GitHub Copilot, and similar tools, may be used for programming assignments. They may not be used for the midterm or final exam.
The use of generative AI is permitted because learning to use such tools critically and responsibly is relevant to professional work in computer science. However, all use of generative AI must be honest, cited, and documented.
If you use generative AI for a programming assignment, you must identify and cite the tool or tools used and include a separate one-page AI usage statement with your submission. The statement must:
Generative AI tools may fabricate information and may produce incorrect, inefficient, insecure, or biased code or explanations. You are fully responsible for the content and accuracy of everything you submit, including work supported by generative AI.
You must understand your submitted code and be able to explain its design, the algorithms and data structures used, its implementation, correctness, running time, and any use of generative AI during its development.
The instructor reserves the right to follow up with a student to assess orally the process used to complete a programming assignment and the student's understanding of the submitted work. An inability to explain submitted code may lead to further review of the student's work. Failure to document AI use honestly may result in the matter being reported to the Academic Integrity Office.
You may discuss programming assignments with other students, but you may not share complete solutions or code with other students before the deadline. Except for uses of generative AI explicitly permitted in this policy, your submitted solution, explanations, and code must be your own work. You must list all students with whom you discussed an assignment and cite all outside resources used.
Do not search for, copy, or use complete solutions to the programming assignments from online repositories or other unauthorized sources. General programming documentation and other resources explicitly allowed by the assignment may be used, provided that they are properly cited.
Do not make programming assignments, assignment solutions, or programming-assignment code publicly available in any repository, website, or other online platform unless explicitly authorized by the instructor.
Parts of this academic integrity guidance were adapted from course materials developed by Mia Minnes for CSE 25.
Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani,
Algorithms, McGraw-Hill.
The instructional team for CSE 101 is here to help you. You can find us in lecture, TA-led discussion sections, office hours, and on Piazza.
The IDEA Engineering Student Center provides academic enrichment, community-building, and student support programs for engineering and computer science students.
The Teaching and Learning Commons provides academic support services, including tutoring, support with learning strategies, and other student-success programs.
We are committed to fostering a learning environment that supports a diversity of thoughts, perspectives, backgrounds, identities, and experiences. Our goal is to create an inclusive learning environment in which all students feel respected and are able to participate and succeed.
The instructional team will make a concerted effort to be welcoming and inclusive. If there is a way in which we can make the course more accessible or inclusive, please contact a member of the instructional team in person or through a private message.
We expect everyone in the course to honor and respect their classmates and to follow the UC San Diego Principles of Community. Other students' backgrounds, perspectives, and experiences may differ from your own. Please help us create an environment in which everyone is treated with respect.
If you experience harassment or discrimination, you may contact the instructor or the Office for the Prevention of Harassment & Discrimination.
We aim to create an environment in which all students can succeed. Students who may need disability-related accommodations should contact the Office for Students with Disabilities as early as possible.
Once the Office for Students with Disabilities has issued an Authorization for Accommodation (AFA) letter for this course and it has been shared with the instructor, please contact the instructor privately to discuss the implementation of the approved accommodations. Because arrangements may require advance coordination, please begin this process as early as possible.
Students who are experiencing difficulties related to food, housing, or financial security are encouraged to use the resources provided by the UC San Diego Basic Needs Center. Seeking assistance will not affect your standing in this course.