A powerpoint .pptx to Latex .tex convertor tool

A colleague of mine is making some very nice Latex-based presentations, including a dynamically generated section-overview on each slide. Since all my current slidedecks are made in Powerpoint I started working on a small tool that converts .pptx to .tex latex files. (make note: this tool won’t work with oldschool .ppt files!)

The tool is far from done. But the basic functionality is there. Currently the tool converts a .pptx file to a  .tex and keeps the following slide information:

  • All titles
  • All text/bulletitems
    • Including identation
  • All section headers
  • Option to include hidden slides
  • All images
    • Each image is extracted and save as a separate file

I’m using the Open XML SDK 2.0 which allows more easy parsing of .pptx using C#. More info on how the tool was made might show up here some day.
Other features that I’d like to include is the ability to export the notes (shouldn’t be a problem) and some simple text formatting information (bit harder).

You can download the sourcecode on github: https://github.com/timdams/Pptx2Tex

Strokes: achievements while programming!

Ok, so I’ve already hinted about this several posts before: an actual implementation of achievements-based programming in Visual Studio is being made as we speak. In this post I will humbly and proudly present the Strokes program that is rapidly evolving into something I’m eager to use in my own classes. Humbly because the work Jonas Swiatek has done is, in my opinion nearly epic, for each component in the project that I understand, there’s about 3 others that I don’t. Proudly because, it being a googlecode project, I in fact have made several small contributions to the project, not in the least dozens of mails in which I describe my ultimate wishes on how the program should behave.

Explaining how the whole shebang works internally is not what this post will be about, instead, I’d like to simply throw around some pretty screenshots and show of the program the way the end-user might see it. Since this program was written to be as extendable as possible, in the end of this post I’ll give a brief overview on how others can use the Strokes-code to write new achievements.

Before reading on, I’d like to point out this project is still a work-in-progress. So if you are a) disappointed or b) excited, there’s 2 things you can do: you can help us out and contribute in any which way you see fit (provide ideas for challenges and achievements, contribute code or art, give basic feedback) or you can simply nod with your head sympathetically, leave and do other things *grin*.

If you want to see how it all works or make some contributions, all information can be found here: https://github.com/jonasswiatek/strokes. Make sure you read the wiki on how to setup your Visual Studio if you wish to test the current version of the project. And of course, don’t hesitate to contact us.

Update (24/08): An early beta can be downloaded of the strokes program so people can test the application themselves. Let us know what you think of it. Download here. Read more of this post

“World of C#-craft” part 3: other sources for inspiration as an interlude to Strokes

A lot has happened since I wrote on my dream of teaching C# using a system where my students could earn achievements (previous parts: Part 1 intro, Part 2 survey). In fact, my dream is actually nearing completing thanks to the hard work of Jonas Swiatek who is building exactly what I need, with a little help of myself. In a next post I’ll give a full overview of what this is (if you’re anxious to find out, go check out the Strokes Project on googlecode). Expect this review in a couple of weeks. Consider this post an interlude to the post where I present the Strokes project!

So, in the meantime, allow me to quickly summarize what other projects and sources currently exists (besides the earlier mentioned Ribbon Hero) and which can be used as inspiration both for the Strokes project and for others going the same ‘achievement-based’ learning path. Oh yeah, and if you think that Negative Achievements don’t exist, think again and check out part 3 of the excellent “The cake is not a lie” articles. Speaking of lying cakes, you definitely should check out this comic on achievements and portal 2 (click image for the full comic)!

One of the original projects that should be a must-see for anyone seriously thinking about teaching a programming language is the PexForFun project by Microsoft Research. This, free to use, project is a series of programming challenges (C#, F# and VB) both extremely easy and stupidly hard to solve. Users can randomly start a challenge or, more wisely, solve them in order. Basically the user is presented an in-browser code editor with per challenge a few lines of code and usually a title that hints to what needs to be done. The nice thing is that no additional help is given. Instead, the user simply needs to guess what needs to be done by adding some code and then hit the ‘Ask Pex!’ button which will results in the current code being compiled and tested for correctness of the challenge, followed by feedback of why the current test failed. So bit by bit you, usually, get closer to the solution and in the meantime hone your algorithmic thinking skills. If you are on the road, PexForFun also has an excellent Windows Phone 7 application that does exactly the same, but on a way smaller screen (more info). Though PexForFun won’t win any prizes in the looks department, it is definitely worthwhile to check out.


What will win prizes in the looks department is Jira Hero. This plugin for Jira , a bug tracker, does exactly what we are aiming for in the Strokes project: achievement-based learning with an online part that allows users to compare each other’s progress. The user, in a playable manner, learns how to use the Jira systems and earns badges by performing specific tasks. Leaderboards allows a user to see his progress compared to other user. The project ended on third place in a plugin programming contest, Codegeist V, by Attlasian, the makers of Jira. Even if you’re not into Jira, check out the postmortem of the Jira Hero project here.

A small blogpost with not much additional information but a brief paper (that’s not very exhaustive in my opinion) describes commonly used game mechanics. This particular posts is on achievements, more posts are promised but to be honest, don’t way for them because it appears that the author(s) have moved on to other interests, still, check out the paper for some inspiration here.

For real, scientifically backed, inspiration and papers, several high-ranked journals exists:

  • Wiley’s “Journal of Computer Assisted Learning” (link)
  • Elseviers “Computers & Education – An International Journal” (link)
  • “Journal of Educational Technology & Society” (link)
  • “Journal of Research on Technology in Education” (link)

Many other journals in fact exists which sometimes focus on parts of game-based learning but the aforementioned can be considered, in my opinion, to be prime resources. For a complete listing of what is out there, and more, check out the following site (WARNING: contains a lot of adds!).


World of C#-craft part 2: what does the audience think?

In a previous post I ranted on how cool it would be to use pc-game mechanics in a programming course. Before actually getting down and dirty and try to come up with an actual system for this I surveyed my students to see if the idea has any resonation with the target audience, the students themselves, or not. Now it is very interesting to mention this cool project by Jonas Swiatek who is actually implanting an MEF-based extension for Visual Studio 2010 to allow achievements while coding! More on this project in a later post, but you should definitely check it out if you want to have a feeling of how achievements could be used in a programming environment. Read more of this post

“World of C#-craft”: an achievement-based classroom?

In a previous post I already briefly hinted at this: wouldn’t it be cool to integrate popular pc-game mechanics in classroom labs?

What I am proposing in this post is another way of organizing practical program labs for an audience that isn’t necessarily 100% willing to become a good programmer. Teaching C# classes to undergraduates electronics-ict isn’t always easy:

  • The crowd is pretty diverse: some have no programming knowledge at all, others have already written whole VB.NET apps, etc.
  • They aren’t all interested in the programming aspect of the studies but perhaps are more in to the electronics-part. However in the end, they will need to be proficient in both electronics and ICT.
  • They can’t see why toying around with console-based programs is, in my opinion, a necessary evil for first-time programmers.

However, in the end, all if these students have to become proficient programmers, whether they want to or not.

Having tried several approaches I don’t seem to be able to find an all-encompassing way to reach each and every last one of the students. I even tried to incorporate live voting and twitter integration in slides during lectures…an experiment with mixed results. Don’t get me wrong, I’m pretty sure I’m reaching above an average number of students, but still: I want all of them to love to program! I think I’d be a poorly ambitious teacher if my aim wasn’t to try and get a full classroom to become passionate about programming.

The idea that I propose here lingered for quiet sometime in the back of my head. Being a fanatic gamer myself I am always fascinated how simple game mechanics like achievements, quests, constant feedback of the player’s progress and leveling can make any ordinary game more fun and worthwhile to play. Somehow the act of earning things only a select few can reach is strangely addictive. So why not use these game mechanics in programming classes? Could a simple, yet fun and addictive achievement-system that constantly gives feedback to the student on his progress, enabling him to compare his results with others enable a teacher to reach more students? Could students become more motivated to do menial programming tasks (I dare anyone reading this to come up with fun programming tasks for the first few weeks, when the only thing a student knows is how to create variables and write stuff to the screen)? Of course, a small side note here: this system is primarily aimed for the gray zone of students who ‘might become passionate programmers’ but who usually, in classic classrooms, grow a mild hatred towards anything containing things like i++, public static overrive int, etc. Passionate students will enjoy this system as well, but they actually simply like to code, no matter the form they are learning new things…they might even think of this system as redundant.

This post is not about actually making an achievement-system that I propose. I’m merely trying to give the reader an idea of what I think might be an interesting way to organize a classroom and secondly I hope I can enable some people in actively pursuing this topic. I’m certain some of my ideas (that are far from original) can be as easily applied in any practical-oriented classroom in higher education systems.

So yes, this will be a braindump with, I hope, tiny little ideas that can grow in people’s mind. This won’t be a coherent, scientific rambling about how a classroom can be organized…I leave that to the educationists of the world. And perhaps, if I’m bored with the gazillion other programming ideas I have, I might someday write a follow-up where I actually show a real, useable application. Who knows. Read more of this post