• Navigation
Results 1 to 17 of 17
  1. #1
    Queen of the Pity Party
    Join Date
    Sep 2007
    Posts
    11,725
    BG Level
    9

    Teaching myself computer programming: Where should I start? What do I need to know?

    Hey BG Tech,

    I plan on going to school in the near future for computer science. However, I've decided to teach myself some basic programming in the meantime, mostly out of equal parts boredom and a desire to challenge myself. I did a little programming in school - scheme and java - but it's been a while. My goal is to eventually be self-employed, if that matters - I'm not aiming for a corporate job.

    I'm well aware there might be more questions I need to ask before I decide what to start with, but that's why I'm here. What advice do you have for someone like me? What languages should I be looking at?

    I also have one other question: If I learn a slightly older release of a language, is that going to hurt me when I get up to speed? I'm low on funds right now and plan on using library books as resources for the most part. My local library has a pretty big computer science section, but even the most recent books are a year or two old in most cases, sometimes much older.

  2. #2
    Queen of the Pity Party
    Join Date
    Sep 2007
    Posts
    11,725
    BG Level
    9

    aaand that should say "Where do I start" not "What do I start." Good job, yuri-g.

  3. #3
    Pandemonium
    Join Date
    Oct 2005
    Posts
    7,839
    BG Level
    8
    WoW Realm
    Cho'gall

    What kind of business do you want to own/start? Do you want to develop apps? Design webpages? That'll determine if you should learn Python or PHP or what have you.

    Learning older languages usually won't hurt, they tend to evolve so you'd still get a basis in the syntax and everything.

    I edited the title for you

  4. #4
    Relic Weapons
    Join Date
    Oct 2006
    Posts
    335
    BG Level
    4

    If you are going to enroll in a CS program, the first programming courses you take are generally going to be in C++ and Java (sometimes C, but not so much these days). If you have limited experience with either (or both), I would strongly advise spending the time now to work with first them regardless of what you want to eventually develop. The general idea being that if you can limit the amount of frustration you will eventually experience while you're in the classroom working on projects on a deadline, the better experience you will have overall and the more you will get out the courses.

    Some languages intentionally have a very long change process, and I can't think of any that radically change so much within a year or so that a book from a library would be significantly out-of-date and suspect. For languages that do, you'd want to look online for their references anyway. There are lots of book series out there that churn out new editions every 1-2 years (Dietel & Dietel, etc.) but I haven't decided whether that's either to keep current or keep the textbook industry in business.

    You should find a good resource (book) on algorithms and programming concepts--such as design patterns--as well; there are a few that are pseudocode/language-neutral and will help you understand why languages are structured the way they are and how to better refine your solutions. Introductions to Algorithms is a good one, but might be a little higher than you really need right now.

    Also: paper first, then code.

  5. #5
    Queen of the Pity Party
    Join Date
    Sep 2007
    Posts
    11,725
    BG Level
    9

    thanks to both of you for replying

    Quote Originally Posted by Cephius View Post
    What kind of business do you want to own/start? Do you want to develop apps? Design webpages? That'll determine if you should learn Python or PHP or what have you.

    Learning older languages usually won't hurt, they tend to evolve so you'd still get a basis in the syntax and everything.

    I edited the title for you
    lol thanks. I'm not sure what opportunities are out there to be honest, so that's another area I need to research. right now I'm thinking either freelance programmer of some sort of app developer. I've also got my eye on web development, though definitely NOT webpage design (I'm no good with visual design). basically I want to be my own boss, so I'll be going where the money goes.

    Quote Originally Posted by Teorem View Post
    If you are going to enroll in a CS program, the first programming courses you take are generally going to be in C++ and Java (sometimes C, but not so much these days). If you have limited experience with either (or both), I would strongly advise spending the time now to work with first them regardless of what you want to eventually develop. The general idea being that if you can limit the amount of frustration you will eventually experience while you're in the classroom working on projects on a deadline, the better experience you will have overall and the more you will get out the courses.

    Some languages intentionally have a very long change process, and I can't think of any that radically change so much within a year or so that a book from a library would be significantly out-of-date and suspect. For languages that do, you'd want to look online for their references anyway. There are lots of book series out there that churn out new editions every 1-2 years (Dietel & Dietel, etc.) but I haven't decided whether that's either to keep current or keep the textbook industry in business.

    You should find a good resource (book) on algorithms and programming concepts--such as design patterns--as well; there are a few that are pseudocode/language-neutral and will help you understand why languages are structured the way they are and how to better refine your solutions. Introductions to Algorithms is a good one, but might be a little higher than you really need right now.

    Also: paper first, then code.
    C++ and Java are the two I was looking at actually, because they seem to be both prevalent and versatile. I have limited experience with Java (and scheme... lol) but very little with C++, although the little I've read definitely sucked me in.

    unfortunately I don't have internet at home right now, and might be losing my job soon, hence using the library as a main resource. mainly I'm looking to read up on computer science as a way to kill time until I get back on my feet.

    I did see a bunch of books on general computer programming concepts, and some that specifically focused on algorithms - I'll pick one of those up for sure.

    other languages I was thinking of:
    - PHP for web development
    - Python because everyone seems to love Python

  6. #6
    Salvage Bans
    Join Date
    Feb 2007
    Posts
    811
    BG Level
    5
    FFXIV Character
    Orinthia Warsong
    FFXIV Server
    Excalibur
    FFXI Server
    Bahamut

    Take the time to plan your code first before writing it. Like in a notebook, write out your problem and how you think you might be able to solve it using pseudocode, in English, or whatever gets the point across. Write with a pen, use a single line through mistakes (like a font in strikethrough tags), and continue to write your thoughts on the problem as you stumble through to the solution. Write errors, thoughts, trials, and pictures if needed. You will make tons of errors, it's a given, so review your entries and keep through to a solution. Write comments in your code as well, like where you found a piece of code, what the code does if it's not obvious, or what you're doing with a large block of code (whats it do, inputs, outputs, etc).

    There, you'll be more familiar with an Engineering Notebook and code commenting than most of your year's class It's a good idea to do this for most of your assignments if the solution is not obvious, even if you're not required (just use a regular ringed notebook, not a real one unless it's necessary). This way it's not such a shock or a pain to do the entries for a grade. Many of my courses required the commenting and notebook entries (had online page to make entries). The Planning, where you're trying to quantify the more important things your program is supposed to do, is similar to a Requirements Document, though a lot less formal. You'll also need to be familiar with these, as its purpose is to try and plain-English your project and outline its main aspects, what it does, what it uses, how, etc, and sometimes required in upper level courses. You'll learn more about both when you start your courses, but it's a good habit to form early (especially code commenting, nearly all languages have something for commenting inside source code).

    Most programming languages you'll be using will probably have C-like syntax, so if you're familiar with Java, you'll be able to adapt quickly. You'll still be doing a lot of googling for sample code, but you'll get better as you take apart the code itself and understand how it's working. CS is very brainy and you'll see tons of people drop after the first semester lol, don't get discouraged.

  7. #7
    Art Connesseur of Blue Gartr
    Join Date
    Jul 2007
    Posts
    5,834
    BG Level
    8
    FFXIV Character
    Odess E'iron
    FFXIV Server
    Balmung
    FFXI Server
    Ragnarok

    Get ready for Aurik to tell you that you're in idiot, or something as condescending.

  8. #8
    Banned.

    Join Date
    Oct 2006
    Posts
    10,115
    BG Level
    9

    Quote Originally Posted by Odesseiron View Post
    Get ready for Aurik to tell you that you're in idiot, or something as condescending.
    This nigga.

    Anyway if you plan to go where the money goes. It wouldn't hurt to learn and become proficient in javascript. Most anything these days for the mobile market can be done with html5 and javascript. This of course on top of what everyone else recommended.

  9. #9
    Queen of the Pity Party
    Join Date
    Sep 2007
    Posts
    11,725
    BG Level
    9

    Quote Originally Posted by orinthia View Post
    Take the time to plan your code first before writing it. Like in a notebook, write out your problem and how you think you might be able to solve it using pseudocode, in English, or whatever gets the point across. Write with a pen, use a single line through mistakes (like a font in strikethrough tags), and continue to write your thoughts on the problem as you stumble through to the solution. Write errors, thoughts, trials, and pictures if needed. You will make tons of errors, it's a given, so review your entries and keep through to a solution. Write comments in your code as well, like where you found a piece of code, what the code does if it's not obvious, or what you're doing with a large block of code (whats it do, inputs, outputs, etc).

    There, you'll be more familiar with an Engineering Notebook and code commenting than most of your year's class It's a good idea to do this for most of your assignments if the solution is not obvious, even if you're not required (just use a regular ringed notebook, not a real one unless it's necessary). This way it's not such a shock or a pain to do the entries for a grade. Many of my courses required the commenting and notebook entries (had online page to make entries). The Planning, where you're trying to quantify the more important things your program is supposed to do, is similar to a Requirements Document, though a lot less formal. You'll also need to be familiar with these, as its purpose is to try and plain-English your project and outline its main aspects, what it does, what it uses, how, etc, and sometimes required in upper level courses. You'll learn more about both when you start your courses, but it's a good habit to form early (especially code commenting, nearly all languages have something for commenting inside source code).

    Most programming languages you'll be using will probably have C-like syntax, so if you're familiar with Java, you'll be able to adapt quickly. You'll still be doing a lot of googling for sample code, but you'll get better as you take apart the code itself and understand how it's working. CS is very brainy and you'll see tons of people drop after the first semester lol, don't get discouraged.
    I actually picked CS as my path in life because of the brainy thing. I've always had a math/logic brain, and when I took computer science in college I was exceedingly good at it - easy A's for me. but more than that, I love the complexity and difficulty of it. I'm in this for the challenge. I honestly don't know why I gave up on it earlier, other than to say I was an idiot college kid at the time and wanted to pursue journalism so I could change the world (by getting a series of mid-level customer service jobs, apparently).

    thanks for all your tips. I love the creative problem-solving aspect of programming more than anything, so I definitely have a grip on what you're saying. I'm the type of nerd who actually enjoys not only coding a program, but coding it as efficiently as possible. planning it out is half the fun... at least with the low-level stuff I've done so far.

    Quote Originally Posted by Odesseiron View Post
    Get ready for Aurik to tell you that you're in idiot, or something as condescending.
    lol, I'll keep that in mind.

    Quote Originally Posted by Tajin View Post
    This nigga.

    Anyway if you plan to go where the money goes. It wouldn't hurt to learn and become proficient in javascript. Most anything these days for the mobile market can be done with html5 and javascript. This of course on top of what everyone else recommended.
    I'll keep that in mind too, thanks. money is definitely the goal here... the end goal, a long ways down the road. but the goal nonetheless. tired of workin' for the man.

  10. #10
    Relic Weapons
    Join Date
    Oct 2006
    Posts
    335
    BG Level
    4

    When in places where you do have access to the Internet, you may be interested in some of the YouTube or iTunesU lecture offerings that some universities have made publicly available. They cover a wide variety of subjects--including CS basics--but I haven't really watched them fully and cannot fairly comment on quality.

    MIT Courseware: http://ocw.mit.edu/index.htm
    Stanford: http://www.youtube.com/user/Stanford.../videos?view=1

  11. #11
    You just got served THE CALLISTO SPECIAL
    SASSAGE KING OF DA WORLD
    cheap hawks gay

    Join Date
    Sep 2007
    Posts
    26,424
    BG Level
    10

    Was coming here to post the OCW link, I dabbled there when I was unemployed to kill time/keep my brain active, really nice stuff available there.

  12. #12
    Salvage Bans
    Join Date
    Apr 2009
    Posts
    937
    BG Level
    5
    FFXI Server
    Leviathan

    Demonoid has some pretty good stuff in a programming mega pack with a decent amount books on everything, lectures on discrete math, etc.

    I'd say the best thing you can do is read a good book on C++ to get a strong foundation, then dive into data structures, algorithms, discrete, etc. Tutorials are absolutely not a substitute for what a good book provides.

    If you want to push yourself further, adjust your daily routines to be a bit more CS-oriented. For instance, if you read reddit: subscribe to some subs like /r/programming, /r/algorithms, /r/cscareerquestions, /r/learnprogramming, etc and get into a habit of browsing them on occasion to learn new things. For anything you don't understand on there, a year from now it might be cool to look back on what you couldn't follow at all and realize how simple it really is.

    Also, save yourself some pain and try to discover a love for math and dick around with basic calc1/2 and such online; sites like patrickJMT and KA are always useful. Many college math professors have gotten into a habit of doing most of a problem in their head, which could be an issue following along if you're rusty on the basics.

  13. #13
    Remit One (1) Custom Title
    Join Date
    Sep 2007
    Posts
    2,397
    BG Level
    7
    FFXIV Character
    Qeomash Pandemonium
    FFXIV Server
    Cactuar
    FFXI Server
    Asura

    Quote Originally Posted by Yuri-G View Post
    I actually picked CS as my path in life because of the brainy thing. I've always had a math/logic brain, and when I took computer science in college I was exceedingly good at it - easy A's for me. but more than that, I love the complexity and difficulty of it. I'm in this for the challenge. I honestly don't know why I gave up on it earlier, other than to say I was an idiot college kid at the time and wanted to pursue journalism so I could change the world (by getting a series of mid-level customer service jobs, apparently).
    You scare me, that's almost exactly what happened to me except the change the world part. I'm more mature and know more about myself than back then, so if I went back today I'm sure I could stick to it.

    The biggest problem with programming for me was that there really was only one aspect I really enjoyed: data structures. The first linked list tree I wrote was a magical thing and definitely gave me a boner. Every class after that, though, just seemed more and more boring. I guess I just liked the sheer applicability of it and how you could (meta)physically see how and why it works.

    But, yeah, I'd start with C++. It's just a better version of C, which is more or less the grandfather of most programming languages and will make learning newer ones easier.

  14. #14
    Conejita's Jolly
    Chaparrita's Dulce
    Trigger warning: Fuck your feelings.

    Join Date
    Feb 2006
    Posts
    7,075
    BG Level
    8

    I started w/ C and haven't had any problems learning any other languages (C++, Javascript, PHP, and so on). It made it easier for me, but I don't know if it will work for you as some of my fellow students thought it was too complicated for beginners. Anyway, you may want to check this out, kinda gives you an overview of what languages are tied to/closely resemble others, etc. etc.

  15. #15
    ES #1 HUE HUE HUE
    Join Date
    Sep 2008
    Posts
    541
    BG Level
    5
    FFXIV Character
    Super Bad
    FFXIV Server
    Excalibur
    FFXI Server
    Phoenix
    WoW Realm
    Blackrock

    https://www.cs50.net/lectures/

    Free Harvard online CS class

  16. #16
    Queen of the Pity Party
    Join Date
    Sep 2007
    Posts
    11,725
    BG Level
    9

    hey, those links look pretty useful. I'll definitely give them a look when I have a moment, thanks for sharing them. can't do demonoid right now but when I get a chance I'll check that out as well.

    I ended up heading to the library and grabbing both a Java and a C++ book, but I think I'll start with C++. knowing a little about both of them, something about C++ just draws me in more. I'll learn them both eventually though; they sound like two good core languages to have under your belt. of course, I've got a long road ahead of me, and I'm not stopping there...

    thanks for the feedback.

  17. #17
    Goblin Princess
    Join Date
    Mar 2008
    Posts
    16
    BG Level
    1
    FFXI Server
    Odin

    A friend of mine recommended http://www.codeacademy.com to me when I told him I was looking to learn more programming. It's just Javascript, but it goes over a lot of the basics that you can apply to any language.

Similar Threads

  1. Really basic computer programming question
    By Rockstaru in forum Tech
    Replies: 4
    Last Post: 2010-04-04, 08:56
  2. Replies: 8
    Last Post: 2008-12-03, 20:52