next up previous
Next: Material Covered Up: CS 201: Structures and Discrete Previous: Prerequisites

Learning Objectives

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.

  1. Develop code that responds to exception conditions raised during execution.

  2. Design, implement, test, and debug simple programs in Java.

  3. Discuss the properties of good software design.

  4. Use class browsers and related tools during the development of applications using APIs.
  5. Design, implement, test, and debug programs that use large-scale API packages.

  6. Relate the ideas of mathematical induction to recursion and recursively defined structures.

  7. Explain with examples the basic terminology of functions, relations, and sets.

  8. Perform the operations associated with sets, functions, and relations.

  9. Relate practical examples to the appropriate set, function, or relation model, and interpret the associated operations and terminology in context.

  10. Describe the concept of recursion and give examples of its use.

  11. Identify the base case and the general case of a recursively defined problem.

  12. Compare iterative and recursive solutions for elementary problems such as factorial.

  13. Implement, test, and debug simple recursive functions and procedures.

  14. Describe how recursion can be implemented using a stack.

  15. Determine when a recursive solution is appropriate for a problem.

  16. Discuss the representation and use of primitive data types and built-in data structures.

  17. Describe how linked lists, stacks, queues, and hash tables are allocated and used in memory.
  18. Describe common applications for linked lists, stacks, queues, and hash tables.

  19. Compare alternative implementations of data structures with respect to performance.

  20. Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash tables.

  21. Choose the appropriate data structure for modeling a given problem.

  22. Explain the use of big O notation to describe the amount of work done by an algorithm.
  23. Use big O notation to give asymptotic upper bounds on time complexity of algorithms.
  24. Determine the time complexity of simple algorithms.

  25. Defend the importance of abstractions, especially with respect to programming-in-the-large.


next up previous
Next: Material Covered Up: CS 201: Structures and Discrete Previous: Prerequisites
Robert Sloan 2007-01-17