|
Post by hcmffm on May 9, 2016 13:30:11 GMT -5
At the German university of Pforzheim, robot programming is part of the technical computer science studies. By programming the NAO robots students learn machine-oriented computer languages and their concepts. Though, last year it became clear that the park of NAO robots used for learning needs profound maintenance and wouldn't be available for some weeks. After quite a bit of thinking, Prof. Dr. rer. nat. Johannsen, found a good substitute: Vectrex programming. Several months of preparations followed and finally the professor had a first development environment and tool chain ready which would allow for both assembler and C programming for the Vectrex. Replacing the modern and cute NAO robots with the 30 year old Vectrex consoles couldn’t keep a total of 27 students from joining the Vectrex programming lessons. 'Learning by doing' is the motto of the course. The students' task is to program a video game for the Vectrex with a manual and optional overlay. Now, Prof. Dr. rer. nat. Johannsen has set up a gallery of the various Vectrex projects. It's still early days but very interesting to see and read the project profiles: Vectrex Project Gallery 2016Personally, I think it's great that this Vectrex programming course takes place and I hope that the NAO robots will need even more maintenance in future! Vectrex Project Gallery 2016Vectrex Project Gallery 2017Vectrex Project Gallery 2018
|
|
|
Post by Rapetou33 on May 9, 2016 14:28:20 GMT -5
Very very interesting ! Any contact with the Prof. ?
|
|
|
Post by hcmffm on May 9, 2016 14:53:08 GMT -5
Very very interesting ! Any contact with the Prof. ? I'm in contact with the professor. If Peer had more time he would post here himself; perhaps this will happen in near future.
|
|
|
Post by Vectronic on May 9, 2016 18:42:46 GMT -5
This sounds exciting for many reasons. I hope the professor will keep us updated - this seems to cultivate many future developers for the Vectrex. ^_^ I'm interested to see what works come out of this.
|
|
|
Post by mountaingoat on May 10, 2016 5:57:48 GMT -5
Very cool, that Artillery duel looks almost exactly what I was experimenting with before switching over to SGJ.
I see some of the students even used assembly - very nice. Assembly programming is quickly becoming a lost art in the age of 'quickly thrown together javascript apps'.
|
|
|
Post by VectorX on May 10, 2016 8:25:24 GMT -5
Seems almost like a prank to me. Why would someone offer a course in a pretty much obsolete platform/programming language? Or is Assembly still used for robots?
|
|
|
Post by hcmffm on May 10, 2016 9:40:50 GMT -5
Thank you all for your positive feedback! I'm pretty sure that Peer and possibly even some students of the Hochschule Pforzheim will read and appreciate this. Seems almost like a prank to me. Why would someone offer a course in a pretty much obsolete platform/programming language? Or is Assembly still used for robots? Good point. Even in nowadays computer world with high level languages it's important to understand the basic concepts and rules of computers, especially microprocessors. You find branches and loops in most computer languages including machine-oriented languages. There are even things that you can see and experience much better in low-level languages: For example there is a rule that you can trade speed (time) in for memory and vice versa (see the hint of Thomas in topic "Is there a 'best' way for optimizing code?"). It's true that not all computer scientiests will need all this knowledge. But apart from the knowledge itself one essential thing at school and univeristy is that you learn how to learn and to approach and solve problems. Just my 2 cents... ...I guess Peer knows even more good reasons.
|
|
|
Post by VectorX on May 10, 2016 12:19:29 GMT -5
Even in nowadays computer world with high level languages it's important to understand the basic concepts and rules of computers, especially microprocessors. You find branches and loops in most computer languages including machine-oriented languages. There are even things that you can see and experience much better in low-level languages: Yeah, working in IT (if I remember correctly), you'd be able to come up with the tech stuff/examples way better than I could. It's true that not all computer scientiests will need all this knowledge. But apart from the knowledge itself one essential thing at school and univeristy is that you learn how to learn and to approach and solve problems. Just my 2 cents... ...I guess Peer knows even more good reasons. Probably, because it would seem that the next thing you know there'd be classes on Atari 2600 programming
|
|
|
Post by Peer on May 10, 2016 13:45:32 GMT -5
Thanks for all the feedback!
Unfortunately, I only have very limited time to post in the forum. But as there seems to be some interest in the motivation for this lecture, let me give you some background information and let me explain a bit about the idea behind this course.
The course is not a prank, but has some serious educational intentions.
I am not an expert in robotics. I am a professor of computer science and software engineering. Before I assumed my position as Pforzheim University, I worked as a senior software developer in the R&D departments of several large EDA companies and was mainly concerned with devising algorithms and implementing them.
At Pforzheim University, I teach all sorts of computer science and programming classes, ranging from introductory courses to advanced lectures on algorithms and data structures and design patterns. When it comes to learning how to program a computer, I am convinced that nothing is more boring than doing text-in / text-out programming exercises (like I think so many of us suffered from in our own programming classes). That is the reasons why I started to use (educational) robots as a means of making programming exercises more interesting and more fun. The students actually see what their code does when a robot moves or crashes into an obstacle. So the “robot programming” class is a class about advanced programming techniques and general programming concepts, illustrated by using such techniques to control autonomous robots.
At the beginning of this spring term, in March 2016, I had the problem that most of the robots which are usually used in this course had to undergo maintenance and so would not be available. Thinking about a good alternative coincided with my father sending me my old Vectrex device which he had discovered in the vaults of my parent’s home. When I was a kid, I played for hours, and the Vectrex was one of the main reasons why I became interested in programming and later on studied computer science, because I wanted to understand how these games worked and why in the end the computer always won.
So when the packet arrived, I enjoyed being a kid again for an evening, playing my old cartridges that came along with my Vectrex. The same night I decided to do what I had dreamt about as a child: to write my own Vectrex game and run it on the real machine. By that time, I had no idea about the details of how to do this, by I vaguely knew that homebrewed games for the Vectrex existed. I started some research on the internet and soon realized that this would take much longer than I could afford in my free time.
The solution was easy: do this as part of one of my lectures :-)
This also solved my problem with the non-available robots. Instead of using robots for the programming exercises, we now use the Vectrex. The students’ task is to design and implement their own retro video game, using an emulator for development and testing, and the promise is to see the result run on a real Vectrex arcade machine from the golden days of the dawn of the computer era.
This proved to be a big motivation for the students.
In the lectures, I focus on advanced hardware oriented C programming, as well as on techniques, algorithms and data structures for game development. We also cover the details of how a compiler works and how C is translated into assembly language. The important part here is that we explore general concepts, e.g. how C function parameters are passed via stack frames, or how global and local C variables are treated completely different on assembly level, Or how constant and non-constant C variables results in completely different things on assembly level.
These aspects and concepts are machine independent. However, of course we also deal with the Vectrex specific stuff, i.e. the MC6809 processor, the Vectrex memory layout, bios etc. The Vectrex bios is small and decent enough to be understood completely (well, almost…), so this a nice example to see in detail how a piece of software and an operating system interact and work together.
Furthermore, emphasis is laid on designing computationally efficient (meaning fast) algorithms and memory efficient algorithms (using as few memory as possible). Both is really important on a small system like the Vectrex, as you can imagine, if you want your game to be complex but to run smoothly at the same time. If one programs directly in assembly language, then these things are obvious. But if one uses a high level language like C, it is not that obvious which of the many ways to write the same thing in C is the most efficient.
Today, on modern machines, most programmers do not really care if their programs use more memory than would be necessary, or if the computations take longer than necessary, as today’s machines have abundant memory and processors are so fast, that a few additional machine cycles do not seem to matter.
As someone here so nicely put it, today every dummy can click together a java app without really needing any deep knowledge about programming. As I experienced, many of today’s software developers are proficient in programming in a high level programming language, but lack a deeper understanding of what code is actually generated by the compiler and of what conceptually happens on the processor level (let alone have some basic knowledge of assembly language).
However, all these things get really important when it comes to game development on the Vectrex. Or, to put in a modern context, when it comes to programming embedded systems with limited resources.
So, in essence, for me the Vectrex project is a way to disguise that I am teaching the students some relevant and up-to-date hardcore programming skills, while making it look like fun :-)
|
|
|
Post by Vectronic on May 10, 2016 14:30:06 GMT -5
Peer: Thank you so much for your time to give a reply here on the Vector Forums. Your time, input, and explanations are all very much appreciated. What you are saying makes perfect sense, especially about programing with either no real limitations (if it works fine, why optimize?) or very constrained limitations which force you to optimize everything possible. This is what I have been explaining to friends about certain homebrew games and why they are so amazing on the Vectrex given the limitations they have to be programed under. I am interested to see what your students come up with by the end of the course. Thanks again.
|
|
|
Post by VectorX on May 10, 2016 15:03:49 GMT -5
The course is not a prank, Well you just have to understand the source, as Helmut once came up with a fairly realistic-looking April Fool's joke about some overlay (if I remember correctly) that was sold that was supposedly printed in Ireland or somewhere not known for Vectrex production. So, with material like that, along with a web page in German as well, just seemed right up his alley
|
|
|
Post by Peer on May 11, 2016 5:16:35 GMT -5
I was not aware that Helmut can be that deceitful... ;-)
But how can you be sure that I am not Helmut writing under a fake name? ;-)
If there is interest, I will try to keep you posted regarding the progress of the project. Your feedback is always welcome.
|
|
|
Post by mountaingoat on May 11, 2016 8:21:15 GMT -5
Prof Johannsen, thank you very much for your posts. You are teaching students skills that are becoming quickly forgotten. Like you said, today you just allocate a gigabyte, who cares. Most new software engineers don't really know how to fight for a few bytes or RAM or cycles.
Anyway, sounds like a great class, I know I would take it if I had the option!
Just out of curiosity, which compiler, debugger and emulator are the students using? The screenshots look like ParaJVE ones.
|
|
|
Post by 50tbrd on May 11, 2016 9:52:24 GMT -5
The truth is that you are teaching your students a skill which promotes a self-employment, something that is both not always available in the fields that students choice and a departure from the norm. I think its great since the institution tends to promote skills which do not lead to a job or promote fields which are oversaturated. This is not an issue with computer programming but there are plenty of degrees which do just that such as Photography, Art History, Theology, Latin, etc. This skill doesn't require a brick and mortar store, doesn't require full-time investment, and touch on a popular, growing industry of retrogaming, in fact, Vectrex maybe one of the fastest growing segments in terms of popularity, development and potential of a return.
You've also created a class which could become a must take and give you more desirable within the University. I see the potential for upper level classes. I took classes multiple times just because I liked them.
I also think its exciting that this year could see the influx of almost 30 games from a source which was unexpected, not to mention what these students may go on to program or even what it may mean if the classes is offered in the future.
When must the game be completed by? Will the games be presented online if not through binary than by video? Is it up to the students whether or not the binary is available, as in their choice to make it downloadable, or sell in the future?
An interesting idea could be a website which allows people to purchase bin files and pays the authors a percentage. This could mean that the students could continue to make games and get money for as long as the website is available or they choose to have the bin available on the site.
It'd be interesting to hear from your students as well.
|
|
|
Post by VectorX on May 11, 2016 12:32:13 GMT -5
But how can you be sure that I am not Helmut writing under a fake name? ;-) Yep, looking up the I. P. addresses of both doesn't really help, since those could be done at work/other peoples' houses. Not being fluent in German doesn't help either, although several words on the site translated from Google (such as "deadline" and "courses" and the like), so I wouldn't be able to ascertain what's real or not from there. I don't know what all "Prof. Dr. rer. nat." Johannsen stands for either, as I've worked in career transition before, doing resumes, which are supposed to be one, maybe two pages long at most. One had to be cut down from five to three pages since the guy had an absolute ton of technical skills, which I don't see how that could be possible for a person to learn and retain such an incredible amount of knowledge, but I suppose it's possible. Likewise, you could just be very accomplished in your field as well with a lot of titles. So, it just seemed a bit suspect. The truth is that you are teaching your students a skill which promotes a self-employment, something that is both not always available in the fields that students choice and a departure from the norm. I think its great since the institution tends to promote skills which do not lead to a job or promote fields which are oversaturated. An interesting idea could be a website which allows people to purchase bin files and pays the authors a percentage. This could mean that the students could continue to make games and get money for as long as the website is available or they choose to have the bin available on the site. All of the above would also constitute part-time work and pay, unless they dived into many fields, such as homebrews for other platforms, and not just the Vectrex. It'd be interesting to hear from your students as well. They probably aren't all fluent in English as well as German. However, anything that can be translated and passed along here would be cool though for those that aren't
|
|