Next: Material Covered
Up: CS 201: Structures and Discrete
Previous: Prerequisites
The following are the desired outcomes for students in this course; I
will attempt to align assignments and exams as tightly as possible with
these objectives.
However, this list is fairly fine-grained and is not complete.
- Develop code that responds to exception conditions raised during
execution.
- Design, implement, test, and debug simple programs in Java.
- Discuss the properties of good software design.
- Use class browsers and related tools during the development of
applications using APIs.
- Design, implement, test, and debug programs that use large-scale API packages.
- Relate the ideas of mathematical induction to recursion and recursively defined
structures.
- Explain with examples the basic terminology of functions, relations, and sets.
- Perform the operations associated with sets, functions, and relations.
- Relate practical examples to the appropriate set, function, or relation model, and
interpret the associated operations and terminology in context.
- Describe the concept of recursion and give examples of its use.
- Identify the base case and the general case of a recursively defined problem.
- Compare iterative and recursive solutions for elementary
problems such as factorial.
- Implement, test, and debug simple recursive functions and procedures.
- Describe how recursion can be implemented using a stack.
- Determine when a recursive solution is appropriate for a problem.
- Discuss the representation and use of primitive data types and built-in data structures.
- Describe how linked lists, stacks, queues, and hash tables are
allocated and used in memory.
- Describe common applications for linked lists, stacks, queues, and hash tables.
- Compare alternative implementations of data structures with respect to performance.
- Write programs that use each of the following data structures: arrays, records, strings,
linked lists, stacks, queues, and hash tables.
- Choose the appropriate data structure for modeling a given problem.
- Explain the use of big O notation to describe the amount of work
done by an algorithm.
- Use big O notation to give asymptotic upper
bounds on time complexity of algorithms.
- Determine the time complexity of simple algorithms.
- Defend the importance of abstractions, especially with respect
to programming-in-the-large.
Next: Material Covered
Up: CS 201: Structures and Discrete
Previous: Prerequisites
Robert Sloan
2007-01-17