When you need to do interop with observable-based flow, you can convert your signals to observable with toObservable
import { toObservable } from "@angular/core/rxjs-interop";
// ...
#courses = signal<Course[]>([]);
// ...
const courses$ = toObservable(this.#courses);