Ask HN: Final year project in CS
Hey I need to choose the topic of my final year project of BSc Software Engineering. My uni obviously gives whole bunch of topics to choose from, but none of them are interesting to me. They are super boring (build a website for some uni department, etc.) - BOOORING!
I would love to do something outstanding, something what I could show of with to my future employers.
I am interested in big data, AI. I was thinking of doing something with drones, or some social media data analysis, or something with computer vision.
Any advice?
61 comments
[ 3.0 ms ] story [ 115 ms ] threadThat doesn't mean you cant explore these topics... just find something that you are passionate about, and aggressively scope it down for the first pass. If you succeed, you can always make it larger!
mobman.bitbucket.org
if (isPHP)
Do a good job. With all the time you save, you can focus on doing things with drones or AI or whatever you want. Then inevitably when the scope of those projects goes out of control you won't have the stress hanging over you of it being for school and will be able to explore the domain with a light heart!
UNLESS you have a specific domain you want to work in. Or you have a company you want to get a job at and they work in a particular niche.
I also agree with zorrb, as I used to be plagued with wanting to go above and beyond with every academic project. The problem is you have limited time, and you can find a better use for it working on something that is more flexible.
It also helps to begin with a strong interest in a specific field, and extra knowledge to back it up, so you don't waste a lot of time doing introductory research to get up to speed.
If you're here, then you're likely more entrepreneurial. Do the easy project, and spend your extra time working on a start-up idea or connecting with classmates to find a co-founder for something bigger.
I helped build a website for a department when I was in college. I was paid a reasonable hourly rate in exchange for my services. In this case, the OP would be paying the university money in exchange for the privilege of building them a website. That's insane.
In general any time you do something for CS it's either trivial or if you had some qualification to back you up you could get paid; you're not paying for the privilege of designing their website you're paying for the support, guidance and ultimately assessment of your skills.
There is a problem of larger scope which is that education at a school level has been poor or non-existent as side effect of this is many people self-teach and then start university with skills way beyond their peers, web design is a good example of this because it's a relatively open platform that's easy and fun to get into, the result is that most universities must start from no assumed knowledge in the field.
It's only because you were able to teach yourself webdesign that you feel that the task is beneath you. If you really want to address this problem you need education to be better across the field so that university level can address significant tasks rather than filling in the basics for the first 2-3 years. This is starting to be addressed in the UK by the likes of the Raspberry Pi foundation and at a government level by mandated CS education in primary school but without incentives for teachers to take up the subject I don't know how effective it will be.
Currently I control plenty of lights at home that are LED by using a big transistor and an arduino connected to a server running a java server program.
I would recommend doing something simple like gluing a servo to a switch to begin with.
For facial recognition, go with something off the shelf to get things up and running. And if you want to expand the scope, try to write your own simple engine instead. https://www.openshift.com/blogs/day-12-opencv-face-detection...
It wasn't on the lists of "wants", but implementing the Raft consensus protocol could be neat too. It was designed to be understandable and implementable. The video is here: https://www.youtube.com/watch?v=YbZ3zDzDnrw. The research paper is here: https://ramcloud.stanford.edu/wiki/download/attachments/1137...
Raft is conceptually deep, but code wise isn't actually that hard to do. However, it gives you a beautiful introduction to consensus algorithms which appear in many distributed systems.
I know at my university, if I wanted to work on my own project, I had to submit a proposal several months in advance. In addition to that, I needed to have an outside stakeholder who wanted to "sponsor" the project.
1. The idea needs to be technically challenging.
2. The idea must be small enough in size to complete in the allotted time frame.
3. An outside stakeholder must "sponsor" the project to mimic the real world of working with others such as a project manager.
And since it's only your BSc just do the easiest project that's not boring and get it out of the way.
Build the cool stuff later. A few years from now no one will care about your GPA, let alone your final year project.
But to the other posters merit, if you can't narrow down what it is you want to do, then pick a "boring" thing -- it's better than nothing at all.
I'd wager that this - the notion that school is for a degree, abstract from challenging oneself to learn anything is a healthy contributor the apparent glut of 'uderemployed' graduates.
>A few years from now no one will care about your GPA, let alone your final year project.
Perhaps, but they'll certainly have more to gain from someone who cares about doing quality work and is willing to challenge themselves.
Further, it's not an entirely safe assumption that you'll even be capable doing 'the cool stuff later', particularly without having tried.
A big pitfall of FYP is that aiming too high but actually struggled along the way
The reason for doing something open source is that you can point to it when a future employer asks. If you choose a "brand name" project, you can get a lot of kudos for being associated with something like that.
Also searching for "project name" AND "project ideas" could sometimes lead to good results. for example [1].But of course before choosing a project in such way , it's better to understand a bit more about complexity and scope.
[1]https://cwiki.apache.org/confluence/display/ISIS/ProjectIdea...
Not as fun: write a k-lambda [1] interpreter in x64 or ARM. More fun: write it in Python or Go. Not fun at all: write it in Verilog/VHDL.
Big data: I hope you like football! Just kidding, there are other datasets, too. You could simply create a responsive website for exploring the dataset. Or do some interesting analysis. Up to you. [2], [3]
[1] http://www.shenlanguage.org/learn-shen/shendoc.htm#The%20Pri...
[2] [large!] http://aragorn.org/data/sports/NFL/seasons/metadata_since_19...
[3] http://www.wired.com/2012/09/nfl-momentum/
2.1 If you're interested in "big data/analytics", why not look into Cloudera & Datameer, and talk to some people at the World Bank & the Inter-American Development Bank to see what problems you could solve for them?
2.2 Regarding AI, email/tweet some of the people at Deepmind & Vicarious (you can google for employee names) to see what they can suggest.
2.3 Regarding computer vision, try emailing Blaise Aguera or Johnny Lee to see what they consider "interesting" (or just google some of their work).
3. Finally, AND THIS IS THE MOST IMPORTANT STEP: think about why you're doing this. Do you just want to get it over with so you can move onto something else? If so, pick a project that's relatively simple but difficult (running a marathon is simple but difficult). Otherwise, if you want something meaningful, choose something that will be fun. Choose a question that YOU want answered and that peaks your interest. Curiousity+fun will make the work feel like no work at all. GOOD LUCK!
"Something with drones" is not a Software Engineering project. Writing a poem about drones is enough. On the other hand, if you can show future employers that you solved AI or Big Data as a senior project, the road ahead will be paved with yellow bricks.
The critical thing is to show your ability to execute and part of a portfolio is to provide a familiar context in which to discuss engineering decisions as engineering decisions.
Don't get me wrong, some students will have really cool ideas for their senior project. Many of them will have been thinking about it for a long time. A few of them will just be the sort of person who comes up with cool ideas. It's a bit late to try and become either type.
Good luck.
If there is a lesson from HN, it is that execution matters more than creativity. http://sivers.org/multiply
Mine was computer vision based, so you're welcome to take a look: https://github.com/SoftlySplinter/kyffin-digital-analysis