CSE 12 focuses on the design and development of software in an Object Oriented style as well as on building, analyzing and applying basic data structures. At the end of CSE 12 students will be able to do the following:
Software development and OOP
- Identify and test cases to fully verify the correctness of software developed to meet an interface specification
- Implement JUnit tests
- Develop classes using generic types in Java
- Design an object oriented class hierarchy
- Design an interface appropriate to a task
- Design and implement a moderate size program to accomplish a real-world task
- Describe the benefits of abstraction
- Describe how abstraction is used an a given program
- Correctly use and reason about references and inheritance in Java
- Correctly implement basic data structures in Java including:
- Linked lists
- Stacks
- Queues
- Heaps
- Trees
- Select appropriate data structures to implement software applications
- Describe the difference between an ADT and a data structure
- Implement an ADT using more than one data structure
Algorithm and Data Structure Analysis
- Analyze algorithm running time in terms of big-O, big-Omega and big-Theta
- Relate functions in terms of big-O, big-Omega and big-Theta
- Perform worst-cases running time and space analysis
- Describe the difference between worst case, best case and average case analysis
- Analyze the performance of an ADT when implemented using different underlying data structures
- Compare and contrast different data structures