Advice from coders?

Robert

Active Member
Moderator
Joined
Apr 1, 2005
Messages
10,803
Reaction score
6,529
Looking to tap into a bit of wisdom from our resident programmers.

I have to complete a project next summer which will involve programming.

I initially (for next week) have to select five options, ranked in order of preference.

Here is a selection of the ones I think look interesting:
B compiler;
In-car interactions using pressure ;
Map visualisation registration;
MC6800 Emulator;
Reducing the power consumption of PC;
Remote monitoring of environmental experiments;
Visualizing Geo-Tagged Data.

What I'm looking for is which (if any) of these would be most feasible for someone with no background in programming.

Any thoughts?
 
Those all seems like pretty advanced projects for beginners. I'm almost tempted to say that the mc68000 emulator might be the easiest as it's fairly well defined (think I still have an official MC680X0 reference manual if you need it). Plus, you could probably find a good example of it somewhere out there (hmmm... UAE ring any bells? ;))

I have no idea what you'd need to do to reduce power consumption of a PC (unless putting into S3 sleep mode counts, in which case, pick that one ;)).

What the hell is "In-car interactions using pressure"? Software for cars is ultra cool and stuff, but what the heck?!?

Remote monitoring of environmental experiments might be fairly straightforward. You may need to do some serial programming there. Depends how things are hooked up. It's probably either serial or IP.

My 2nd year project was to make a Turkish Draughts game using Pascal (although I convinced them to allow me to use Module-2 on an Amiga 1200 - that was fun bringing it in so they could actually run my assignment). This seems more like a 4th year project. That, or I went to a lame ass school!
 
Those all seems like pretty advanced projects for beginners. I'm almost tempted to say that the mc68000 emulator might be the easiest as it's fairly well defined (think I still have an official MC680X0 reference manual if you need it). Plus, you could probably find a good example of it somewhere out there (hmmm... UAE ring any bells? ;))

It's actually easier than that; it's the mc6800, the 68000's predecessor.

I have no idea what you'd need to do to reduce power consumption of a PC (unless putting into S3 sleep mode counts, in which case, pick that one ;)).

According to the blurb:
PC usage consumes a lot of power and causes the emission of lots of carbon in large organisations like companies or universities. Large graphical screens with lots of pixels mean that scrolling, for example, can consume a lot of power. If we can reduce the cost of these very common interactions, even by a small amount, then we could save lot of carbon across a large organisation. Such features may also save power on laptops or phones which often use similar widgets to desktop computers.

I suppose there's a point to that; even my little bit of the college is awash with hundreds of desktops that are never turned off.

What the hell is "In-car interactions using pressure"? Software for cars is ultra cool and stuff, but what the heck?!?

Again from the blurb:
The aim of this project is to look at enhancing interaction in the car by augmenting the steering wheel. The driver has his/her hands on the wheel most of the time. By squeezing the wheel the driver could make input (with up to 10 fingers). vibration motors in the wheel could also give feedback to the driver.

They go on to talk about augmenting a gaming wheel with pressure sensors, etc.

Remote monitoring of environmental experiments might be fairly straightforward. You may need to do some serial programming there. Depends how things are hooked up. It's probably either serial or IP.

A bit more on that too:
The objective of this project is to design, implement and evaluate a system for monitoring environmental parameters in marine environmental chambers. The system will communicate environmental parameters from pre-installed sensors within the mesocosms to the experimenters using Twitter, Facebook and email.

That one actually looks as though it might be doable, if I can learn enough between now and May.

My 2nd year project was to make a Turkish Draughts game using Pascal (although I convinced them to allow me to use Module-2 on an Amiga 1200 - that was fun bringing it in so they could actually run my assignment).

Well played. :D

We had a lecture about pre-emptive multi-tasking the other day and the Amiga was mentioned briefly as being "at least a decade ahead of the curve."
 
It's actually easier than that; it's the mc6800, the 68000's predecessor.
Not necessarily easier, my dear, as it's a different instruction set as far as I know... Depends how well it's documented.
 
Ya, I think if you want an honest answer from us you'll need to attach the "blurb" for each of those.

They're probably all equally complex, but I find a great interest in something is a great way to counter complexity. Which one do you find to be most interesting? Seems like there's a good selection that should be able to please anyone.
 
Ya, I think if you want an honest answer from us you'll need to attach the "blurb" for each of those.

Appended to this post.

They're probably all equally complex, but I find a great interest in something is a great way to counter complexity. Which one do you find to be most interesting?

I'm not sure as I only found out about them today. There are another sixty or so to choose from but none really caught the eye.

Seems like there's a good selection that should be able to please anyone.

Yes, we have to select five and then some algorithm allocates them, so I'm unlikely to get my first choice anyway.

B compiler (ID: 1733)
*Suitable as a Software Engineering project.


Description:
Before Dennis Ritchie and co. invented the C programming language, they started out with B. The B programming language has a similar syntax to C, although it does not support types and struct declarations. There is a manual here -
http://cm.bell-labs.com/who/dmr/bintro.html
.

This project is about creating a simple B compiler. It will require the use of standard compiler generation tools, such as antlr.

There is a choice of backend code generators (i.e. target languages that the compiler produces). You might consider ARM assembler language, since I have an ARM Linux system available for experiments. Alternatively, you might want to run in JavaScript, like Google's dart programming language. Or maybe you want to output plain old x86 code.

----------

In-car interactions using pressure (ID: 1677)


*Suitable as a Software Engineering project.

*Project may require participation from people other than the student and the supervisor as part of the evaluation.


Description:
The aim of this project is to look at enhancing interaction in the car by augmenting the steering wheel. The driver has his/her hands on the wheel most of the time. By squeezing the wheel the driver could make input (with up to 10 fingers). vibration motors in the wheel could also give feedback to the driver. This could be done in an eyes free way so that it does not distract from driving.

We will augment a gaming steering wheel with pressure sensors linked to a PC. We can then use these sensors to control car features simulated on aphone (or tablet) like music player, air con, in-car systems. We can embed simple vibration motors in the wheel to for feedback to the driver on the interactions.

For evaluation we will get the driver to control these functions while playing a driving game. we can then see how disruptive they are on driving performance.

This project will give you excellent development skills on android, knowledge of using sensors and tactile feedback and good skills in evaluation.

-----------

Map visualisation (ID: 1737)

*Suitable as a Software Engineering project.

*Project may require participation from people other than the student and the supervisor as part of the evaluation.


Description:
A typical road/street/Google map is "topographically" correct - that is, it is drawn to the same proportions as the real geography that it represents. Other kinds of maps, such as the London Underground map, are "topologically" correct in that they show connectivity between places correctly, but not necessarily in the correct geographical proportions. The standard Glasgow University map is also only topologically correct, since it is stretched and squeezed in places.

In order to use a topological map like the University map with a GPS system, the map must be registered against the real geography that the GPS system uses. The registration process enables GPS signals to be translated onto the topological map. The MakkaMappa system (www.makkamappa.com) supports map registration - take a look to see how any map can be turned into a GPS map.

Registration is a non-trivial, error-prone, process. The purpose of this project is to develop ways of visualising how effectively the registration has been carried out.

An ideal end point for the project would be the development and evaluation of a tool to help those carrying out the registration process. Written in Javascript, this could then be included in the MakkaMappa website.

-------------

MC6800 Emulator (ID: 1747)


*Suitable as a Software Engineering project.


Description:
The aim of the project is to develop a system emulator for the Motorola MC6800 microprocessor for use in teaching. The deliverable should emulate a complete 6800 based microcomputer with RAM ROM and memory mapped I/O devices (switch banks, lights, DAC, ADC etc) mimicking the standard Motorola compatible interfaces of the era (MC6821 PIA etc). Support for various levels of interrupt as should also be included. The system should be extensible to include an integrated assembler/debugger able to assemble standard 6800 assembly language and provide tools such as tracing and breakpoints.

At a minimum, the emulator should be able to run on Windows 7 x64, Windows 7 x86 and Windows XP.

--------------

Reducing the power consumption of PC (ID: 1726)

*Suitable as a Software Engineering project.

*Project may require participation from people other than the student and the supervisor as part of the evaluation.


Description:
The aim of this project is to investigate if we can save power by changing our user interface components and interactions.

PC usage consumes a lot of power and causes the emission of lots of carbon in large organisations like companies or universities. Large graphical screens with lots of pixels mean that scrolling, for example, can consume a lot of power. If we can reduce the cost of these very common interactions, even by a small amount, then we could save lot of carbon across a large organisation. Such features may also save power on laptops or phones which often use similar widgets to desktop computers. So, we may be able to scroll differently or read text out with synthetic speech rather than show it on screen.

For the first stage of the project we will measure the power consumption of PCs doing a range of different tasks and interactions. This will give us a baseline performance. After that we will develop new techniques to reduce the power consumption. We will try 'semantic scrolling' where we dont do live scrolling but just show key parts of the text/image, or create a speech based scroller. The final stage will be to evaluate these with users and measure the reduction in power consumption and carbon emissions.

This project will give you excellent programming skills and UI design skills. The development will be done on a desktop PC and we can use any language we like. We may also try versions on an Android smartphone

-----------------

Remote monitoring of environmental experiments (ID: 1644)

*Not suitable as a Software Engineering project.

*Project may require participation from people other than the student and the supervisor as part of the evaluation.


Description:
This project will be in conjunction with Nick Kamenos, School of Geographical and Earth Sciences.

Experiments investigating the impacts of climate change on the marine environment are conducted in environmental chambers known as mesocosms. Within mesocosms, the marine environment is artificially manipulated by changing its temperature and carbon dioxide concentration to simulate the state of the seas in 100 years. The impacts on marine organisms are then observed.

However, no system is perfect and occasionally the chambers fail. The objective of this project is to design, implement and evaluate a system for monitoring environmental parameters in marine environmental chambers. The system will communicate environmental parameters from pre-installed sensors within the mesocosms to the experimenters using Twitter, Facebook and email. The system shall inform the mesocosm users if environmental parameters in the experimental chambers deviate from a predefined range. The system shall be controlled using a GUI that can be used by a non-specialist programmer. This will allow remote monitoring of the experiments should they fail and allow the scientists to correct the errors.

------------------

Visualizing Geo-Tagged Data (ID: 1721)

*Suitable as a Software Engineering project.


Description:
The process of geotagging involves adding location information to a piece of data. This allows the data to be visualized / superimposed on a map. Examples include website hits
(e.g. maploco) and virtual networks (e.g. techcity.

This project involves creating a questionnaire / survey system where the answers to a poll are geo-tagged, and then the resulting data can be visualized using a map. There are many possible extensions including:

- mobile phone app to automatically add geographical information based on current user location

- aggregation of responses within a certain geographical radius, to give summarized data
 
Ya, by the sounds of it, it all sounds interesting and doable. I get the feeling that you'll be working as a group? That should be fun. The only advice I might offer is to be careful about any projects that require graphics. Graphics often requires artists and programmers tend to make lousy artists. But then, you probably are an exception here as you're already an artist (although, a musical artists, still, your mind probably works more like an artists then mine does). In other words, ignore everything I said. :)
 
Ya, by the sounds of it, it all sounds interesting and doable. I get the feeling that you'll be working as a group?

No, the project is a one person effort.

The only advice I might offer is to be careful about any projects that require graphics. Graphics often requires artists and programmers tend to make lousy artists. But then, you probably are an exception here as you're already an artist (although, a musical artists, still, your mind probably works more like an artists then mine does). In other words, ignore everything I said. :)

Hehehe.... I get what you mean.

Thanks.
 
I'm tempted to say do the 6800 emulator...
 
I'm tempted to say do the 6800 emulator...

It'll definitely be one of my five and possibly my first choice. Even if I do make it my first choice, I might not get it. There are about fifty of us selecting so there's a fair chance that more than just me will choose it, in which case an algorithm allocates it to a student.
 
I'm tempted to say do the 6800 emulator...
That's what everyone will do which means you are up against everyone else. It's also easy but boring to mark in terms of verifying behaviour.
As the specifications for the other projects seem more open ended. What is the expectation that any of the projects will work and what counts as working? How will they be scored? Are some of the projects proposed simply to be tar pits for the unwary and do the project proposers also mark?

While it's almost always easier to do something that has already been done thousands of times before it might not be where the real learning is. Really I didn't drop in to offer advice, just more confusion. :) Good luck picking (and completing) your project.
 
That's what everyone will do which means you are up against everyone else.

Only one student can do it, so if everyone does choose it, they'll allocate it to only one of us.
And the impression I have so far from the other people on the course is that they find this subject incredibly dull, whilst it's probably my favourite.

It's also easy but boring to mark in terms of verifying behaviour.
As the specifications for the other projects seem more open ended. What is the expectation that any of the projects will work and what counts as working? How will they be scored? Are some of the projects proposed simply to be tar pits for the unwary and do the project proposers also mark?

All good questions for which, as yet, I have no answers. :)

While it's almost always easier to do something that has already been done thousands of times before it might not be where the real learning is. Really I didn't drop in to offer advice, just more confusion. :) Good luck picking (and completing) your project.

Thank you. (assuming I last that long..)
 
Only one student can do it, so if everyone does choose it, they'll allocate it to only one of us.
And the impression I have so far from the other people on the course is that they find this subject incredibly dull, whilst it's probably my favourite.

I remember my first z80 emulation. It was far from perfect, but I learned a lot writing it. Again, it was interpretive, first written in C, playing around with different strategies for speeding up the fetch/decode/execute cycle and eventually moving the core emulation to 68000 assembler where I could use tricks not easily accessible from C. Some of that experience ended up in my VM project years later - basically taking on board the lessons about the features of real CPUs that make them a pain to emulate that a virtual machine architecture would not necessarily need.

If I ever revisit that project, the one outstanding thing to implement is a JIT. It was designed specifically with that in mind...
 
Here is a selection of the ones I think look interesting:
B compiler;
In-car interactions using pressure ;
Map visualisation registration;
MC6800 Emulator;
Reducing the power consumption of PC;
Remote monitoring of environmental experiments;
Visualizing Geo-Tagged Data.
What I'm looking for is which (if any) of these would be most feasible for someone with no background in programming.

I've gone for:

1. MC6800 Emulator;
2. B compiler;
3. Interactions in a public space using MS Kinect (not on my original list but sounded interesting when I spoke to the professor);
4. Visualizing Geo-Tagged Data;
5. Reducing the power consumption of PCs;

Apparently anything below third choice is unlikely.
 
Compiler construction should be very doable. I remember doing that as a project as well. Hmmm... Wonder whatever happened to all those projects. Probably thrown out when I threw out all my 3.5" floppies. :D
 
@Karlos:

Something went awry with the University's selection algorithm and I was this lunchtime allocated a project involving creating software for solving cryptic crossword puzzles :eek:. Something which was not even on my list of possibilities.

I immediately objected and have now been allocated the MC6800 emulator so, come May/June you may find me pestering you for help. :D
 
Sounds interesting. What do you have at your disposal in terms of development tools? Are you using your own system or the schools? Is it Windows, Mac or unix based? And do you have access to a MC6800 device for reference? And what will your emulator emulate? Some pre-built MC6800 embedded OS? Just curious.
 
Back
Top