This is a LASC course and can be taken to satisfy the Quantitative Reasoning Across the Curriculum requirement.
Introduces time complexity and covers fundamental data structures: lists, stacks, queues, search trees, dictionaries, priority queues, B-trees and inverted files.
Karl R. Wurst
Worcester State University
Upon successful completion of this course, students will be able to:
- Trace, Code, compile, test and debug fairly large multi-module Java programs given a program design/specification by choosing an appropriate data structure (Emphasis)
- Evaluate algorithms, selecting from a range of possible options, providing justification for that selection, and implementing the algorithm in a particular context. (Emphasis)
- Evaluate the best, average, and worst case behaviors of an algorithm using Big O notation (Introduction)
- Classify algorithms as constant, logarithmic, linear, quadratic, and exponential complexity and compare their performance (Introduction)
- Measure the performance of algorithms empirically (Introduction)
- Write Java programs that use the following data structures: lists, binary search trees. Priority queues, balanced trees (Emphasis).
- Discuss how various data structures improve program structure, software quality, and programmer productivity (Emphasis)
- Explain how Java programming language implementations organize memory into global data, text, heap, and stack sections and how features such as recursion and memory management map to this memory model (Mastery)
- Use a version control system to commit and revert changes on a single-user repository (Emphasis)
- Document code for other programmers, users of modules, users of programs (Emphasis)
- Construct and debug programs using the standard libraries available in Java programming language (Emphasis)
- Compare multiple designs or implementations for a problem using various data structures. (Emphasis)
This course will: