# Advice of feasibility of final year project

Final year student from an IT college in Ireland. I'm not really sure if this is the right place to post but It seems that graphics programming is very closely related to games and the people here would have the most insight.

So just an introduction to myself and the problem. Basically Im in my final year of my degree and rather than do a thesis we do a final year project that has to be crisp.

My primary language is Java and I've used it many times in the past. It is not a language I would say I love but it is easily my strongest. I've also used Ruby on rails for an internship i got this summer and I have a good grounding on the web side of things. I've also done some very basic c++ (what i would consider basic). My c++ skills basically comes down to different tutorials on things that other languages are based on. E.g heres a lab sheet on containers, pointers, operator overloading or something from the STL. It was more a module to develop our analytical thinking than experience with c++. C++ was just the medium for learning.

My opinion on the language? C++ is an amazingly diverse one size fits all language and its no surprise its around this long. My skills in it are basic at best and could use a mountain of polish. No experience in advanced memory management or any UI frameworks.

And now to the project. Every year the final year students pick a project of choice and if it has some interesting functionality and satisfies a certain difficulty level then its approved. This year however they have gone a different approach due to some very lazy approaches from students in the past. Fair enough I thought.

Well I got my project assigned today. Sure enough I was expecting a project based on my strengths, some sort of db, maybe restful services or a cloud App since those are the buzz words these days.

So the sheet was being passed throughout the lecture hall with the list, every few seconds i would notice someone look to me and snicker or look horrified.

I'm sure by this point you've guessed the project. Your just that smart.

A blood flow physics simulator from a human organ based on nvidia's Cuda....

My jaw literally hit the floor and I said WTF aloud. Not my brightest moment. So we've gone from students making lazy decisions to lecturers just crapping out projects handing us a fork and saying eat it...... but i digress.

If I wasn't up to the task of this then why would I be here asking this question?

The reason is as shocked as I am about this. I don't like to lose. I have my own queries on how appealing this project would be to someone looking to hire me as there doesn't seem to be a lot of jobs going for organ blood flow coders. This is something I will be discussing with my lecturer in depth first but if anyone has any comments on that side of things then I'm happy to hear them.

The main point of the question is the feasibility of getting a decent working project out of this though. I could do 2-3 weeks of research and still not come up with any conclusive results on whether this project is the right way to go.

There is no finite answer to this question, just any experienced advice on what route to pick and what resources to go for.

By this I mean I've always heard that graphics programming is hard. So for someone with basic c++ skills and an OK level of discrete mathematics, is it feasible to complete this project spec or is it the equivalent of shooting myself in the legs and stuggling to crawl past the finish line?

Assuming the answer isn't 'go blast your lecturer for giving you this project'

What resources should i seek out to make this not just a passable project but one that'll be demo-able and I can stand proud beside.

What advice can you give to someone like me that you wish someone had told you?

Absolutely any opinion of debate on this topic is appreciated as I'm fairly lost on what to do.

Thanks for reading my rant and I'll finish up here. Look, I'm good at Java but its not the best thing in the world. I'm OK at C++ but its one language I would really like to explore and make my primary language. (assuming there are jobs for grads in this area)

This project will most likely define the career I take and the language that I base my first decade of programming on. This is important to me so please do not dismiss it as another student who likes games and wants to code them. I'm a hungry young developer and intend to stay that way.

• To be honest, it's hard to tell what you're asking (you spend a lot of time talking about your life story), and if I'm right about what you're asking, then it'll only be important or meaningful to you, which doesn't really align with the typical Q/A thing on stackexchange. You might be better off talking about your problem with people in the chat. – thedaian Sep 20 '11 at 1:23
• I agree with @thedaian. While the story can be an interesting read, a lot of people skim over the question. You should clean it up and add a single bolded question at the top and at the bottom so it is clear exactly what you are asking. From what I've read, you're trying to see if you can make a blood flow organ simulator with CUDA? Feasibility is also difficult when we don't know exactly your skillset. – DMan Sep 20 '11 at 2:01
• PhysX uses GP-GPU for fluid simulation doesn't it? Maybe this is what your lecturer was getting at? – Jonathan Connell Sep 20 '11 at 8:49
• On condensing posts: meta.stackexchange.com/questions/2950/… – Tetrad Sep 22 '11 at 15:32

Presumably there is a reason you got that assignment. If your lecturer thinks you will grow a new pair of limbs by being shot in the legs, perhaps that's why he did it. The best projects for learning, IMO, are the hard projects. No pain, no gain. That sounds like by far one of the coolest projects out of any that were probably handed out -- even games -- because that's some pretty hardcore tech you'll be dealing with it.

Take it on the jaw, and start learning now (not tomorrow). Find the right online sources for learning and support, and get some good books.

Out of the numerous fields I've touched on as a professional developer (not just games), computational geometry, graphics and physics are some of the most interesting by far.

In my final year of uni, there were two game projects: our project (myself and a partner), and another (a group of three). Although visually not nearly as impressive as the other project, ours took top marks for the year. Why? Because we wrote it from the ground up, engine included, whereas they used a prebuilt engine. That was a long time ago, and the landscape of game development has changed enormously, but it's a lesson in the benefits of taking the hard road.

Would experience coding a A blood flow physics simulator from a human organ based on nvidia's Cuda would be worthwhile industry experience.

Yes.

It may not be the blood flow simulation that gets you experience as such, but the implementation of the application to a worthwhile standard. I imagine its to that effect you are graded on the project aswell.

There is no finite answer to this question, just any experienced advice on what route to pick and what resources to go for.

This is a Q&A site, perhaps you wanted chat or forums.

This project will most likely define the career I take and the language that I base my first decade of programming on.

It shouldn't, only the experience you get in developing the project should.

P.S

This may be more suited for the Programmers stack exchange, its relevance to Game Development is only the use of the GPU...

• There i no finite answer as there were multiple problems and I was more so looking for opinion. I also did point out that I wasn't sure if this was the right location to put this. If its advised then I'll try programmers – OVERTONE Sep 20 '11 at 10:33
• It'd probably be closed as "too local" for programmers as well, unless you ask the question in such a way that the answers would apply to everyone. – thedaian Sep 20 '11 at 12:12

You can always go 2D instead of 3D to make things easier.

Cuda is C like so that could be a nice experience too, don't give up ;-)

 you can surely dig up an example of something likewise too (check out the Gpu Gems books, (a fast search gave me this link:) Gpu gems 1, gpu gems 2 and specially gpu gems 3)

This thesis (from a friend) on Particle Tracking on a GPU should give you a few basic insights on what is necessary when doing GPU work. This was a MSc Engineering final work.

OpenFOAM is often used for blood flow simulations, see GPU-based simulation of 3D blood ﬂow in abdominal aorta using OpenFOAM.

Remember to cite your sources if you use these as a base!