Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ The GitHub Actions validation workflow passed on `main` after the audit and lear

## Unreleased

### Learner journey

- added `LEARNER_PROGRESS.md` so self-paced learners can track module completion, evidence, reflections, and major checkpoints without a fixed calendar;
- added `READING_GUIDE.md` to make official OpenStax access explicit and clarify that the Diktat is a formal conceptual reference without making an unofficial third-party copy a course dependency;
- connected the new learner tools from the repository home, Start Here, and self-paced workflow;
- extended publication validation so learner-progress and reading-access guidance remain part of the public course path.

### Assessment progression

- removed premature use of Python's `is` identity operator from Module 2 exercises; Module 2 now assesses separate-instance reasoning without Module 11 syntax;
Expand Down
100 changes: 100 additions & 0 deletions LEARNER_PROGRESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Learner Progress Tracker

Use this file as a lightweight checklist for the self-paced course.

You can copy this page into your own notes, fork the repository, or recreate the checklist in any tool you prefer. The repository does not store personal learner progress.

## How to use the tracker

For each module:

1. study the README and notebook;
2. complete representative exercises;
3. attempt the quiz;
4. complete the assignment or assessment evidence;
5. attempt the matching [Mastery Checks](MASTERY_CHECKS.md);
6. write one short reflection;
7. mark the module complete when you can **explain, apply, and defend** the core idea.

Use the [Self-Assessment Guide](SELF_ASSESSMENT_GUIDE.md) when you are unsure whether to move forward.

## Course progress

- [ ] Module 0 — Python readiness checked; primer completed if needed
- [ ] Module 1 — Thinking in Objects
- [ ] Module 2 — Classes, Objects & Instances
- [ ] Module 3 — State & Behavior
- [ ] Module 4 — Encapsulation & Abstraction
- [ ] Module 5 — Object Relationships
- [ ] Module 6 — Inheritance
- [ ] Module 7 — Overriding, Polymorphism & Dynamic Binding
- [ ] Module 8 — Mid-Course Assessment
- [ ] Module 9 — Abstract Classes & Inheritance Structures
- [ ] Module 10 — Multiple Inheritance & Mixins
- [ ] Module 11 — Object Lifecycle, References & Identity
- [ ] Module 12 — Operator Overloading, Genericity & Modules
- [ ] Module 13 — Exception Handling & Assertions
- [ ] Module 14 — OOA, OOD, OOP & OOT
- [ ] Module 15 — Reusability, Design Patterns & Case Study
- [ ] Module 16 — Final Project / Final Assessment

## Evidence log

Keep links or filenames for evidence that matters to you.

| Module / checkpoint | Evidence | Reflection / remaining gap |
|---|---|---|
| Python readiness | | |
| Module 1 | | |
| Module 2 | | |
| Module 3 | | |
| Module 4 | | |
| Module 5 | | |
| Module 6 | | |
| Module 7 | | |
| Mid-Course Assessment | | |
| Module 9 | | |
| Module 10 | | |
| Module 11 | | |
| Module 12 | | |
| Module 13 | | |
| Module 14 | | |
| Module 15 | | |
| Final Project | | |

## Major checkpoints

### Before the Mid-Course Assessment

You should be able to model a small problem with objects, give objects meaningful responsibilities, explain object relationships, use inheritance only for meaningful is-a relationships, and demonstrate overriding/polymorphism.

### Before starting the Final Project

After Module 12, read the [Final Project brief](assessments/final-project/README.md) early. Start collecting candidate modelling decisions and questions; you do not need to implement the full project yet.

### Before completing Module 16

Confirm that you can trace:

```text
requirement
→ object-oriented analysis
→ design decisions
→ Python implementation
→ tests
→ explanation / defense
```

Use the [Final Project checklist](week-16/final-project-checklist.md) before considering the course complete.

## Completion reflection

When you finish the course, answer:

```text
The OOP idea I understand most clearly is...
The design decision I can now defend is...
The runtime behavior I can now explain is...
The project evidence I am most confident showing is...
The topic I still want to revisit is...
```
62 changes: 62 additions & 0 deletions READING_GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Reading & Reference Access Guide

The course has exactly two formal references:

1. Inggriani Liem. *Diktat Kuliah Pemrograman Berorientasi Objek*. Departemen Teknik Informatika ITB, 2003.
2. OpenStax. *Introduction to Python Programming*. 2024.

See [Reference Map](REFERENCE_MAP.md) for module-by-module alignment and [Source Boundary](SOURCE_BOUNDARY.md) for the formal source policy.

## Do I need both references before starting?

No.

The repository is designed to provide the learning path, explanations, executable examples, exercises, assessments, and mastery feedback needed to progress through the course.

The references serve two additional purposes:

- provide traceability for the concepts used by the course;
- give learners a deeper or alternate explanation when they want one.

A learner should not be blocked from starting Module 1 merely because one external reference is not immediately available.

## OpenStax — free official access

*Introduction to Python Programming* is available free from OpenStax:

https://openstax.org/books/introduction-python-programming/pages/1-introduction

OpenStax provides web access and a PDF option. The course uses it primarily for Python-facing implementation material.

When a module names an OpenStax section, use that section as supporting reading rather than as a separate prerequisite course.

## Inggriani Liem — conceptual reference

The 2003 *Diktat Kuliah Pemrograman Berorientasi Objek* is used primarily for conceptual OOP terminology, modelling, contracts, analysis/design/testing, and reusability concepts.

The repository does not bundle or mirror a copy of the Diktat.

Use a lawful copy available to you through the author, institution, library, instructor, or another source that has permission to distribute it. Do not treat an unofficial third-party upload as an official course dependency.

If you do not currently have access to the Diktat, continue with the module explanation, notebook, exercises, and mastery checks. The [Reference Map](REFERENCE_MAP.md) identifies the concepts being traced to the Diktat.

## Reading strategy

For each module:

```text
module README
→ referenced source section when available
→ notebook examples
→ exercises
→ quiz / assignment
→ mastery check
```

Do not postpone hands-on work until every external reading is complete. The readings and executable course materials are intended to reinforce each other.

## Reference discipline

External tutorials, videos, documentation, or AI tools may be useful for personal study, but they do not become additional formal course references merely because a learner uses them.

Required course concepts remain governed by [Source Boundary](SOURCE_BOUNDARY.md).
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ Primary lab environment: **Google Colab**
## Start learning

- New learner: [Start Here](START_HERE.md)
- Want to track progress: [Learner Progress Tracker](LEARNER_PROGRESS.md)
- Ready to run code: [Open notebooks in Google Colab](COLAB.md)
- Need the course readings: [Reading & Reference Access Guide](READING_GUIDE.md)
- Want the full pathway: [Course Map](COURSE_MAP.md)

No enrollment or fixed calendar is required.
Expand Down Expand Up @@ -79,7 +81,9 @@ Open-course guidance:
- [Open in Google Colab](COLAB.md)
- [Open Course Guide](OPEN_COURSE_GUIDE.md)
- [Self-Paced Learning Guide](SELF_PACED_GUIDE.md)
- [Learner Progress Tracker](LEARNER_PROGRESS.md)
- [Self-Assessment Guide](SELF_ASSESSMENT_GUIDE.md)
- [Reading & Reference Access Guide](READING_GUIDE.md)
- [Mastery Checks with Worked Feedback](MASTERY_CHECKS.md)
- [Assessment Alignment](ASSESSMENT_ALIGNMENT.md)
- [Reference Map](REFERENCE_MAP.md)
Expand Down Expand Up @@ -141,6 +145,8 @@ The formal course scope is intentionally aligned to these two references.

The Diktat is used primarily for OOP concepts and terminology. OpenStax is used primarily for Python-facing implementation.

Learners can use the [Reading & Reference Access Guide](READING_GUIDE.md) for the official free OpenStax access path and guidance on using the Diktat without making an unofficial copy a course dependency.

See the [Reference Map](REFERENCE_MAP.md) for module-by-module source alignment and the [Source Boundary](SOURCE_BOUNDARY.md) for the rule that separates formal course concepts, minimal Python implementation bridges, and out-of-scope additions.

## Repository structure
Expand Down
7 changes: 5 additions & 2 deletions SELF_PACED_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

There is no fixed schedule for this course.

Use the [Self-Assessment Guide](SELF_ASSESSMENT_GUIDE.md) to decide when you are ready to move forward.
Use the [Self-Assessment Guide](SELF_ASSESSMENT_GUIDE.md) to decide when you are ready to move forward and the [Learner Progress Tracker](LEARNER_PROGRESS.md) to record evidence and remaining gaps.

Use the [Reading & Reference Access Guide](READING_GUIDE.md) when a module points to one of the two formal references.

Progress when you can explain and apply the current module, not merely when you have read it.

Expand All @@ -19,7 +21,8 @@ Progress when you can explain and apply the current module, not merely when you
8. Attempt the module section in [Mastery Checks](MASTERY_CHECKS.md)
9. Open the worked feedback only after answering
10. Explain your solution in your own words
11. Move forward when the core ideas are clear
11. Record one evidence link or reflection in the learner tracker
12. Move forward when the core ideas are clear
```

## Suggested pace
Expand Down
10 changes: 8 additions & 2 deletions START_HERE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ mastery check
- [Take the Python Readiness Check](00-python-primer/readiness-check.md)
- [Open Module 0 — Python Primer](00-python-primer/)
- [Start Module 1 — Thinking in Objects](week-01/)
- [Copy/use the Learner Progress Tracker](LEARNER_PROGRESS.md)
- [Open the full Colab notebook index](COLAB.md)
- [Read the Reference Access Guide](READING_GUIDE.md)

You can begin entirely in the browser. Cloning the repository is optional.

Expand Down Expand Up @@ -91,17 +93,21 @@ See the [Course Map](COURSE_MAP.md) for detailed learning-outcome and assessment

Move forward when you can explain the core idea, complete a representative exercise, predict and verify example behavior, justify a design decision, and identify what you still do not understand.

## 6. Build evidence as you learn
## 6. Track progress and build evidence

Keep completed notebooks, selected exercises, coding assignments, design explanations, the mid-course assessment attempt, and the final project as portfolio evidence.
Use the [Learner Progress Tracker](LEARNER_PROGRESS.md) as an optional checklist.

Keep completed notebooks, selected exercises, coding assignments, design explanations, the mid-course assessment attempt, and the final project as portfolio evidence. Record a short reflection or remaining gap before moving on rather than treating completion as a calendar event.

## 7. Continue

- [Start Module 1](week-01/)
- [Open in Google Colab](COLAB.md)
- [Open Course Guide](OPEN_COURSE_GUIDE.md)
- [Self-Paced Learning Guide](SELF_PACED_GUIDE.md)
- [Learner Progress Tracker](LEARNER_PROGRESS.md)
- [Self-Assessment Guide](SELF_ASSESSMENT_GUIDE.md)
- [Reading & Reference Access Guide](READING_GUIDE.md)
- [Mastery Checks](MASTERY_CHECKS.md)
- [Course Map](COURSE_MAP.md)
- [Reference Map](REFERENCE_MAP.md)
6 changes: 6 additions & 0 deletions scripts/validate_course.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ def required_structure(errors: list[str]) -> None:
"COURSE_MAP.md",
"OPEN_COURSE_GUIDE.md",
"SELF_PACED_GUIDE.md",
"LEARNER_PROGRESS.md",
"SELF_ASSESSMENT_GUIDE.md",
"READING_GUIDE.md",
"MASTERY_CHECKS.md",
"ASSESSMENT_ALIGNMENT.md",
"INSTRUCTOR_GUIDE.md",
Expand Down Expand Up @@ -437,7 +439,9 @@ def validate_publication_navigation(errors: list[str]) -> None:
"REFERENCE_MAP.md",
"SOURCE_BOUNDARY.md",
"SELF_PACED_GUIDE.md",
"LEARNER_PROGRESS.md",
"SELF_ASSESSMENT_GUIDE.md",
"READING_GUIDE.md",
"ACCESSIBILITY.md",
"LOCAL_SETUP.md",
"CITATION.cff",
Expand All @@ -454,7 +458,9 @@ def validate_publication_navigation(errors: list[str]) -> None:
"COURSE_MAP.md",
"REFERENCE_MAP.md",
"SELF_PACED_GUIDE.md",
"LEARNER_PROGRESS.md",
"SELF_ASSESSMENT_GUIDE.md",
"READING_GUIDE.md",
],
}

Expand Down
Loading