computer-science icon indicating copy to clipboard operation
computer-science copied to clipboard

RFC: Move Class-based Program Design to be taken after Systematic Program Design

Open etherealcomity opened this issue 5 months ago • 1 comments

Problem: OSSU list courses that would make more sense when rearranged in a different order.

Duration: One month.

Background: Our current curriculum currently recommends taking Class-based Program Design after the Programming Languages classes. I think that it would make more sense if we take Class-based Program Design after SPD instead of PLABC.

Class-based Program Design follows the same concepts closely as Systematic Program Design. It discusses the same concepts that were taught in SPD, but translated to working with OOP-based languages instead of functional languages. This makes sense because in NEU, the course is called Fundies II, which is a course that is taken after Fundies I (which is their version of SPD).

Here is the prerequisites listed on the site:

The course assumes proficiency with the systematic design of programs and some mathematical maturity. It demands curiosity and self-driven exploration and requires a serious commitment to practical hands-on programming.

In fact, I am currently taking Class-based Program Design, and after taking PLABC, I had to refresh some SPD concepts again.

Additionally, these are some interesting things I've noticed when taking Class-based Program Design after PLABC.

Class-based Program Design is a gentler introduction to a statically typed programming language. Until this point, OSSU teaches two programming languages, Python and BSL/Racket, both of which are dynamically typed languages. Programming Languages Part A introduces you to SML, which is a statically typed functional programming language. Due to PL's less hand-holdy nature, I had some difficulties trying to figure out how static typing works. In contrast, Class-based Program Design is a lot more gentle and assumes no knowledge in Java or even in a statically typed language (their first course was in BSL/Racket, after all).

Lastly, PLABC assumes a bit of knowledge with Java (but they're optional, not required). This is more of a side note and not really a requirement, but it would also be nice if we can follow along optional Java example lectures. I think most of us following OSSU would just skip them because we would have no Java knowledge.

Proposal:

  • Move Class-based Program Design to be taken after Systematic Program Design.

Alternatives:

  • No change in ordering, but may need to tell people to refresh SPD concepts when taking the course.

etherealcomity avatar Sep 13 '24 16:09 etherealcomity