I am a Bozeman resident, got my PhD from MSU and my wife works there. Really was not expecting to see something from MSU make the front page of HN, well, ever, really. This is pretty cool.
This is cool! As someone who has TA'ed similar classes to this, I've noticed that students usually find classes that teach low level programming and assembly a drag. They often complain and find no interest in the material. Part of the feedback I've received on that is that 1) it's useless and 2) there is so much abstraction that it's hard to really understand what's going on if you already don't have a very strong mental model of how a computer works, which is not taught or expected in courses like these.
I had the opportunity to play with an Altair 8800 clone and it seemed so much more intuitive there's not fifty layers of abstraction over how things like memory, I/O, etc. work, and you can inspect what's going on very easily. From looking at this project, it certainly feels similar, but much more easily accessible and programmable, while also really letting students get a feel for the organization of a computer without the abstraction. I really think this would help point (2). As for point (1), with easy graphics output, it's easy to do things like write games (like the aforementioned snake), and I think that would already make this a lot more fun than the kind of assembly and C code that the course I TA'ed wrote, such as "find the max of an array in memory using only assembly," or "implement a database to store information about courses in C."
As a side note, it would be super cool to have things like CTFs that use the MTMC for pedagogical purposes, à la CMU's "Bomb lab"!
I really hope that universities adopt either this or something like this for introductory computer organization and low level programming courses. I genuinely believe that it would make a big difference in students developing a passion for low level programming, and I'm really glad that this work was done.
Side note: Java is honestly a great idea, since most students learn Java and thus the barrier of entry for contributing to this would be greatly reduced.
This is really nice work. Of course I, and probably 70% of all HN readers as well, have a bunch of nits to pick (in Java, memory too small, instruction set quibbles and so on) but this is still a very nice piece of work.
One of the best measures of your success is the number of ideas for extension that immediately pop into my mind. Memory mapped I/O of various kinds. DMA controllers with memory mapped registers. A forth interpreter. A tinyGo port. Bigger memory. An emulator for a Raspberry Pi or Pico. A scheme interpreter and compiler. A simple memory management unit.
Fun Fact: You can pass your starting patterns into the Life program. There are a bunch in /data. And you can make your own as long as they end in .cells
Cool. I wonder if some enterprising students (or others) might put together a physical hardware console that you could connect to a raspberry pi or fpga implementation?
I got my EE degree from MSU and grew up in Bozeman. (I live in Boston now and I wonder every fucking day why I don’t live in Montana any more.)
This has a whiff of something Brock Lameres or Ross Snider would be involved in. Except for the Java part. Nobody at MSU did Java except the CS department lol.
I am a Bozeman resident, got my PhD from MSU and my wife works there. Really was not expecting to see something from MSU make the front page of HN, well, ever, really. This is pretty cool.
This is cool! As someone who has TA'ed similar classes to this, I've noticed that students usually find classes that teach low level programming and assembly a drag. They often complain and find no interest in the material. Part of the feedback I've received on that is that 1) it's useless and 2) there is so much abstraction that it's hard to really understand what's going on if you already don't have a very strong mental model of how a computer works, which is not taught or expected in courses like these.
I had the opportunity to play with an Altair 8800 clone and it seemed so much more intuitive there's not fifty layers of abstraction over how things like memory, I/O, etc. work, and you can inspect what's going on very easily. From looking at this project, it certainly feels similar, but much more easily accessible and programmable, while also really letting students get a feel for the organization of a computer without the abstraction. I really think this would help point (2). As for point (1), with easy graphics output, it's easy to do things like write games (like the aforementioned snake), and I think that would already make this a lot more fun than the kind of assembly and C code that the course I TA'ed wrote, such as "find the max of an array in memory using only assembly," or "implement a database to store information about courses in C."
As a side note, it would be super cool to have things like CTFs that use the MTMC for pedagogical purposes, à la CMU's "Bomb lab"!
I really hope that universities adopt either this or something like this for introductory computer organization and low level programming courses. I genuinely believe that it would make a big difference in students developing a passion for low level programming, and I'm really glad that this work was done.
Side note: Java is honestly a great idea, since most students learn Java and thus the barrier of entry for contributing to this would be greatly reduced.
This is really nice work. Of course I, and probably 70% of all HN readers as well, have a bunch of nits to pick (in Java, memory too small, instruction set quibbles and so on) but this is still a very nice piece of work.
One of the best measures of your success is the number of ideas for extension that immediately pop into my mind. Memory mapped I/O of various kinds. DMA controllers with memory mapped registers. A forth interpreter. A tinyGo port. Bigger memory. An emulator for a Raspberry Pi or Pico. A scheme interpreter and compiler. A simple memory management unit.
Fun Fact: You can pass your starting patterns into the Life program. There are a bunch in /data. And you can make your own as long as they end in .cells
My favorite is: life /data/galaxy.cells
This is really cool! How can this be used to learn/refresh topics about low level programming? What do you recommend coding in this?
A blinkenlights display? Sorry if this message is garbled; I need to wipe the drool off of my keyboard...
You pointed us to a video, but not to a URL where we can either download it or interact with it online. Are there such?
Cool. I wonder if some enterprising students (or others) might put together a physical hardware console that you could connect to a raspberry pi or fpga implementation?
Hello sir, can we take your class on this?
Fuck yeah. Very cool.
I got my EE degree from MSU and grew up in Bozeman. (I live in Boston now and I wonder every fucking day why I don’t live in Montana any more.)
This has a whiff of something Brock Lameres or Ross Snider would be involved in. Except for the Java part. Nobody at MSU did Java except the CS department lol.