SE301
Download as PDF
Advanced Programming and Design
Course (UG/PG)
Offering Unit/Department
Course Description
Course Learning Outcomes
1. Understand multi-threaded programming in Java and related principles such as using locks to protect critical sections from race conditions, deadlocks and deadlock avoidance strategies; Demonstrate competence in writing multi-threaded code in Java and be able to debug multi-threaded code with existing race conditions and yet ensure liveness.
2. Understand SOLID principles and apply clean coding practices.
3. Critique code in terms of maintainability and adoption of good programming techniques
4. Apply common object-oriented design patterns; critique the usage of patterns in specific contexts.
5. Contrast and compare the object-oriented paradigm with the functional programming paradigm.
6. Demonstrate competence with advanced Java programming features including streams, lambdas and generics, and how certain features support the usage of Java as a functional programming language.
7. Be familiar with main themes in the software engineering body of knowledge (SWEBOK).