This page presents course-level and module-level outcomes. Outcomes identify what students will know and be able to do if they master the material.
Use and implement abstract data types such as lists, stacks, queues, and trees.
Select the appropriate searching or sorting algorithm based on the algorithm’s behavior.
Develop recursive algorithms and programs.
Use standard libraries or packages as well as advanced object-oriented programming techniques (polymorphism, inheritance, and encapsulation).
Produce robust and secure programs using exception handling and extensive program testing.
Understand the goals, structures, and procedures for learning in ICS 211.
To learn basics of programming with a modern programming language, Java.
To learn and uses the basics of algorithm analysis, including big-O notation.
To learn and understand the array standard data structure. Know the standard interface for an Array.
To learn and implement standard algorithms for sorting arrays.
To understand Java collection classes and the basics of memory management.
To learn and implement the List standard data structure. Know the standard interface for a List.
To learn and implement the Iterator and Iterable. Know the standard interface for an Iterator and Iterable.
To learn and implement the Queue standard data structure. Know the standard interface for a Queue.
To learn and implement the Stack standard data structure. Know the standard interface for a Stack.
To learn and implement the Tree standard data structure.
To learn and implement the Hash Map standard data structure. Know the difference between open addressing and chained maps.
To understand recursion and how to develop recursive algorithms and programs.
To learn and implement standard algorithms for searching.
An ability to apply mathematical foundations, algorithmic principles, and computer science theory to the modeling and design of computer-based systems.
An ability to define the computing requirements of a problem and to design appropriate solutions based on established design principles and with an understanding of the tradeoffs involved in design choices.
An ability to use sound development principles to implement computer-based and software systems of varying complexity, and to evaluate such systems.
An ability to use current techniques, skills, and tools necessary for computing practice.
The student will:
Referencing modules: Java Review, Simple Sorting Algorithms, Midterm Exam 1, Midterm Exam 2, Final Exam
Assessed by: Q01: Practice, Q02: Java Review, Q03: Person Class, Q04: Inheritance and interfaces, A01: Sorting Arrays, Q05: Sorting Arrays, A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, A04: List Iterators, Midterm 1, A05: Postfix Calculator, A06: CircularArrayQueue, A07: Recursion, A08: BinarySearchTree, Midterm 2, A09: HashMap Assessment, A10: Complex Sorting Assessment, Final Grade Assessment, Final Exam Assessment
The student will:
Referencing modules: OOP and Class Hierarchies, Simple Sorting Algorithms, Midterm Exam 1, Midterm Exam 2, Final Exam
Assessed by: Q03: Person Class, Q04: Inheritance and interfaces, A01: Sorting Arrays, A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, A04: List Iterators, Midterm 1, A05: Postfix Calculator, A06: CircularArrayQueue, A07: Recursion, A08: BinarySearchTree, Midterm 2, A09: HashMap Assessment, Final Exam Assessment
The student will:
Referencing modules: Big-O Notation, Midterm Exam 1, Midterm Exam 2, Final Exam
Assessed by: A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, Q06: ArrayList, Q07: ArrayList, Q08: LinkedList, Q09: LinkedList, Q10: List Iterators, Midterm 1, Midterm 2, Final Exam Assessment
The student will:
Distinguish between and implement O(n2) sorting algorithms.
Distinguish between and implement O(nlogn) sorting algorithms.
Referencing modules: Simple Sorting Algorithms, Midterm Exam 1, Midterm Exam 2, Complex Sorting Algorithms, Final Exam
Assessed by: A01: Sorting Arrays, Q05: Sorting Arrays, A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, Midterm 1, Midterm 2, A10: Complex Sorting Assessment, Q24: Heaps, Q25: Merge, Final Exam Assessment
The student will:
Use Arrays as the underlying data structure for different ADT implementations.
Explain the trade-offs between an array vs. Linked implementation of the ADTs.
Referencing modules: Simple Sorting Algorithms, Midterm Exam 1, Midterm Exam 2, Complex Sorting Algorithms, Final Exam
Assessed by: A01: Sorting Arrays, Q05: Sorting Arrays, A02: ArrayList and Simple Sorting, Q06: ArrayList, Q07: ArrayList, Midterm 1, Midterm 2, Final Exam Assessment
The student will:
Develop abstract data types.
Use appropriate data encapsulation and information hiding.
Choose, design and develop appropriate tests for their Java code.
Referencing modules: Simple Sorting Algorithms
Assessed by: A01: Sorting Arrays, A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, A04: List Iterators, A05: Postfix Calculator, A06: CircularArrayQueue, A07: Recursion, A08: BinarySearchTree, A09: HashMap Assessment, A10: Complex Sorting Assessment
The student will:
Understand White and Black box testing.
Choose, design and develop appropriate tests for their Java code.
Referencing modules: Simple Sorting Algorithms
Assessed by: A01: Sorting Arrays, A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, A04: List Iterators, A05: Postfix Calculator, A06: CircularArrayQueue, A07: Recursion, A08: BinarySearchTree, A09: HashMap Assessment, A10: Complex Sorting Assessment
The student will:
Implement two different versions of the List interface.
Explain the trade-offs between the two different implementations.
Referencing modules: Lists, Midterm Exam 1, Midterm Exam 2, Hash Tables, Final Exam
Assessed by: A02: ArrayList and Simple Sorting, A03: Double Linked List with Simple Sorting, A04: List Iterators, Q06: ArrayList, Q07: ArrayList, Q08: LinkedList, Q09: LinkedList, Q10: List Iterators, Midterm 1, Midterm 2, A09: HashMap Assessment, Q23: Chaining Hashmap, Final Exam Assessment
The student will:
Describe the different Java collection classes.
Explain and compare the basics of memory management in different implementations.
Referencing modules: Lists, Midterm Exam 1, Midterm Exam 2
The student will:
Implement several different versions of the Iterator interface.
Implement several different versions of the Iterable interface.
Explain the trade-offs between the different implementations.
Referencing modules: Lists
Assessed by: A04: List Iterators, Q08: LinkedList, Q09: LinkedList, Q10: List Iterators,
The student will:
Explain standard interface for a Stack.
Implement two different versions of the Stack interface.
Compare the trade-offs between the two different implementations.
Referencing modules: Stacks, Midterm Exam 2, Final Exam
Assessed by: A05: Postfix Calculator, Q13: LinkedStack, Midterm 2, Final Exam Assessment
The student will:
Explain the differences between prefix, infix and postfix notation.
Implement code to process prefix, infix and postfix equations.
Compare the trade-offs between the notations.
Referencing modules: Stacks, Midterm Exam 2, Final Exam
Assessed by: A05: Postfix Calculator, Midterm 2, Final Exam Assessment
The student will:
Implement several different versions of the Queue interface.
Compare the trade-offs between the two different implementations.
Referencing modules: Queues, Midterm Exam 2, Final Exam
Assessed by: A06: CircularArrayQueue, Q14: ArrayQueue, Q15: LinkedQueue, Midterm 2, Final Exam Assessment
The student will:
Use recursive algorithms to solve different problems.
Write correct recursive Java code to solve different problems.
Referencing modules: Recursion, Trees, Midterm Exam 2, Final Exam
Assessed by: A07: Recursion, Q16: Recursion, Q17: Recursion, A08: BinarySearchTree, Q19: BinarySearchTree, Q20: BinarySearchTree, Midterm 2, Final Exam Assessment
The student will:
Explain the standard structure of a Tree.
Implement binary trees.
Implement binary search trees.
Implement a Heap.
Referencing modules: Trees, Final Exam
Assessed by: A08: BinarySearchTree, Q19: BinarySearchTree, Q20: BinarySearchTree, Q21: Heaps , Final Exam Assessment
The student will:
Explain the differences between pre-order, in-order and post-order traversals.
Implement code to conduct pre-order, in-order and post-order traversals of binary trees.
Referencing modules: Trees, Final Exam
Assessed by: Final Exam Assessment
The student will:
Implement two different versions of the Hash Map interface, open addressing and chaining.
Explain the trade-offs between the two different implementations.
Referencing modules: Hash Tables, Final Exam
Assessed by: A09: HashMap Assessment, Q22: Open Address Hashmap, Q23: Chaining Hashmap, Final Exam Assessment
The student will:
Explain and implement the binary and linear search algorithms.
Compare, contrast and implement pre-order, in-order, and post-order binary tree traversal.
Referencing modules: Final Exam
Assessed by: Final Exam Assessment
The student will:
Referencing modules: Welcome to ICS 211
Assessed by: Q01: Practice, Final Grade Assessment