Design and analysis of efficient algorithms with emphasis of non-numerical algorithms such as sorting, searching, pattern matching, and graph and network algorithms. Measuring complexity of algorithms, time and storage. NP-complete problems.
Algorithmic problems arise in almost every area of computer science. This course exposes students to a variety of algorithms for problems from various domains. Particular emphasis is on the most basic problems, those that arise in many different applications, such as sorting, graph search, or finding the minimum spanning tree. Students should learn how the speed of algorithms greatly impact their utility. They should learn elementary mathematical techniques to analyze algorithms for correctness, time complexity, and memory use. They should become familiar with the most efficient algorithms for the basic problems. They should learn the most useful methods for designing efficient algorithms, and know how to apply them to new problems.
NOTE: Repeat credit process for cross-reference courses: Students may receive credit for CSE 101 or Math 188. These courses have been cross-referenced, therefore, a petition is not required for using either course when completing major requirements. However, if you fail one of the courses listed about you should take the SAME COURSE for REPEAT CREDIT. If you use another course that is equivalent, the repeat credit is not automatic and you will need to petition for repeat credit.
Most of the course will be mathematical. However, depending on the instructor, there may be additional laboratory projects, requiring the students to implement algorithms and compare their actual performance to their mathematical analysis.
CSE 12, CSE 21or Math 15B or Math 100A or Math 103A and CSE 100 or Math 176 with a passing grade of C- or better. Please see Prerequisites Page.
Credit not offered for both Math 188 and CSE 101. Equivalent to Math 188
Every quarter: Fall, Winter, and Spring.