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

Complete beginner at Computer Science wants to know how to start learning?

Options
  • 01-11-2015 3:31pm
    #1
    Registered Users Posts: 9


    Hi guys
    I really badly want to learn basic computer programming and computer science but I do not know where to start. I was thinking of using the Raspberry Pi 2 as my learning tool but im unsure whether it would suit a beginner like me. I know very little about the internal workings of a computer and Math is not my strong point but any advice you can give would be greatly appreciated. Bear in mind Im in college full time so I cannot pursue another course outside of that.


Comments

  • Registered Users Posts: 11,397 ✭✭✭✭Digital Solitude


    www.boards.ie/forum/842

    Following that forum will give a bit of insight into the different parts of a PC, its mainly gaming PCs and most of what we do is just parts lists and answering questions, but you might find some use from it.

    If you could get your hands on an old PC to tear apart and put together again, you'd learn a good bit about the internals too.

    Not sure about a Pi as I don't have one, but for learning coding, I went out and bought an Arduino starter kit, I think it was €100 or so. Haven't spent much time with it so far and its a little hardware oriented from what I'm finding, but it does have its own IDE to code it.

    After that, I'm not sure. EDX run coding courses every so often. They're free and online, you get out what you put in with it, it may be worth a look into, should fit your course as you can do it at your own pace.


  • Registered Users Posts: 506 ✭✭✭Ant695


    Codeacademy.com is good for coding courses. Some are very basic but it's all done on the site and at your own pace and it's also free.

    Or decide on a language to focus on and grab some books related to it. You will find useful info on this in the development forum here: http://www.boards.ie/vbulletin/forumdisplay.php?f=25

    Like digital said for internal components their is no substitute for pulling a pc apart and sticking it back together. Even have a look at some youtube videos of computers being built/taken apart will give you an idea of what you are looking at. Also tons of videos with intros to various programming languages and anything else you could want to know.

    Not sure the best way to go about learning stuff like binary, hex, digital circuits, networking etc... because this is stuff that I covered in college with lecturers notes and the ability to ask questions when nessacary. I don't know how easy this stuff would be to do outside of a class but I'm sure it is possible with enough effort but not sure of the best resources for this.

    What is the course you are doing? If it isn't related to CS do you have any friends doing a CS course who could show you their lecture notes etc... that might give you an idea of what some of it is like.


  • Registered Users Posts: 134 ✭✭ishotjr2


    Hi

    For what it is worth I would try to learn C first. Not C++ just C. The main reason is the principles it teaches you that other languages hide will stand to you when you try to learn how to optimize your code either for performance or resources.

    There are many online tutorials on C and I do not have a preference on any of them. Just choose one and go from there.


  • Registered Users Posts: 364 ✭✭ScottStorm


    For cs have a read of "Code" by Charles Petzold it's a really good introduction.

    For learning to write code, you have had plenty of good suggestions already but pick a language (one fu@#&ng language!) I would suggest Java, Python or C#, there are endless resources online and just start following tutorials and completing exercises and projects of your own.

    As regards the raspberry pi unless you don't already have a computer of your own I wouldn't bother. Just download a good text editor like notepad++ and start coding.

    Good luck.


  • Registered Users Posts: 476 ✭✭RoRo979


    hey, currently doing CS in trinity and we are doing Java. Id recommend you start there. The sources I recommend you use(I do):-

    - youtube(thenewboston)
    - youtube(derek banas, this lad is incredible, very friendly, answers questions, a++)
    - how to program by deitel and deitel i think (book is very expensive but might be able to get it cheaper if you look in the right places ;);) )
    - head first java


  • Advertisement
  • Registered Users Posts: 1,731 ✭✭✭GreenWolfe


    ishotjr2 wrote: »
    Hi

    For what it is worth I would try to learn C first. Not C++ just C. The main reason is the principles it teaches you that other languages hide will stand to you when you try to learn how to optimize your code either for performance or resources.

    There are many online tutorials on C and I do not have a preference on any of them. Just choose one and go from there.

    C? For a beginner? You've got to be joking.

    I'd recommend Python. OP, if you already have a RPi 2 you have a box you can practice on and you can re-flash the SD card if you need to. You might also pick up some Linux fundamentals and sysadmin stuff along the way as well.


  • Registered Users Posts: 134 ✭✭ishotjr2


    Hi

    Nope not joking, I have been a commercial programmer for just coming up on 20 years. The reason I recommend starting off in C is Java/Phython etc... hide the complexity of memory management/sockets etc.... I have worked with a number of guys that when we needed to optimize their code and we dug into OS/IO level debugging they felt the mental model they had of how a computer worked completely undermined. So they end up relying on one "expert" who simply has a slightly better mental model which helps ask better questions.

    So start of with C, dabble with assembly and appreciate how much complexity Java/Python/C# handle for you and be prepared for that learning curve when it comes round, because it will once you write a popular program. Do not build a mental model of how a computer works from your own imaginings.

    Sorry for the preaching. But people go on about he/she is a whizz kid etc... and there is a natural talent factor too, but a lot I find is people working with a bad mental model to begin with and when you say well this is how X, Y or Z really works they can rival the whizz kid mentality.


  • Registered Users Posts: 166 ✭✭gleesonger


    The hardest and most frustrating part of coding is when you start off. You have two issues to contend with; programming concepts and the tools used. Choosing the suite of tools which make your life as easy as possible will allow you to focus on how to code and not how to solve other annoying issues.

    I suggest Visual Studio 2015 Community Version from Microsoft for the following reasons; It's free, used by a large portion of the industry, you can play with a few different languages, it is very well designed, easy to use, best debugger out there (which is unbelievably important for when you code).

    I disagree with ishotjr2, do not start with C/C++ or any other low level language; the learning curve is steep enough, going for a low level language could make the learning so steep it puts you off and at very little benefit. While understanding memory can be useful at certain times, the time it takes to learn this means you have wasted time learning other useful stuff. These days you can do just about everything in a high level language so there is rarely the need to code in C. Take it one step at a time, understand the high level code then if you have the desire/need move down to a low level language. I personally started with Java, moved to C# then after a few years learnt C++\C.

    I suggest C# as a starting point. It's well supported by Microsoft and the online community (ie stackoverflow), meaning you can get answers to all your questions. It is a mature and feature full language. The tools as I mentioned above are some of the best out there.


  • Registered Users Posts: 134 ✭✭ishotjr2


    Hi

    Looks like I am out voted on where to begin :)

    It is not just about memory it is about understanding how disk/processors/files etc... work.

    "These days you can do just about everything in a high level language so there is rarely the need to code in C"
    Write a kernel module in a higher level language.
    Write a driver in a higher level language.
    Write a high performance server e.g. a web server, in a higher level language.

    I could go on, but its simple we just have different experiences. I started out with C and am very glad I did as it gave me a firm basis in understanding computers.


  • Registered Users Posts: 166 ✭✭gleesonger


    ishotjr2 wrote: »
    It is not just about memory it is about understanding how disk/processors/files etc... work.

    I realize C is still required for somethings but do you expect someone learning to try their hand at writing kernel modules or drivers,....?

    C doesn't teach you anything more about disks/processors/files than say C# does. If you are a C programmer then you are probably in a field of work/study which requires you to know things like machine instructions,cache lines,.... but that's not the same as saying studying C teaches you that.

    When/where did you learn to code? Was it through structured learning (ie college)?


  • Advertisement
  • Registered Users Posts: 36,167 ✭✭✭✭ED E


    I'm with gleesonger on this one, the colleges that do/did start firsties off with C have stopped to my knowledge in favour of Java/Python to whet their teeth on. Really no reason to start with allocs etc.

    Start with what you *will* need, then add stuff you might.


  • Registered Users Posts: 3,739 ✭✭✭scamalert


    how about simple html or php,its easy mistake many make jumping into some language having no clue of its foundation or overhead is like being dropped into ocean without knowing how to swim,let alone keep afloat.

    simple stuff like can you write code for html page to display hello world,can you change background color,php simple scripts to display window for users to input numbers and get math results,then figuring out how command gets its answers-alone is enough to get buried in questions.


  • Registered Users Posts: 760 ✭✭✭mach1982


    I mentor with CoderDojo , we start off with Scratch by MIT it teachs how to think like a programmer and introduces you to conceptd like conditional statements and loops. I recommend Java use the New Boston great, CodeAcademy are too they have a Java course only thing is that some times if it is not the way the author solved it it won't continue .A good book Schaum's guide to java just Google it.HTML & JavaScript good too check out w3schools.


  • Registered Users Posts: 14 NorseRunes


    I would start out with C as well , just my opinion, as it suits well in the beginning instead of jumping directly into object orientated languages. This is one of the best books I bought years ago when starting C and programming:

    C Programming Language
    Authors Brian W. Kernighan and Dennis Ritchie

    ISBN-10: 0131103628
    ISBN-13: 978-0131103627


  • Registered Users Posts: 1,519 ✭✭✭GalwayGrrrrrl


    I'm hoping to start a postgraduate programming course this year- the online option from NUIG starts off with teaching C as they feel if you understand that you have a good base to build on. Hope I can cope with it- I've been using Scratch with my kids and enjoying that.


  • Registered Users Posts: 8,184 ✭✭✭riclad


    http://lifehacker.com/five-best-programming-languages-for-first-time-learners-1494256243

    Java isn't a perfect programming language though—many schools and classes start with C or C++ because Java gets a lot of its syntax from those earlier languages. Those of you who championed Java as a good first language noted that Java forces you to think like a programmer—to think logically and analytically, and really grasp how a computer will process information in order to be successful. It's a fundamental set of core concepts that will help you as you move to other languages and technologies

    i put epub books on my phone ,
    then use read aloud function .from free coolreader app .
    may be useful to students who can learn by listening ,
    instead of just reading sitting down for hours at a time .


  • Registered Users Posts: 5,949 ✭✭✭A Primal Nut


    There is an idea in programming that is different to other types of learning in that people say you should learn the most difficult languages (for example C) first for many reasons expressed in this thread. If you are really, really smart then yeah that might work, but I tried that and gave up because I struggled with all the different things you have to learn. If you are studying in college and have years to dedicate to it then it might also make sense. But if you want to learn yourself, it makes more sense to learn an easy language first and then work your way up towards other languages, the same way you learn anything else.

    I struggled a lot with programming until I went with Python. There is a good learning curve in that you can start off with the easy stuff and slowly move onto more complicated stuff like classes. It's one reason I don't recommend Java for beginners because one of the first things you have to learn is about classes, which should be a more advanced topic.

    Python is relatively simple to learn can be used for many types of applications. I found it an easy jump to Java once I knew Python pretty well, whereas beforehand I struggled with Java.

    Don't bother with a Raspberry Pi yet. It's nice for projects but if you are learning from scratch it just adds an extra layer of complexity. You can get learning on any PC.

    Remember when you first learn any language it can be intimidating as there seems to be so many topics covered in tutorials but remember with just a few concepts (variables, data types(str, int), if/else, for, lists, functions, print and maybe classes after a bit of experience) you can do a lot of cool stuff.


  • Registered Users Posts: 134 ✭✭ishotjr2


    Just got though a painfull discussion with JS/Java developers on why their application was hanging on some machines. The usual problem no knowledge of how much memory the browser actually uses and that garbage collection is not the solution to everything! reminded me of this post.

    Came across this thought it was good.
    http://c.learncodethehardway.org/book/


  • Advertisement
Advertisement