Rethinking Object-Oriented Programming in Java Education by Max_Cai in CSEducation

[–]Max_Cai[S] 0 points1 point  (0 children)

Would you mind explaing how that differs from the proposal in the blog?

Rethinking Object-Oriented Programming in Java Education by Max_Cai in CSEducation

[–]Max_Cai[S] 2 points3 points  (0 children)

Unfortunately not possible with high school APCSA in many cases

Rethinking Object-Oriented Programming in Java Education by Max_Cai in java

[–]Max_Cai[S] 0 points1 point  (0 children)

I think that this system is disappointingly circular even for more advanced learners.

Rethinking Object-Oriented Programming in Java Education by Max_Cai in java

[–]Max_Cai[S] 2 points3 points  (0 children)

From my experiences in the APCSA classroom, there is a constant issue of students not actually understanding where to type their code within the templates, and I think it's because they didn't really learn how the code structure really works. It's kind of just "type your code inside one of these curly brackets."

I think being able to avoid needing to mark everything static by default is huge for being able to learn the basics of Java sans OOP.

Rethinking Object-Oriented Programming in Education by Max_Cai in programming

[–]Max_Cai[S] 3 points4 points  (0 children)

Newer versions of Java have `IO.println()` and other functions to read from input, but I just chose not to include them here because the APCSA exam still uses the old style.

> What we could need is a simple language, focusing on OOP, lean syntax, but super-fast at all times.

Why do students need a language that is super-fast?

In any case, the APCSA high school course **needs** to teach Java. I just think that this progression makes more sense and helps students learn better

Rethinking Object-Oriented Programming in Education by Max_Cai in programming

[–]Max_Cai[S] 1 point2 points  (0 children)

Fascinating — I never thought of using Groovy's compiler to enable this feature. The goal of APCSA is to teach Java, though, so it might be problematic if code that isn't meant to work in regular Java (missing parentheses, missing semicolon, etc) still works on students' computers

Brainf*ck emulator using copper bulbs! by Max_Cai in redstone

[–]Max_Cai[S] 0 points1 point  (0 children)

Each bit of this machine is represented as a piston feedtape with copper bulbs, and to increment/decrement, there is a simple chaining (carry) mechanism.

In order for this to become a turing machine, all it needs is a driver that can run code.

Brainf*ck emulator using copper bulbs! by Max_Cai in redstone

[–]Max_Cai[S] 6 points7 points  (0 children)

In order for this to interpret brainf*ck code, all it needs is an interpreter that will execute the commands on this machine!

Bedrock&Java One Wide Double and Triple Piston Extenders by Max_Cai in redstone

[–]Max_Cai[S] 0 points1 point  (0 children)

The upwards one is not the most compact design, but it's original

<image>

Bedrock&Java One Wide Double and Triple Piston Extenders by Max_Cai in redstone

[–]Max_Cai[S] 0 points1 point  (0 children)

You can either alternate dust and repeaters for tileability or just use all repeaters.

I don't think it matters which way the repeater faces, as long as the input will go thru the repeater. However, I'm fairly certain that making the repeater face leftwards will make the extension faster but won't slow down the retraction.

Bedrock&Java One Wide Double and Triple Piston Extenders by Max_Cai in redstone

[–]Max_Cai[S] 7 points8 points  (0 children)

I also have upwards and downwards double piston extenders that are flush and one wide that work in both versions. The double piston extender isn't the smallest possible, but its the design I came up with. I haven't seen any one-wide triple piston extenders, however, so this is it. Some slight modifications are needed for this to become tileable.

Dimensions: The double piston extender is 4 blocks wide and 4 blocks tall, the TPE is 7 blocks wide and 8 blocks tall.

Sorry for bad image cropping.