Generated on Tue Oct 25 10:19:18 2022
CS 343: Algorithm Design and Implementation (JSON)
Catalog description: This course introduces the basic knowledge of designing classical algorithms and implementing these algorithms using a programming language. In particular, the course teaches various data structures, including graphs and balanced binary search trees, and efficient schemes to implement these data structures. This course also teaches basic algorithm design techniques including divide-and-conquer, greedy scheme, and dynamic programming. This course covers graph algorithms, including graph traversals (depth-first search and breadth-first search), connectivity, shortest paths, and minimum spanning trees.
Prerequisites: At least a C- in C S 272, or Consent of Instructor. (Catalog Link)
Credits: 3 (3)
Coordinator: Huiping Cao
Textbook: Algorithms, by Robert Sedgewick and Kevin Wayne, Addison-Wesley (4th edition). ISBN: 978-0-321-57351- 3.
(also: Course handouts)
BS degree role: elective
Course Learning Objectives
- LO1: Be able to use and implement sorting algorithms
- LO2: Be able to design and implement graph algorithms
- LO3: Be able to design and implement algorithms using the divide-and-conquer technique
- LO4: Be able to design and implement algorithms using the greedy technique
- LO5: Be able to design and implement algorithms using the dynamic programming technique
- LO6: Be able to use and implement balanced search trees
- LO7: Be able to use and implement hashing techniques
- LO8: Be able to perform the run time analysis of basic algorithms using Big O notation
Course Practicum Requirements
- Be proficient in writing, debugging, and running Java or Python programs
- Be proficient in writing self-defined classes and functions using Java/Python
- Be proficient in utilizing other self-defined classes and functions using Java/Python
- Be proficient in running Java/Python program from command line tools and take arguments from command line
- If utilizing Java, be proficient in utilizing basic data structures such as ArrayList, Vector, and Queue
- If utilizing Python, be proficient in utilizing all the Python data types and Python list, tuple, set, and dictionary, and queue data structures
- Be proficient in utilizing Java/Python libraries for reading/writing files, getting system time, and generating random numbers
Course Topics
- Sorting algorithms
- raph algorithms (breadth-first search, depth-first search, shortest path finding, minimum spanning trees)
- Divide-and-conquer algorithms
- Greedy algorithms
- Dynamic programming algorithms
- Balanced trees
- Hashing
Course Improvement Decisions
(Course improvement decisions or recommendations from past assessments)
- none
ABET Outcome Coverage
(Provide Mapping to ABET Student Outcomes)
- TBD
Other Notes
(Any important notes or issues to consider)
- none