Object-Oriented Programming (CAS1102-02, Fall 2026)
Learn to write clean, readable, and maintainable software.
Instructor: Yonghyeon Lee
Course Overview
This course introduces object-oriented programming in Python and C++. Topics include classes and objects, abstraction, encapsulation, inheritance, polymorphism. Through hands-on code, students learn to build modular, reusable, and maintainable software.
Syllabus
| Course | Object Oriented Programming |
| Term | Fall 2026 |
| Meeting times | 목 7,8,9 (Thursday 3 ~ 6pm) |
| Location | Songdo Campus (I자A102) |
| Contact | yonghyeon.lee@yonsei.ac.kr |
Prerequisites
- Introductory programming experience (variables, control flow, functions)
Learning outcomes
By the end of the course, students should be able to:
- Understand and implement the fundamentals of Python and C++ needed for future AI research.
- Understand how the core principles of object-oriented programming—abstraction, encapsulation, inheritance, and polymorphism—are implemented in Python and C++.
- Design and develop complex software that is readable, modular, and maintainable using object-oriented programming.
Grading
| Component | Weight |
|---|---|
| Programming Assignments | 15% |
| Quiz | 50% |
| Final project | 35% |
Policies
Late work. Assignments submitted after the deadline may receive a penalty unless an extension was approved in advance.
Collaboration. Discuss ideas with classmates, but submit your own work unless an assignment explicitly allows pairs or teams.
AI usage. You may discuss ideas with AI tools and use them for writing help. Submitted work must still be yours—you are here to learn, and learning requires doing the work yourself. Acknowledge AI assistance when it materially helped you.
Academic integrity. Follow your institution’s honor code. Cite sources and acknowledge help received.
Lecture Schedule
- Slide, source code, and assignment links will be posted as materials become available.
- Each lecture is planned for one week, though the pace may vary.
| Week | Lecture | Slides |
|---|---|---|
| W1 | Lecture 01: Introduction to Object-Oriented Programming | Link |
| W2 | Lecture 02: Python Foundations: Functions, Modules, and Program Structure | Link |
| W3 | Lecture 03: Python: Classes, Objects, Abstraction, and Encapsulation | Link |
| W4 | Holidays | |
| W5 | Lecture 04: Python: Composition, Inheritance, and Polymorphism | Link |
| W6 | Lecture 05: Python Software Development: Type Hints, Dataclasses, and Testing | Link |
| W7 | Lecture 06: C++ Introduction: Setup, Compilation, Makefile, Linker, and Libraries | Link |
| W8 | Lecture 07: C++ Basics: I/O, Types, Strings, Arrays, Control Flow, and Functions | Link |
| W9 | Lecture 08: C++: Pointers, References, Const, and Parameter Passing | Link |
| W10 | Lecture 09: C++: Classes I: Classes, Objects, Encapsulation, Access Levels, Headers, and this Pointer | Link |
| W11 | Lecture 10: C++ Classes II: Constructors, Destructors, Copy/Move Semantics, and Object Lifetime | Link |
| W12 | Lecture 11: C++: Resource Management: Stack, Heap, RAII, Smart Pointers, and Rule of Zero | Link |
| W13 | Lecture 12: C++ Generic Programming: Operator Overloading, STL Containers and Algorithms, and Basic Templates | Link |
| W14 | Lecture 13: C++ Polymorphism: Inheritance, Virtual Functions, Abstract Classes, and Design Trade-offs | Link |
| W15-W16 | Final Projects |