Following some conversations with colleagues and students (mainly from DT009/2), I’m planning to run a series of programming workshops over the summer. What I’m hoping to do is take a step back from the formally defined curriculum of our electrical engineering programmes and focus instead on some really practical example programs, each of which illustrates a solution that I see arising over and over again in real-world engineering work.
Some of you may have noticed that almost every time I write a new microcontroller program, I begin by grabbing some simple template code from my own blog and then just modifying it to suit the needs of the specific application. Similarly, as you may also have noticed, I find myself using the same state machine structure over and over again in my C programs. I think of these kind of simple starting points as “recipes” or “patterns” for programming. To be a confident problem solver in software systems, it really helps to have a good working palette of these kind of solutions that you can call upon at a moment’s notice. So basically, in this series of workshops, I would like to share some of the software “recipes” that I find most useful in the course of my engineering work, as well as one or two I’ll be borrowing from the likes of Richard Hayes and Damon Berry.
Here are some specific examples of the type of topics I’m thinking we might cover (in no particular order):
- Firstly, review basics of C, Python, etc.
- Useful design patterns for C, Python – e.g. state machine.
- dsPIC microcontroller basics – registers, timers, interrupts, etc.
- Real-time communication between microcontroller and PC.
- Robotics programming – e.g. controlling servo and stepper motors.
- Real-time signal processing (e.g. audio) on a microcontroller.
- Graphical user interface (GUI) programming in Python.
- Graphical program output (e.g. real-time graphs).
- Simple 2D and 3D graphics using OpenGL.
- Simple machine vision programming.
I’ve included a lot of things on that list that I see people making use of in final year projects, so I suppose this series of workshops might be of particular interest to those entering final year in September 2012. However, anyone that’s interested is welcome to attend.
The reason I’m writing this post now is that I still have to decide where and when to actually hold these workshops. Because many of the people to whom this is most relevant are likely to be working full-time during the summer months, I had originally thought about running the sessions on a weekday evening every couple of weeks. However, I had forgotten that Kevin St closes at 5 or 6pm during the summer, so that basically rules that out, unless an alternative venue can be identified. Alternatively, I could run an afternoon session once every couple of weeks. Another possibility that Michael Farrell suggested is to run an intensive workshop (e.g. over a couple of days) before lectures start in September. I could even run this as some sort of online course. Whenever it is that these sessions are scheduled, the time is definitely not going to suit everyone and even those who do attend are likely to miss some sessions due to holidays etc. I’ll therefore be trying to keep each session pretty self-contained. Also, I’ll be doing a blog post to accompany each session, documenting the example program covered in that session.
Anyway, I just wanted to outline what I have in mind in terms of content and then open up the discussion about what people are interested in covering and what suits best in terms of times and days. If you’re interested in taking part, please comment below with your preference regarding content and/or scheduling. Don’t be shy!