My Notes for AY21/22 Sem 2
There are no notes made for Lecture 1 - 3; I will be making my Lab solutions private due to privacy concerns.
After completing the module, students should:
- be confident in reading and developing medium-scale programs (up to 10K lines of code)
- be familiarize enough with common OO concepts to understand software code written in common OO language and understand documentation of software libraries in OO
- be able to apply OO concepts to design and implement medium to large scale programs, including
- design and implement a class
- decompose a problem solution into classes and define members and methods for each class
- use polymorphism effectively
- use inheritance to design simple class hierarchies that allow code reuse
- trace the control flow of a programs that use dynamic dispatch
- use encapsulation mechanisms such as interfaces, private methods/members
- be familiarize enough with common functional programming concepts and constructs, including lambda expression, effect-free programming, first class functions, infinite streams.
- be able to apply functional programming concepts to design and implement , including:
- Implement basic algorithms in functions that are effect free.
- Implement useful functions that take/return another function
- Write correct and effective code using lambda expressions and/or infinite streams
- be able to compare and contrast imperative programming, OO programming, and function programming paradigms, and select the most natural paradigms for each situation
- be aware of how the OOP and FP concepts are implemented in different ways in different programming languages
- be confident enough to learn new programming languages that uses OOP and FP paradigm
- attain proficiency in Java 8 (and above)
- be equipped with solid programming foundations for further studies in computer science