Degree Question
#1
Hello,

I have been a long time XBMC/Kodi User, but have never posted to the forum. First I would like to thank you for the wonderful work you do!

Secondly, I am considering going back to college, and I love to tinker with XBMC/Kodi, along with many other tools that I use. I have realized that i want my degree to definitely be Comp Sci Based. One of my main issues is I am an absolute newbie when it comes to coding or anything having to do with the actual development side of the tools that I use like XBMC/Kodi. I was hoping someone might be able to stear me in the right direction as to what degree I should study, specifically what coding I should learn so that I may one day be able to develope in the tools that I love and use!

Thank you!
Reply
#2
you don't learn to code in school. you learn by doing. and doing. and failing. and doing again. i started when i was 12, and i'm fairly skilled coder now (now 34).

personally i chose to not educate myself in comp.sci. for this very reason, but rather got educated in mathematics (i.e. something you apply the comp.sci. to - numerics in my case).

(large parts of) comp.sci. can be selftaught. an application area typically cannot (i'm generalizing here!)

learn C(++). not java. you can easily use/pickup java based on what you learn for the C family of langs. you lose out on all the major things, in particular proper memory management, doing java or any other too high level language first.
Reply
#3
Thank you so much!! C++ it is! I will definitely keep your thoughts on comp sci in mind when deciding. I appreciate the response.
Reply
#4
Learning how to programm is only half the part. You can read (and understand) thousands of programming books, if someone wants you to write a bookkeeping app, you better know bookkeeping Smile
Another example: I know C++, I would love transcoding support in xbmc, but since I have no idea of how video encoding/decoding works, it's unlikely that I would succeed in implementing it.

Not sure if you want to go to university or sth. else, but here is how my bachelor/master works/worked (hope this helps):
Bachlor:
first 2.5 semesters: basic math, basic hardware stuff, programming/software design
second 2.5 semesters: Introduction in 6 specialised fields:
  • Net-Centric System (everything network related)
  • Data & Knockwledge engineering (Databases, machine lerning and AI)
  • Robotics and Simulations (hardocre math, not my favourite Wink)
  • Software Engineering (e.g. how compilers work, how programming languages work, design patterns (how you can program big programms and still keep it manageable))
  • Hardware stuff
  • Human-Computer-Interaction (User Experience, 3D-Rendering, Speech/Image recognition)
in the second half of the bachelor there was also room for compulsory optional subject where you could specialise in one (or two) of those fields.
Master:
Half your time you spend with further specialising in one or two of those fields.
You also had to choose a second study course. Could be everything from Psychologie, to Economics to pretty much every other engineering stuff.

As you can see, only a fourth of the first 2.5 semesters were actually about learning to programm, the rest was introductions/specialisation into specific domains. (unfortunately whe didn't have anything video en-/decoding related. So it might pay attention on what courses are available).

You should definetely find out how those comp. science courses work in our country. It can even greatly differ between universities in the same country.


Now to programming language:
C++ is pretty much as hard as it gets, so you will have steep learning curve. It might make sense to start with a higher-level langauge (they hide some complexity, so you don't have to learn as much, to get sth. working). E.g. you could choose python as a start. (that way you gould start doing kodi addons). Python for example hides memory management. Once you mastered that you can take the next step. Long-term I can only encourage everyone to learn c++, but I wouldn't recommend it as a start. There is also a lot you have to learn, that is universally applicable to all programming languages: Algorithms (like how to sort a list), Design Patterns.

Hope I could help Smile
Reply
#5
If you want to program, you don't need a degree. Pick up a book and start typing. On Linux (at least), all the tools are free - whether you use C, C++, Perl, Java, HTML, Pascal, Ruby or many other things, most of programming is a way of thinking, be that procedural or object-orientated.

I taught myself machine code (I was hardcore - I didn't do assembler until a year later!) when I was 12, graduated through various languages to C++ and my first job in FORTRAN (yes, that dates me)... and then pretty much stopped. I've only recently picked up anything again after a break of literally decades, and I'm just playing around the edges. The key, though, is pretty much what ironic_monkey said: you learn by doing, by studying other people's code, and not by sitting in a lecture hall.

By all means, follow your dreams, go to college, get that degree - who knows where it will take you. But don't wait: if you want to program, you can start tonight with a shell script or a simple #include <stdio.h> and go from there.

As Stephen King apparently said: 'If you want to be a writer, you must do two things above all others: read a lot and write a lot'. It's much the same here...
Reply
#6
I started coding in BASIC, back in the late 70's/early 80's.
Learned a ton of math and coding stuff during high school.
Pulled an 180 on my academic/career expectations after taking a year to "think about things" and joined the military to "see the world". I did and loved every minute! A year turned out to be closer to seven.
Married twice, divorced once and went to architectural design during that adventure. Go figure...

After almost 20 years without coding a single "Hello World", I decided enough was enough. Here's what I've learned trying to learn/catch up:

- Coding is a bug. Don't feed it and it will eat you up.
- Don't dedicate 2 weeks of your time following that crappy "final" tutorial about coding.
- Dedicate a lot more than 2 weeks of your time reading books and stuff about coding.
- Spend more than 2 hours a day learning and coding.
- Didn't worked as expected? Try again. Still doesn't work? Give it a rest. Solution will present itself... eventually.
- Read code. Read it again. Think you got it? Read again. And read again some more.
- Feed the cat(s).
- If your wife asks what you're doing, lie your ass off. She won't believe you so might as well say you're watching p0rn.
- Get an incentive. Beer is for success, not failure, not half-baked solutions, certainly not for C&P code. Write your own. Even if it's shitty code. You can always copy others' latter.
Reply
#7
If you do want to go to school, my understanding is there's a difference between Computer Sci and Software Engineering degrees. Comp Sci degrees really don't teach you how to program, they teach you how to think about software. SE degrees are far more hands on. I didn't do either, so I'm really just talking out of my butt from things I've read online, but you might talk to various people in departments about those differences.
Reply
#8
(2014-10-18, 08:37)natethomas Wrote: If you do want to go to school, my understanding is there's a difference between Computer Sci and Software Engineering degrees. Comp Sci degrees really don't teach you how to program, they teach you how to think about software. SE degrees are far more hands on. I didn't do either, so I'm really just talking out of my butt from things I've read online, but you might talk to various people in departments about those differences.

Not sure what comp sci degree your refering to. In Sweden Comp sci is within the Engineering school. And its true that it focuses less on hands on programming (it still adds up roughly to the same amount of hours as SE in Sweden due to the length of the program though).

What Comp sci offers is a fundamental understanding of how and why you should structure your program certain ways. It teaches you invaluable patterns, which you may pick up as a cowboy coder, but they might come with years and years of practice (and knowing the names of the patters helps a lot). This in extension to the mathematics and the general problem solving abilities honed by engineering school.

This is also why I'm against what Yaffie stated, you can learn to program without a degree. However I've met plenty of these types of coders and they focus much more on just solving an issue, with whatever crappy way they find first, than taking a step back and fix the underlying problem, which yields in a much more maintainable solution.

But what ironic monkey states is also true. I'm extremely happy I started coding XBMC while going through school, I was able to apply what I learnt at school in a real life application, and learnt much more from it.
I started coding JSON RPC when I had distributed network courses, I applied for GSoC rendering when I took some rendering courses.

Coding is comparable to playing a musical instrument. Yes you can learn it completely by yourself by playing the songs you like. You can learn it completely in school. However, when you combine them and create your own compositions, then your a musician and you learn faster than doing any of the two ways on their own.

EDIT: Also a tip in contradiction to ironic_monkey. Don't teach yourself a single language. You will miss out on understanding the concepts that way (or it may take longer). In my school we were thrown between languages a bit, python, java and c/c++. And then I took some functional extensions, haskell, lisp etc. And I sometimes understood c++ more by learning another language. Needs to be outside the box at times to understand a problem
If you have problems please read this before posting

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.

Image

"Well Im gonna download the code and look at it a bit but I'm certainly not a really good C/C++ programer but I'd help as much as I can, I mostly write in C#."
Reply
#9
(2014-10-18, 08:37)natethomas Wrote: If you do want to go to school, my understanding is there's a difference between Computer Sci and Software Engineering degrees. Comp Sci degrees really don't teach you how to program, they teach you how to think about software. SE degrees are far more hands on. I didn't do either, so I'm really just talking out of my butt from things I've read online, but you might talk to various people in departments about those differences.

I just finished my comp sci degree in august in the us and it's the same thing as software engineering at my school. Were even told to market ourselves as software Engineers rather than "programmers" because its more marketable.
But like others said it's all really self taught. School just gives you a giant list of problems to solve as practice. Really I don't think you can be a great programmer after just the 3 years of practice you get from a university. All the really awesome coders that I graduated with were coding years before college. I still feel like I have a lot to learn and still go through coding tutorials a couple hours a week. But not much c++ since the job market right now has mostly abandoned c++. Most jobs just maintain old c++ code while writing new stuff in more modern languages like java, python ect.. C++ is hard and even harder to get right. Takes about twice as long to make a good c++ coder as a good java coder. Pointers are the biggest source of bugs in c++ code. Even for the best programmers.
Reply
#10
I don't know a single line of code, but I get the impression that school and degrees are more about certifying what you know, rather than actually teaching you about programming (and the same for most other technology-related courses, for that matter). Maybe it helps sharpen certain areas, but it seems the bulk of what people know is from outside of school.

I imagine that more specific certification programs will overtake college degrees in the future, and will be that way for most fields and not just programming/computers. I think the college degree is becoming less reliant to many fields of work (but not all, of course).

I could be wrong, but that's the impression that I get.
Reply
#11
@NedScott quite the opposite IMO. Certification programs are extremely geared towards a specific knowledge. Certificate in a specific toolkit and such. This, in general, teaches you nothing about more general concepts. It just teaches you how to get something done in a certain toolkit.

Which, on its own, IMO is useless. Its of great help when you know the general concepts and need to learn a specific toolkit to use.
If you have problems please read this before posting

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.

Image

"Well Im gonna download the code and look at it a bit but I'm certainly not a really good C/C++ programer but I'd help as much as I can, I mostly write in C#."
Reply
#12
I did computer science at University and started off being interested in programming but quickly moved onto User Interfaces, databases and Project Management units.

Learning a programming language is actually very easy, learning how to program _well_ takes a lot of work (and experience) Wink
Reply
#13
(2014-10-18, 18:32)topfs2 Wrote: @NedScott quite the opposite IMO. Certification programs are extremely geared towards a specific knowledge. Certificate in a specific toolkit and such. This, in general, teaches you nothing about more general concepts. It just teaches you how to get something done in a certain toolkit.

Which, on its own, IMO is useless. Its of great help when you know the general concepts and need to learn a specific toolkit to use.

I don't know the level of how computer-specific certification can get, but broadly speaking, I don't think a lot of employers care if someone has taken X number of credits for english and history as long as they know what is required for the job, and can show that somehow. Because that, it wouldn't surprise me if some form of certification/qualification (that was more specific than a degree) becomes the more popular choice in the future. Maybe.
Reply
#14
Completing computer science is a certificate. Which many don't, and isn't able to, finish. At my school roughly 50-60% completed their studies. Some skipped as they got work, but most jumped because they wasn't able.

Normal certificates, atleast afaik, are more about making money and letting those that pay go through some tutorials to check off and say they know the stuff. Obviously, if your interested, you will learn Smile
When its more about making money than actually teaching, thats when I don't trust normal certificates.

Granted. Computer science isn't the highest form of learning, and I will probably get certificates both to learn more (in particular specific things) and both to get a higher pay. However, IMO university is a great base level. And I would love if there was higher level than that (might go for a doctorate tbh). It might be my Swedish thinking but I really wouldn't trade comp sci (or university) for anything. And heck, its fun Smile
If you have problems please read this before posting

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.

Image

"Well Im gonna download the code and look at it a bit but I'm certainly not a really good C/C++ programer but I'd help as much as I can, I mostly write in C#."
Reply
#15
Coding is piss easy but good designing much more hard to do. I would also recommend you learn something about networking. Don't jump straight into a degree.......never did me much good. However, Cisco, Checkpoint, Unix and Microsoft experience and courses did. Good luck.
Reply

Logout Mark Read Team Forum Stats Members Help
Degree Question0