CMSC 132: Object-Oriented Programming II (using Java)
NOTE: Students may take either the CMSC131 exam or CMS132 exam, but not both. Passing this exam places you out of CMSC 131 and 132. Students taking this exam should have credit for Caluculus I (MATH140) and Calculus II (MATH141).
- Overview of Software Development Cycle
- Project Specification Issues and Techniques
- Software Design
- UML class diagrams
- Object Oriented point of view
- Mutable vs. Immutable data
- Eliminating redundancy
- Writing Test Cases
- Writing Algorithms
- Invariants
- Termination
- Correctness
- Algorithm Efficiency (Asympototics)
- Big-O notation
- Best/worst/average cases
- Randomized algorithms
- Bounds on problems
- Intro to Networking
- Packet switching
- Network layers
- TCP and UDP
- Regular Expressions and Pattern Matching in Java
- Collections (including overview of Java API)
- Lists and Interators
- Stacks and Queues
- Sets and Bags
- Maps
- Graphs
- Trees
- Graph Algorithms
- Depth First Search
- Breadth First Search
- Kruskal’s Algorithm
- Dijkstra’s Algorithm
- Tree Structures
- Binary Search Trees
- Heaps
- Suffix Trees
- Hashing
- Open hashing
- Chaining
- Java hashCode() method
- Data Compression and Huffman Encoding Trees
- Java Inner Classes
- Design Patterns
- Singlenton Class
- Iterator
- Factory
- Adaptor
- Marker Interface
- Decorator
- Observer
- Model View Controller
- Threads in Java
- Locks and “synchronized”
- Data Races and Deadlock
- wait() and notifyAll() methods
Optional Topics
- Finite State Machines (Intro)
- Basic GUI design in Java
- Intro to features of Java 1.5