And this here is related to the web link I posted:
Apologies if you found or find the last question confusing. The whole thing is not intended as a scientific exam, but meant as a fun entry test for the students to raise interest in the lecture. Also, it is not intended to mislead or trick or fool anyone here. I just wanted to share it with you and let you all in on the fun.
I am aware that the notion of "game" or "computer game" or "first game" is not well defined. I just wanted to include one question about retro gaming in the test. Maybe I should rephrase the question as "first coin-op video game", but I guess even that holds some ambiguity. You are welcome to suggest alternative answers and send them to me so that I can update the questions for the future.
Interestingly, so far none of the students (27 last year, and 5 this year by now) had any problems with the answer to the last question (hint: use lower case letters only). Most of them got stuck with the second but last question (sadly enough!). Well, I guess Smart Phone Generation has come across enough trivia to know of the intended answer, but seems to have trouble with basic arithmetic and combinatorics...
And yes, unfortunately the lecture was cut down to 3 ETCS, which amounts to 30 hours in class and 60 hours project work at home. This will make creating a decent game as part of the next course a lot harder. All the other elective courses of our study programs are based on 3 ECTS. Last year I found a workaround and had 6 ECTS at hands, but this time I was forced to comply and there was nothing I could do about this. I had to choose between either not offering the course at all, or doing as requested.
Thanks a lot for offering your help! Yes, I will do so. Might take a while, as right now I am travelling. The new semester will start by the middle of March, and according to experience the first weeks will be very busy. I will send you a pm.
Greetings to you all, and sorry for the delay. I finally found the time to post a short update here.
Spring term has started, and I am happy to report that twenty students are attending this year’s course. Eight of them had preregistered by means of the fun entry test mentioned in my prior posts. It was a nice surprise when more than twice as much showed up at the first meeting.
Here is the link to the 2017 Project Gallery web page. It monitors the progress of the projects, and I will try to update this page as often as I find the time. Everything is still subject to change, but the first project ideas are already to be found. I am very curious where the journey will take us this time.
Thanks a lot for this post, Malban! I showed it to the respective student today, and I could see how surprised and happy she was about what you wrote. Such external feedback greatly contributes to the motivation of the students!
Just wanted to let you know that there have been quite a bit of updates on the project pages. Check out the list at the bottom of the gallery page to see the most recent changes.
Additionally, here are some numbers:
It seems that the course has stabilized at 21 participants. We have a nice variety and distribution of members from all four of our study programs: 4 students are from Computer Engineering, 8 from Electrical Engineering, 5 from Mechatronics Engineering, and 4 from Medical Engineering.
All of them have learned C and C++ as part of their curriculum, but none of them had come in touch with assembly language before. Some few have a little experience in micro controller programming with C, but, similar to last year's course, for almost all of them this is the very first larger software project beyond academic examples from previous lectures.
In fact, the current framerate is a perfect 50 fps This is mainly just a very early prototype, and I put the video online only because of the nice intro. Very retro (yes, as a kid, I watched the original TV series). I am curious how the project (and the framerate) will evolve once the actual gameplay is added.
Concerning the IDE, I gave this a lot of thought when I planned this year's course. At one point I was thinking about using assembly only, and no C. I love assembly programming, and Vide is really great!!! Actually, some of the students are using Vide to design their vector lists. The point is, that assembly language is not part of their prior curriculum (and let me state here that I do not like this fact). So, such a course would have to start at zero, and with only 30 hours in class, this would make individual Vectrex projects of each student simply impossible. The focus here is on C programming techniques and a better understanding of what the C compiler does, with all advantages and disadvantages of a high level language. As a side effect, the students are introduced to assembly language, and I think that knowledge of the interplay between the high level code and the generated assembly code is absolutely necessary in order to really understand a programming language. We also touch the topic of using C for rapid prototyping, and then using assembly for those parts which should be runtime optimized. The Vectrex projects are in a sense a (very nice) byproduct which proved to greatly motivate the students (as do your comments on their projects!). An assembly-language-only course would be an ideal continuation of this course. Unfortunately, right after this semester, the students usually start working on their final thesis, and do not take courses anymore.
I know the course is not VECTREX programming, but learning programming HW using compilers, and their setup also. Probably also what makefiles are, what a linker is, what object files are, what a "make clean" does etc...
You won't do/learn that using a IDE.
One probably "could" configure Vide to run compile and link c-files - at one stage I thought about including scripts for a "C" setup... but if all is setup nobody learns... (Vide is able to call scripts and actions on all files in a project, before build, as build and after a build...)
And I actually would prefer at some stage to write an own C compiler and integrate it into vide. No makefiles than :-) - plan would be - a compiler able to to register calling convention, without mixing up a/b ->d.
Bought some literature already - just didn't find the time... yet.
Happy vectrexing to your course!
If you need another kind of output of vectorlists in vide - let me know. (Although - the output can also be scripted :-) - so anything is possible already)
Don't worry, I didn't feel being teased, though teasing is alright I like exchanging views and opinions, and feedback is always welcome.
Sometimes, I find it helpful for myself to write down the goals and educational objectives of this course. It is part of my more serious research to think about (unconventional) ways and methods to inspire young students to learn programming.
I like what you wrote. In fact, I had already asked myself whether or not you would be interested in integrating a C compiler into Vide at some point in the future. I will show you my C environment as soon as I have finished a couple more tweaks, and I am interested in what you think about it. It would be cool to have C support in Vide.
What also might interest you: One of my students who participated in last year’s course has meanwhile finished his Bachelor’s degree in Computer Engineering and is now studying in our Embedded Systems Master degree program. He is interested in writing a 6809 backend for CLANG as part of his Master Thesis coming winter term. As work on gcc6809 seems to have stopped a long time ago, this would open up the possibility of having a modern and up to date C compiler for the Vectrex. I will keep you posted on this.
Yes, I finally found some time over the holiday weekend to update all the student project pages. Most of them are on schedule and now in ongoing development.
And yes, "The Count" is a reference to Sesame Street. Guess to whom this game is dedicated, and who my two target players are, once they are old enough? As far as I remember, "Graf Zahl" is "Count von Count" in the original American series. I hope the game will be fun for adults as well. Since you spotted it first, can I take it that you volunteer as alpha and beta tester?
Regarding the (current) implementation, you are correct, inlining (both the gcc feature and inlining "by hand") is one of the C level "tricks" used in many places. I will try to collect and document all the other tricks and hacks and write them up for future reference for anyone interested.
PS: Yes, the dragon pic is nice. So far, I have only seen a short demo of the game intro (confer video on project web page), but not pieces of the game itself.
PPS: I saw the awsome boxes of "Karl Quappe" on the Vide page. Congrats! I will show the pics to the course. Maybe I can motivate some students to also build boxes for their games.