Goals and Outcomes
Goals
- Learn several well-known algorithms.
- Learn some of the major algorithm design techniques.
- Continue study of data structures and, in particular, their relation to algorithms.
- Gain experience in implementing algorithms that are described abstractly.
- Study abstractions of a computer that permit simplified analysis of the running times and other
characteristics of algorithms.
- Develop the ability to perform simple analyses of algorithms using such abstractions.
- Understand the growth rates of functions and learn how to bound functions that describe running
times and other properties of algorithms.
- Understand the basics of computational complexity classes, and the class of NP complete problems.
- Gain experience in conducting and documenting experimental studies.
- Improve programming skills.
- Improve communication skills, with particular emphasis on written communication and, further,
well-written programs.
Student Learning Outcomes
Upon successful completion of this course, students should be able to
- List well-known algorithmic problems and explain them in abstract and concrete forms.
- Explain the workings of well-known algorithms (and associated data structures) for solving such
problems.
- Describe various algorithm design techniques and the kinds of problems they address.
- Explain the benefits and drawbacks of different abstractions, and understand how they map to actual
computing environments.
- Perform simple analyses of algorithms.
- Determine suitable algorithms for solving a given concrete or abstract problem by connecting it to
well-known abstract problems.
- Explain the significance of the class of NP-complete problems and recognize members of that class.
- Effectively read suitable publications related to the topic.
- Use resources such as others’ code and writing in an ethical and professional manner.
- Contribute to the body of knowledge at an undergraduate level.
- Analyze the running times of programs and abstractly described algorithms using simple methods.
- Perform simple experimental studies of programs.
- Program with attention to community standards and good practices.
- Communicate their programming work effectively.
- Meet Quantitative Literacy General Education requirements, such as being able to [following text is
from U. Maine Gen. Ed. documents]:
- Translate problems from everyday spoken and written language to appropriate quantitative
questions.
- Interpret quantitative information from formulas, graphs, tables, schematics, simulations, and
visualizations, and draw inferences from that information.
- Solve problems using arithmetical, algebraic, geometrical, statistical, or computational methods.
- Analyze answers to quantitative problems in order to determine reasonableness. Suggest
alternative approaches if necessary.
- Represent quantitative information symbolically, visually, and numerically.
- Present quantitative results in context using everyday spoken and written language as well as
using formulas, graphs, tables, schematics, simulations, and visualizations.