Hey there! Sign in to join this conversationNew here? Join for free
x Turn on thread page Beta
    • Thread Starter
    Offline

    0
    ReputationRep:
    Hi everyone,

    I am sure this has probably been asked too many times on this forum but hoping someone can give me an answer.

    So as of yesterday I decided I wanted to learn how to code, I downloaded a cheap kindle book on Amazon for programming in C# which had good reviews (so hoping I can't go wrong) and I could literally not stop reading it. I was up until 3 in the morning, and then awake at 8 to get to work and could not wait to get home to continue studying it... on a Friday night. Sad I know. It has been a while since something has had me so interested and keen to learn.

    I studied Maths at uni and I love working things out so I don't really know why it didn't occur to me sooner to try it out. So I have a few questions and many more if anyone would be kind enough to help.

    I was wondering what is the best way to learn how to code? Have any of you learnt from scratch without formal tution, and how did you do it? Would you have done anything differently if you started again?
    Do you think of your own problems and try to solve them? Or is there somewhere to see other problems and how they were solved? Is there a sort of linear way to go through learning a language? Am I starting on the right language, C#?

    Aside from yesterday I have no experience other than trying out some html as a kid, which I enjoyed but never really stuck with it. Any help is appreciated.
    Offline

    17
    ReputationRep:
    Think up some apps that you might want to make and learn how to create them.

    Best way to learn is experiential everything you read about you need to experience putting into code. It's no good reading about classes and interfaces etc and thinking "we'll that sort of made sense" you don't really know it till you've experienced working with it and that requires practise.

    Learning c# is the tip of the iceberg to make anything useful you need to learn the .net technologies. These will help you to do useful things like create graphical interfaces, talk to databases, write to the hard disk, communicate over the net etc.

    Don't focus too much on small algorithm/maths puzzles. You want to try and create some more substantial apps which demonstrate that you've used some technology. You could then put them into a portfolio to potentially get that first job.
    • Thread Starter
    Offline

    0
    ReputationRep:
    (Original post by INTit)
    Think up some apps that you might want to make and learn how to create them.

    Best way to learn is experiential everything you read about you need to experience putting into code. It's no good reading about classes and interfaces etc and thinking "we'll that sort of made sense" you don't really know it till you've experienced working with it and that requires practise.

    Learning c# is the tip of the iceberg to make anything useful you need to learn the .net technologies. These will help you to do useful things like create graphical interfaces, talk to databases, write to the hard disk, communicate over the net etc.

    Don't focus too much on small algorithm/maths puzzles. You want to try and create some more substantial apps which demonstrate that you've used some technology. You could then put them into a portfolio to potentially get that first job.
    Thanks for the reply. I have downloaded visual studio express and have started practising the things I am reading in the textbook and modifying the data in the textbook to my own sort of problem just to try and get used to it all, thanks for the advice.

    As for my own apps, there is only really one thing in my head that I want to learn how to do right now and that is say, for a sports scoring webpage, when that page updates I want to know what has changed from the previous page or update. I.e what score has recently changed. At the moment I have no idea how simple or how complex that will be or indeed if I am even learning the right things to solve that problem or if it is even solvable for myself. I am sure it would have already been done thousands of times but that is what I am working towards at the moment as my long term or short term goal (no idea of the complexity). Either way I am hoping it will be fun and a learning experience.

    As for the job, this is soley a recent hobbie at the moment lol, and I am due to start a new job next month, so don't want to be jumping ship too soon
    Offline

    20
    ReputationRep:
    Practice is good. thinking about tricky problems is good. doing things because you enjoy them is good

    Puzzles are good for jobs - companies which are creating technologies (like .net) will often ask you to solve a puzzle type problem at interview. The people doing that type of work have (imo) more interesting work than people who plumb apps together.

    sources of puzzle type problems

    http://www.codechef.com
    http://projecteuler.net/
    http://www.hackerrank.com

    codechef & hackerrank require you to submit code for automatic testing and don't accept C#, euler just wants you to type in the answer.
    Offline

    3
    ReputationRep:
    Check out The New Boston's video tutorials on YouTube.
    Offline

    18
    ReputationRep:
    (Original post by Purslow20)
    I was wondering what is the best way to learn how to code? Have any of you learnt from scratch without formal tution, and how did you do it?
    Code Academy is what I've been using since I started a while ago. From what I read, it's not great but it's fine for beginners. Some instructions might be a little confusing, but you can easily Google whatever issues you're having. It's great for beginners.
    Offline

    15
    ReputationRep:
    It's definitely possible to learn programming without formal tuition.

    I started programming when I was in secondary school (that's about 8 years ago), and have been working as a professional software developer for the past 3 years or so (first 2 years on and off as internships).

    That's the really nice thing about programming - it's pretty easy to teach yourself everything. Easier than most other engineering disciplines.

    I would recommend following books and tutorials until you get the very basics down (variables, types, if statements, for and while loops, functions, recursion, some standard containers). It's hard to do anything interesting without the basics.

    Then start writing things that you find interesting, and just look up things as you need them.

    And then, when you feel like you are ready to go back to tutorials again, try learning more advanced things like OOP, generics, more complicated containers, maybe reflection (it's really not that commonly used, and many people get by without knowing it).

    That should be more or less all you need language-wise.

    Maybe do a bigger project, then.

    And then when you are ready to move on again, I would read a book on algorithms so you can build a repertoire of common algorithms and get a sense for time/space complexity. It should be pretty easy with your maths background. I personally find algorithms very interesting, too, and if you do too, you can also start on this sooner, after learning basics of the language. Maybe while working on a bigger project.

    Then I would maybe think about venturing into another language, depending on whether C# is suitable for the kind of programs you are interested in developing.

    .Net is an option, but at this point I would recommend venturing out of Microsoft-land for a bit, and see the rest of the world, and use some vendor-neutral technology.

    Maybe C++ if you want to do faster and lower level (in programming, low level means closer to hardware) programs like games or scientific computing. Maybe assembly language if you want to go very low level and see how hardware actually works. Maybe higher level languages like PHP if you are interested in web stuff. Maybe a functional language like Lisp or Scheme if you are into things like AI. I wouldn't recommend Java at this point since it's very similar to C#.

    The second language will be much much easier to pick up. Nowadays I can learn the basics of a new language in a few hours, and often do that when required to deal with a particular problem.
    • Thread Starter
    Offline

    0
    ReputationRep:
    Thanks for that, very useful!
    Offline

    0
    ReputationRep:
    I started programming when I was 7 years old. There were a few programming books lying around my house and I picked up a "c for dummies" book when I was bored and that's how it started.
    In my opinion, trying out any interesting examples from the book you're studying from is a good idea. Don't get flustered if you don't remember stuff, it happens to the best of us. Almost every problem can be solved with programming, so yeah try to experiment and see what you can build from your imagination. If you get stuck, Google's your best friend.
    Learning C or Java before C# is a better idea, if you're new to programming.
    And if you like visual studio, visual basic is easier than c# but less powerful so I would recommend vb over vc# again.
    Best of luck

    Posted from TSR Mobile
    Offline

    3
    ReputationRep:
    (Original post by INTit)
    Don't focus too much on small algorithm/maths puzzles. You want to try and create some more substantial apps which demonstrate that you've used some technology. You could then put them into a portfolio to potentially get that first job.
    Not sure I agree. When starting up one should learn the basics (data structures and algorithms) before making any apps. Learning how to use .NET is basically learning how to use a library. Learning the difference between a hash-set, sorted-set and plain list/array/vector is more important when learning. Don't run before you can walk.
    Offline

    17
    ReputationRep:
    (Original post by elohssa)
    Not sure I agree. When starting up one should learn the basics (data structures and algorithms) before making any apps. Learning how to use .NET is basically learning how to use a library. Learning the difference between a hash-set, sorted-set and plain list/array/vector is more important when learning. Don't run before you can walk.
    I recommended learning the library's because you get a good sense of gratification from producing something visual and relatable to the real world.

    I think a lot of people get scared away by the theory. Why would a beginner need to concern himself with the differences when a plain list is going to be sufficient 95% of the time.
    Offline

    3
    ReputationRep:
    (Original post by INTit)
    I recommended learning the library's because you get a good sense of gratification from producing something visual and relatable to the real world.

    I think a lot of people get scared away by the theory. Why would a beginner need to concern himself with the differences when a plain list is going to be sufficient 95% of the time.
    Yeah I see what you mean. When starting up you want instant results. Still I don't think that's the best way to learn.
    Offline

    15
    ReputationRep:
    (Original post by INTit)
    I recommended learning the library's because you get a good sense of gratification from producing something visual and relatable to the real world.

    I think a lot of people get scared away by the theory. Why would a beginner need to concern himself with the differences when a plain list is going to be sufficient 95% of the time.
    I am of the opinion that a beginner should concern himself with the theory.

    When starting to program with a high level language, many beginners get into the habit of just putting abstract high level things together to do what they want, without really understanding what's going on.

    That may work fine for simple GUI work, but it will fail with any code that requires any kind of performance.

    Starting from the basics is not quite as glamorous, but it builds a much more solid foundation.

    The difference between a list (assuming you mean a linked list) and a vector is very significant when you are working with a container that tracks 1 million objects in a game, with a very specific access pattern, and things need to be looked up from that container thousands of times per second. That's an actual problem we faced while working at Capcom. We also had to write our own heap allocator optimized for our memory access patterns to reduce fragmentation.

    I didn't start programming GUIs until I had about 4 years of programming experience. At that point I had already written a command line chess AI that played consistently at the level of FIDE masters, in about 5000 lines of highly optimized C++ code. I knew how everything works in there. It uses several kinds of containers effectively (most suitable for the job), and also suitable algorithms for performance. It is definitely possible to do big and fun projects without writing any UI code.

    Since then, I've had to write UI code on a few occasions for work, and always hated it. It's a lot of boilerplate and repetitions, and very low logic to lines density (most of the lines are just setting things up). Most programmers I know do not enjoy working with GUI code. It's just not that intellectually challenging.
    Offline

    10
    ReputationRep:
    (Original post by Purslow20)
    Thanks for the reply. I have downloaded visual studio express and have started practising the things I am reading in the textbook and modifying the data in the textbook to my own sort of problem just to try and get used to it all, thanks for the advice.

    As for my own apps, there is only really one thing in my head that I want to learn how to do right now and that is say, for a sports scoring webpage, when that page updates I want to know what has changed from the previous page or update. I.e what score has recently changed. At the moment I have no idea how simple or how complex that will be or indeed if I am even learning the right things to solve that problem or if it is even solvable for myself.
    That isn't a massively complex problem, your greatest difficulty is going to be getting hold of the information and then parsing it, you'll probably end up using libraries for this but hey, that's why they exist.

    You might want to have a look into the basics of html if you're going to be doing webscraping, it's not difficult to get the basics down but you will need them.
 
 
 
Poll
Do you agree with the proposed ban on plastic straws and cotton buds?
Useful resources

The Student Room, Get Revising and Marked by Teachers are trading names of The Student Room Group Ltd.

Register Number: 04666380 (England and Wales), VAT No. 806 8067 22 Registered Office: International House, Queens Road, Brighton, BN1 3XE

Write a reply...
Reply
Hide
Reputation gems: You get these gems as you gain rep from other members for making good contributions and giving helpful advice.