Video summary
BISDI FEB UNPAD - Pemrograman Komputer 2 - B - #9 - 20 Oct 2026
Main summary
Key takeaways
Course Overview
The class introduces the course’s post-midterm focus on object-oriented programming (OOP), primarily using Python, and compares it with procedural and functional programming. The instructor emphasizes that students should understand programming concepts well enough to analyze problems, debug code, and evaluate AI-generated solutions—not simply rely on AI or memorize syntax.
Course Announcements and Expectations
- A weekly assignment will be shared through Google Classroom.
- Assignments must include handwritten lecture notes and are due about one week after they are assigned.
- The instructor plans to give a quiz the following week to check students’ understanding.
- Students are encouraged to ask questions during class or practicum, or contact the instructor directly.
- The instructor plans to share a class recording through Google Classroom.
Programming Paradigms
- Procedural programming focuses on the sequence of steps needed to solve a problem. Programs often use functions that work with shared or global data.
- Object-oriented programming (OOP) focuses on the entities, or objects, in a problem: the data they hold, the actions they can perform, and how they interact.
- Functional programming focuses primarily on functions.
The appropriate paradigm depends on the problem. OOP is not necessary for every small program, just as AI or machine learning should not be used when simpler approaches are sufficient. However, students need to understand OOP for situations where it is a good fit.
The instructor notes that Java is strongly structured around OOP, while Python can be used procedurally, functionally, or with OOP.
Four Main OOP Concepts
Abstraction
Abstraction means identifying the important parts of a problem and representing only what is relevant to the intended use. The objects and attributes that matter depend on the system’s purpose. For example, a car dealership system and a car-racing system would require different car attributes.
Similarly, a campus payroll system might focus on staff, while a course-management system would need to represent students, lecturers, classes, and courses.
Encapsulation
Encapsulation keeps an object’s data protected and provides controlled ways to access or change it. The instructor contrasts this with procedural designs where shared data may be exposed to many parts of a program.
Java uses access modifiers such as private, public, and protected. The instructor also clarifies that friend is associated with C++, not Java. Python does not use the same formal access-modifier system; underscores are commonly used by convention to signal restricted or internal attributes.
The instructor compares encapsulation to using a phone or TV: people operate the controls without needing direct access to the device’s internal components.
Inheritance
Inheritance allows a child class to reuse attributes or behaviors from a parent class, then add to or specialize them. Examples include different vehicle types or game characters that share common properties but have distinct abilities.
Inheritance can reduce duplicated code, but the class hierarchy must accurately reflect the problem.
Polymorphism
Polymorphism allows the same method name or interface to produce different behavior depending on the object or inputs. For example, a calculate operation could calculate the area of different shapes.
The instructor distinguishes between:
- Overloading: Methods share a name but take different parameters.
- Overriding: A child class replaces or specializes a method from its parent class.
Design Choices and Patterns
The instructor introduces design patterns as reusable approaches to recurring software-design problems. The patterns mentioned include Observer, Decorator, Factory, and Singleton.
A duck example illustrates why inheritance requires careful design: if every duck inherits a fly behavior, a rubber duck would incorrectly be able to fly. Overriding the method with an empty implementation might work as a patch, but it may not address the underlying design problem.
The instructor discusses Java interfaces as a way to describe behaviors that certain classes must implement, distinguishing these from behavior a class inherits and specializes.
Java and Python
In Java, code is organized into classes. The instructor reviews attributes, methods, constructors, and access modifiers. A constructor initializes an object when it is created, such as by assigning its starting values.
Python has different syntax and supports multiple programming paradigms. It uses self to refer to the current object and relies on underscores by convention rather than Java-style access modifiers.
The instructor says the course will focus on Python OOP, rather than trying to catch up on Java fundamentals at the same time.
Library Example: Procedural Code and OOP
A procedural library example uses a shared list of book dictionaries and functions to display, borrow, and return books. The book’s borrowed status is updated directly in the shared data.
This approach may be sufficient for a small example, but larger systems can be harder to manage. Data and operations may become tangled, consistency can be more difficult to maintain, and changes may be harder to scale.
In an OOP version:
- A Book object could hold a title, author, and borrowing status.
- A Library object could manage the collection and provide operations such as adding, displaying, or searching for books.
- Borrowing and returning would involve object methods that update the relevant book’s status.
The example shows how OOP separates responsibilities and can make a system easier to extend. A real library system would also need infrastructure such as a database.
AI and Practical Problem-Solving
The instructor argues that core concepts remain important even when AI tools are available. Students need to analyze problems, debug code, and check AI-generated results.
Students are encouraged to cross-check information from AI and other sources rather than accepting a single answer without verification.
Practicum Planning
After class, the instructor and Kanaya, a teaching assistant, discuss students’ preparation. Kanaya reports concerns that students have limited Java and Python fundamentals, have received limited practicum support, and may struggle if advanced topics are introduced too quickly.
They agree that the priority should be to strengthen Python OOP fundamentals, using clear examples such as a gas station or rental system. The instructor considers adding simple GUI work and, if time permits, introductory material on libraries, APIs, or databases. They plan to adjust the pace based on student progress and practicum feedback rather than rushing through topics students are not ready for.
Speakers and Sources
- Marisa — The instructor, leading the lecture and explaining the concepts.
- Kanaya — A teaching assistant or practicum representative, discussing students’ preparation and course pacing with the instructor after class.
- Students in the class — Several unnamed participants ask questions or respond. Named students mentioned include Nova/Noval, Marsya, Avisha, and Afisa/Jachinta/Anin.
- Topics and resources referenced — Java, Python, Haskell, design-pattern material, and AI tools. These are discussed rather than serving as speakers.
Rate this summary
Your feedback will help improve summaries.
Improve this summary
Reprocess with a stronger model when the summary feels incomplete or inaccurate.
Translate summary in another language
Ask questions to this video
Chat for follow-up questions, clarifications, and source-backed answers.