Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Datastructures and Algorithms - An introduction

  • 20-08-2012 12:10pm
    #1
    Registered Users, Registered Users 2 Posts: 119 ✭✭


    Hi Guys,

    I've been around programmers for a long time and tend to know all about software on a high-level, what is feasible, the frameworks and languages out there, etc... but I have never sat down and really learned to programme, just done bits and bobs.

    For the next 6 months to a year I am going to dedicate myself full-time to learning to programme, with the ambition of getting a job as a programmer and then transfering to a product/project management role. I want to build a software company in the future and this is the road I'm taking.

    So... my friend told me that if I am seriously looking for a job as either a support engineer or software developer I should start off with Datastructures and algorithms and not touch any language for about a month. He has said he would provide me with a couple of books in the next few days but we haven't got around to sitting down and looking for some.

    Can anyone recommend any good books on the core fundamental principles of software development, that I can just lay into and focus on? I'm gonna do one book at a time and push myself so I'd love to find a decent one that wasn't dumbed down.

    Thanks,
    C


Comments

  • Registered Users, Registered Users 2 Posts: 7,836 ✭✭✭Brussels Sprout


    Have a look in the stickied thread of book recommendations. It'll be tricky to get a job without any formal qualifications, so maybe that's something you should consider as well.


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Thanks for the response Sprout,

    I've looked at that thread but can't see any specifically on algorithms and datastructures. I've got a degree in Maths Studies, so it should come naturally, but I want to brush up before I start.

    I'm starting the first semester in NCI Web Tech. I'm learning Ruby on Rails. My experience is that people in these courses are encouraged to build using frameworks far too early, resulting in very little understanding of the rules and concepts of the language itself. I am reluctant to even start on Ruby from where I am now because I'd like to learn a less interpretive language like Java that is not so forgiving.

    I've got a reasonably good network in software in Dublin so I'm confident that if I can learn to code I won't have trouble getting work.

    So can anyone recommend anything to my specific needs?

    Thanks,
    C


  • Registered Users, Registered Users 2 Posts: 851 ✭✭✭TonyStark


    Stamply wrote: »

    Can anyone recommend any good books on the core fundamental principles of software development, that I can just lay into and focus on? I'm gonna do one book at a time and push myself so I'd love to find a decent one that wasn't dumbed down.


    Code Complete is pretty good.

    http://www.cc2e.com/Default.aspx


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Thanks Dude :-)


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    TonyStark wrote: »
    Code Complete is pretty good.

    http://www.cc2e.com/Default.aspx

    From complete code:
    The techniques described in this book fill the void after introductory and
    advanced programming texts. After you have read Introduction to Java,
    Advanced Java, and Advanced Advanced Java, what book do you read to learn
    more about programming? You could read books about the details of Intel or
    Motorola hardware, Windows or Linux operating-system functions, or about the
    details of another programming language—you can’t use a language or program
    in an environment without a good reference to such details. But this is one of the
    few books that discusses programming per se.

    This seems to be for people with some programming experience. I have very little, just a very high-level understanding of the tools and languages available.

    I was looking for something more introductory. Can anyone give me any guidance on this? Otherwise I'll keep reading.

    C


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 23,212 ✭✭✭✭Tom Dunne


    Head First Java is supposed to be a good book (not a Java programmer, but colleagues have told me this).

    Oops, forgot the link: http://shop.oreilly.com/product/9780596004651.do


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    I think my brother has that at home actually, thanks :-)


  • Moderators, Sports Moderators, Regional Abroad Moderators Posts: 2,666 Mod ✭✭✭✭TrueDub


    Stamply wrote: »
    Hi Guys,

    I've been around programmers for a long time and tend to know all about software on a high-level, what is feasible, the frameworks and languages out there, etc... but I have never sat down and really learned to programme, just done bits and bobs.

    For the next 6 months to a year I am going to dedicate myself full-time to learning to programme, with the ambition of getting a job as a programmer and then transfering to a product/project management role. I want to build a software company in the future and this is the road I'm taking.

    I'm puzzled about why you're going to become technical if you want to go on to product or program management. You could probably achieve this more easily and more quickly through a Business Analysis route.


  • Registered Users, Registered Users 2 Posts: 338 ✭✭Dean_Mc


    Stamply,

    First off, fair play, I was in the same boat as such. I left school early (16) to get a job, bought my house at 20 and basically snookered myself out of being able to afford to go back and to the LC or College and still maintain my lifestyle. At 24 I got my first software development job and I am really happy with how I have progressed. Long story short, it can be done, all it takes is hard work.

    First Books, I have read more than my fair share and in the end I found they hindered my learning. The most important thing you can do is learn to read code and understand why the author of the code you are using made the decisions they did. Depending on your particular sphere there are a number of places to read code. At the time of writing I find most open source software is on Github but there is also CodePlex and Google Code.

    My suggestion is actually an anti suggestion. I suggest you find a project you like the look of and then rewrite it line for line. What you will find is that you begin to understand algorithms and design patterns more naturally, you may also get the urge to start changing parts of the design and branching off, do it, this will be where the most rapid portion of your development will happen.

    As an example, in .net there is a pattern called MVVM that is being bandied about in response to much better data binding (It is also making it's way into JavaScript) this pattern presents some complexities around architecture and code reuse so most people opt to use a framework (There are at least 5 major open source ones). I spent the last couple of months pulling apart one of these frameworks (Caliburn.Micro). What started with frustration has led to me learning a massive amount about framework design. Some of it I agree with, some of it I don't, the point is I got to experience an architecture I was not familiar with.

    TL;DR version... Theory is great and will help you write better apps but the best thing you can do is get stuck in to some else code and start tearing it apart!


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    TrueDub wrote: »
    I'm puzzled about why you're going to become technical if you want to go on to product or program management. You could probably achieve this more easily and more quickly through a Business Analysis route.

    I think I'll be a better product manager and write better documents for developers to work by if I understand how to programme and work at that for a few years. Then when I'm thirty I'll go more into a business development role.

    I would never get business dev role now, not even an internship, because none of my formal education was pointed in that direction. But I have pulled together two teams to work on two separate projects and made my mistakes by learning about product development and requirements gathering on the fly. Neither of these projects have got off the ground so far, even after a good amount of coding, but the second one I have high hopes for. Once I lay out a development plan I expect the lead developer to take it from there.

    The point is I want to work in a proper company generating sales and really start learning, and I think the quickest route here is to learn to code, get a job and get trained in as either a developer or support engineer.

    This way I'll have a really rounded education and can build a proper software start up.

    The niche in software at the moment is product management, because sales people and biz devs don't understand software and developers are not good enough at requirements gathering and sales - to make sweeping generalisations.

    I think I've got to learn to code and be on that side for a while to do this job properly.

    Dean,

    Thanks a lot for that great post, I've been advised to sweep GitHub before, but it is quite an intimidating thing to start doing. I will though, thanks :-)

    C


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 3,739 ✭✭✭Stuxnet


    we used this one last semester (comp sys, UL)
    tough subject, but interesting, the book is good enough,

    http://www.amazon.co.uk/Data-Structures-Algorithm-Analysis-C/dp/0321397339/ref=sr_1_10?s=books&ie=UTF8&qid=1345490816&sr=1-10&tag=jupitebroadc-21


  • Closed Accounts Posts: 3,981 ✭✭✭[-0-]




  • Registered Users, Registered Users 2 Posts: 2,040 ✭✭✭Colonel Panic


    Serious about being bored to tears.


  • Registered Users, Registered Users 2 Posts: 7,836 ✭✭✭Brussels Sprout


    Have a look at the language agnostic section in this link


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Thanks Sprout :-)

    (Also, I love Brussels Sprouts!)


  • Registered Users, Registered Users 2 Posts: 2,660 ✭✭✭Baz_


    Stamply wrote: »
    I've got a degree in Maths Studies, so it should come naturally, but I want to brush up before I start

    If this is true then the Donald E. Knuth books would be right up your alley, very mathematically oriented handling of algorithm and data structure topics...

    Already linked by [-0-] above


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Legend, thanks for all the help lads :-)


  • Registered Users, Registered Users 2 Posts: 80 ✭✭terry_s


    We used this one http://www.amazon.com/Data-Structures-Algorithms-Adam-Drozdek/dp/0534491820 while in college.

    But to be honest i prefer video tutorials like
    Algorithms and Data Structures - Part 1
    http://www.pluralsight.com/training/courses/TableOfContents?courseName=ads-part1&highlight=robert-horvick_ads-stack!robert-horvick_ads-binarytree!robert-horvick_ads-hashtable!robert-horvick_algods-queue!robert-horvick_ads-linked-list#ads-stack

    Algorithms and Data Structures - Part 2
    http://www.pluralsight.com/training/courses/TableOfContents?courseName=ads2&highlight=

    These are .Net based but once you understand how and what a list is or a queue etc the principles are the same in all languages.

    In my experience if you are going to learn to programme well a good knowledge of these will go a long way. As not understanding these principles will limit what you can achieve with the code irrelevant of what language you use. in the past i have seen people use arrays left right and centre and when i asked why not use a list or something else they replied "whats a list".

    Hope this helps


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Thanks Terry, how do I access the video tutorials?


  • Registered Users, Registered Users 2 Posts: 80 ✭✭terry_s


    unfortunately you have to subscribe


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Did you? Worth it? How long did you subscribe for? 30quid per month is a bit ridonculous isn't it!?!


  • Registered Users, Registered Users 2 Posts: 80 ✭✭terry_s


    i think i worked out at 20euro as its priced in dollars but you could just subscribe for a month learn what you can then cancel.


  • Registered Users, Registered Users 2 Posts: 119 ✭✭Stamply


    Thanks Terry

    http://www.ethoberon.ethz.ch/WirthPubl/AD.pdf

    Been reading this. The examples are in Pascal and Oberon and copyright is from 1985 (I think the second edition was 2004). Would that be a problem? Its very theoretical so far, but I'm just navigating my way through the first few chapters to get a feel for it.

    C


  • Closed Accounts Posts: 3,981 ✭✭✭[-0-]


    Serious about being bored to tears.

    For sure. It's exactly what the OP asked for, though.


Advertisement