Object-Oriented Programming (PRO192)
Vietnamese title: Lập trình hướng đối tượng
Credits: 3
Prerequisites: Pass PRF192

Description:
-This subject introduces the student to object-oriented programming. The student learns to build reusable objects, encapsulate data and logic within a class, inherit one class from another and implement polymorphism.
- Compose technical documentation of a Java program using internal comments
- Adhere to object-oriented programming principles including encapsulation, polymorphism and inheritance when writing program code
- Trace the execution of Java program logic to determine what a program does or to validate the correctness of a program

Learning outcomes:
Understand the concepts of object oriented (OO) programs to solve problems and fundamentals of object-oriented programming in Java
Practice basic Java language syntax and semantics to write Java programs and use concepts such as variables, conditional and iterative execution methods
Uses streams to read and write data from/to different types of sources/targets
Discuss the benefits and the use of JAVA’s Exceptional handling mechanism
Identify classes, objects, members of a class and relationships among them needed for a specific problem
Explain the concept and demonstrates the use of Polymorphism, Encapsulation, Abstraction and Inheritance in java
Discuss the principles and the use of abstract classes and interfaces in java
Understand and implement a complete program using object array
Explain the principles and the use of some (java collections) abstract data types (list, set, map)

Student tasks:
- Students must attend at least 80% of contact slots in order to be accepted to the final examination.
- Student is responsible to do all exercises given by instructor in class or at home and submit on time.
- Use laptop in class only for learning purpose
- Promptly access to the FU FLM at https://flm.fpt.edu.vn/ for up-to-date course information

Tools:
Text Book
'NetBean x.x
Internet

Materials:
description: Java 8 Specification
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html#jvms-1.1
description: Core Java, Volum 1: Fundamentals
author: Cay Horstmann
publisher: Pearson
published_date: 2018
edition: 11th
isbn: 978-0135166307
description: Core Java, Volum 2: Advanced features
author: Cay Horstmann
publisher: Pearson
published_date: 2019
edition: 11th
isbn: 978-0135166314
description: Object-Oriented Programming using Java (website (offline): Học liệu do FU biên soạn)

Assessments:
category: Assignment
type: on-going
weight: 20.0
duration: Option 1: 28 slots; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: LO1, LO2, LO3, LO4, LO5, LO6, LO7, LO8, LO9
no_question: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
grading_guide: All subjects in syllabus
note: in class, by teacher
category: Lab
type: on-going
weight: 10.0
duration: Option 1: 90'/each; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: LO1, LO2, LO3, LO4, LO5, LO6, LO7, LO8, LO9
no_question: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
note: in class, by teacher
category: Practical Exam
type: on-going
weight: 30.0
duration: 85'
question_type: LO1->LO9
note: By exam board
category: Progress Test
type: on-going
weight: 10.0
duration: Option 1: 30'/each; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: LO1, LO2, LO3, LO4, LO5, LO6
no_question: Option 1: Multiple choices Marked by Computer or a suitable format; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: 20/each; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
note: in class, by LMS system
category: Final Exam
type: Final exam
weight: 30.0
duration: 60'/each
question_type: LO1->LO9
no_question: Multiple choices
Marked by Computer
knowledge_and_skill: 50
grading_guide: All subjects in syllabus
note: By Exam Board

Schedule:
session: Chapter 1: Introduction
1.1 Welcome to Object-Oriented
learning_outcomes: I
materials: PRO192_1
session: 1.2 Object Terminology and Installation JDK - IDE
materials: PRO192_2
session: Chapter 2: Basic Java language
2.1 Basic Java language: Variable, data type
learning_outcomes: IT
session: 2.1 Basic Java language: Control statements
learning_outcomes: IT
session: 2.1 Basic Java language: Method - function- Parameter passing
learning_outcomes: IT
session: 2.1 Basic Java language: Array, ArrayList
learning_outcomes: IT
session: 2.1 Basic Java language: String, StringBuffer
learning_outcomes: IT
session: 2.2 Input and Output (Standard I/O)
learning_outcomes: IT
session: 2.2 Input and Output (Standard I/O) - cont'd
learning_outcomes: IT
session: Lab 1 assistance
learning_outcomes: U
session: Lab 1 assistance
learning_outcomes: U
session: 2.4 Dynamic Memory
learning_outcomes: I
T
session: Chapter 3: OOP
3.1 OOP concept
learning_outcomes: I
T
session: 3.2 Data abstraction - concept and technic
learning_outcomes: I
T
session: 3.3 Class definition: data and function members
learning_outcomes: I
T
session: 3.4 Encapsulation
learning_outcomes: I
T
session: Lab 2 assistance
learning_outcomes: U
session: Lab 2 assistance
learning_outcomes: U
session: 3.5 Inheritance: Inheritance introduction
learning_outcomes: I
T
session: 3.6 Inheritance: Derived Classes
learning_outcomes: I
T
session: Lab 3 assistance
learning_outcomes: U
session: Lab 3 assistance
learning_outcomes: U
session: 3.7 Polymorphism: Polymorphism concepts
learning_outcomes: I
T
session: 3.8 Override and overriden methods
learning_outcomes: I
T
session: Lab 4 assistance
learning_outcomes: U
session: Lab 4 assistance
learning_outcomes: U
session: Chapter 4: Abstract class - Interface
4.1 Abstract class
learning_outcomes: IT
session: 4.1 Abstract class - con't
learning_outcomes: IT
session: 4.2 Interface
learning_outcomes: IT
session: 4.2 Interface - cont'd
learning_outcomes: IT
session: Chapter 5:
5.1 Error & Exception Concepts
session: 5.2 Handling Exception
session: Progress test 1+ workshop evaluation
session: Progress test 1+ workshop evaluation
learning_outcomes: I
T
session: Chapter 6: Array of Objects
6. Basic Operators: add, update, remove, sort, find
learning_outcomes: IT
session: Array of Objects:
6. Basic Operators: add, update, remove, sort, find - cont'd
learning_outcomes: IT
session: Array of Objects:
6. Basic Operators: add, update, remove, sort, find - cont'd
learning_outcomes: IT
session: Array of Objects:
6. Basic Operators: add, update, remove, sort, find - cont'd
learning_outcomes: IT
session: Chapter 7: Collections in Java:
7.1 Overview
learning_outcomes: I
T
session: 7.2 List
learning_outcomes: I
T
session: 7.3 Set
learning_outcomes: I
T
session: 7.3 Set
learning_outcomes: I
T
session: 7.4 Map
learning_outcomes: I
T
session: 7.4 Map
learning_outcomes: I
T
session: Lab 5 assistance
learning_outcomes: U
session: Lab 5 assistance
learning_outcomes: U
session: Chapter 8: Input and Output (File I/O)
learning_outcomes: IT
session: 8. Input and Output (File I/O) - cont't
learning_outcomes: IT
session: 8. Input and Output (File I/O) - cont't
learning_outcomes: IT
session: 8. Input and Output (File I/O) - cont't
learning_outcomes: IT
session: Lab 6 assistance
learning_outcomes: T
U
session: Lab 6 assistance
learning_outcomes: T
U
session: Progress test 2+ workshop evaluation
learning_outcomes: U
session: Progress test 2+ workshop evaluation
learning_outcomes: U
session: Assignment Evaluation
learning_outcomes: I
T
session: Assignment Evaluation
learning_outcomes: I
T
session: Review
session: Review
session: Review
session: Review