Slashdot Mirror


Summer Programming Courses Before Heading Off To College?

First time accepted submitter LiteWait writes "My son is heading off to college next year and although he is bright kid with a great background in math and science, he has indicated that he'd like learn some introductory programming skills this summer. The courses at the local universities are pretty sparse and most of the CS101-type courses I've seen offered are too general to meet his needs. Even though he is a self-starter I think he would benefit from actual courses/code camps/etc rather than just slogging through online samples and tutorials. I'd like some advice on possible options for code camps, online courses, or developer training."

29 of 183 comments (clear)

  1. Python by Kimomaru · · Score: 5, Insightful

    Python is considered by many to be a great entry-level language and it's also very popular in the real world. There are many good books on the subject, so it might make for a great self-taught experience.

    1. Re:Python by spongebue · · Score: 3, Informative

      If you go that route, I like Learn Python the Hard Way. I used it to learn Python from my Java background, but it's also great for those that have never programmed in their life. The basic programming structures (loops, conditions, classes, etc) are all covered and can be transferred to other languages, and it's not too strenuous despite its name (while still learning stuff, of course). Everything is very well narrated.

    2. Re:Python by ShanghaiBill · · Score: 2, Informative

      Python is considered by many to be a great entry-level language and it's also very popular in the real world.

      I agree that Python is a good first language. But there may be a better language for him to learn: The language used in the introductory course of the college he will be attending this fall. In fact, this "ask Slashdot" question seems silly. His best option is to contact the college he will be attending, get their list of summer courses, and pick one. That way he will not only be learning to program, but he will be learning the right language, the right style of programming (where right == "what the professors want"), and he will get full college credit for the course, and have a head start over his classmates. This will also help his GPA because summer courses are graded on an easier curve since they have plenty of students that flunked or dropped out during the regular school year. He will also learn his way around the campus, and be more comfortable during the fall semester.

    3. Re:Python by Kimomaru · · Score: 3, Insightful

      "The language used in the introductory course of the college he will be attending this fall."

      I'm sorry, I must disagree completely. You shouldn't leave it to the school you're attending to figure out which language is best for you, quite often educational institutons are the least in-touch with what drives the market or an industry. Ask programmers and professionals which language has the most value in the current market and industry. The school's opinion should almost rate dead last, not first. Every college graduate I know has agreed that there is practically no link between what's learned in school and how the real world works.

  2. As a professional, I would say... by ShieldW0lf · · Score: 4, Interesting

    The best course he could take for computer programming is a touch typing course. And that's by a huge margin.

    --
    -1 Uncomfortable Truth
    1. Re:As a professional, I would say... by seyfarth · · Score: 4, Insightful

      Having been a successful programmer for 35 years, I would discount the value of touch typing. It has been my experience that thinking is far more important than typing skills. Fast typing helps, but I think your son would find this boring. Taking whatever beginning programming course is handy will help. Well, I would dodge Cobol, Fortran and Perl. Perl is relevant but pretty ugly. Java, C, C++, Python, or Visual Basic would all be fun and useful. Just be sure that the course is for beginners.

      --
      Ray Seyfarth, ray.seyfarth@gmail.com, http://rayseyfarth.blogspot.com
    2. Re:As a professional, I would say... by ShanghaiBill · · Score: 4, Insightful

      Having been a successful programmer for 35 years, I would discount the value of touch typing. It has been my experience that thinking is far more important than typing skills.

      Your logic makes no sense. Learning to type faster is in no way going to diminish his ability to think.

    3. Re:As a professional, I would say... by Zordak · · Score: 4, Insightful

      Having been a successful programmer for 35 years, I would discount the value of touch typing. It has been my experience that thinking is far more important than typing skills. Fast typing helps, but I think your son would find this boring.

      Ah, see what you did here? A is useless. B is more important than A. (Which is orthogonal to whether A is useful in itself.) (And now the admission.) A helps, but is boring.

      A person can't program without thinking, but between two people who have identical thinking skills, the one who can type is the better programmer. Which means that typing is a great skill for a programmer.

      I used to think the way you do, that typing is a waste of time, that I could do without it. Then I took a typing class in high school because I needed to fill half a credit (this was 20 years ago). That's when I realized how much not knowing how to type had been getting in my way. It's like living in a country where you don't speak the language. Yeah, you may be able to get by, but it's a lot easier if you just learn to talk.

      I was also surprised at how easy it was. It takes only a few weeks to get to basic competence on the keyboard. After that, it's all repetition (with plenty of opportunity for repetition). The only way I can encode my thoughts faster than typing is speaking, and until Dragon get a little better, even that's a tossup. It's dumb for a kid not to learn to type today. He'll probably use computers in every job he ever has has. No reason to do it with a handicap.

      --

      Today's Sesame Street was brought to you by the number e.
    4. Re:As a professional, I would say... by spiffmastercow · · Score: 3, Funny

      This + Project Euler == Profit!

      returns false

    5. Re:As a professional, I would say... by mwvdlee · · Score: 2

      Just imagine all the extra thinking you can do when you no longer have to think about typing while typing. I'm sure you would have though this out yourself were it not for all the hunting and pecking you had to do while typing just then ;)

      A basic touch typing course should be a requirement for programmers. Not necessarily at high speed, just enough so they won't lose their train of thought while typing.

      Some people will say you have to think before you type it out. I agree. That's why I think about what I'm going to do next while typing out what I thought out before.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    6. Re:As a professional, I would say... by vigmeister · · Score: 2

      I think the kid would be better off learning touchscreen typing...

      --
      Atheist: Buddhist in a Prius
    7. Re:As a professional, I would say... by White+Flame · · Score: 2

      Good typing skills will

      1) As mentioned, free up his brain in not distracting it by having to think about typing.
      2) Leaving a stand-out positive impression about how good he is, among other amateur programmers at similar skill levels.

      I cannot impress the importance of #2 enough, when it comes to interviews or academic connections. Having a natural, comfortable demeanor while working makes you look more confident and competent than your hunt'n'peck sloppy-postured neighbors.

      Of course, his actual programming skills will be determined by his own self-study, and that will eventually overwhelm the other factors, but good typing skills will make him stand apart in a very *socially* competitive environment.

  3. Learn X The Hard Way by Anonymous Coward · · Score: 2, Informative

    A decent self-study course is the Learn X The Hard Way (originally X = Python, now Ruby and C are available as well):

    http://learncodethehardway.org/

    Focuses heavily on code-as-language, so the early exercises may remind you of typical foreign-language study: "type these things, explain what they mean, etc".

  4. Start on the courses by the+eric+conspiracy · · Score: 3, Insightful

    The best thing to get a jump start would be to find out what texts are going to be used for his courses and to start on them.

  5. Calculators; Python by KermMartian · · Score: 2

    I've spoken to countless now-engineers and professional programmers who started learned programming by playing around with graphing calculators. They're ubiquitous, your audience is huge, and the built-in TI-BASIC language is surprisingly powerful. I'd definitely recommend he pursue that as a means to learn to think like a programmer, skills like structuring programs, prototyping with pseudocode, debugging, and all that. In fact, I wrote a book teaching those very skills. Alternatively, Python is a great beginner computer language in that the syntax is clear and cruft-free (yes, Java, I'm looking at public static void main()...) and crashes are generally graceful and easy-to-debug.

  6. I Got It All Right Here by eldavojohn · · Score: 5, Funny

    Even though he is a self-starter ...

    Okay, awesome! What you should do is get him a raspberry pi then pick up an HDMI cable, a cheap keyboard and cheap mouse (both of which should be wired as it lags to offload wireless processing to the pi) from monoprice. Right now, B&H Video has a deal where you get 2 x 16GB cards for $15 if you add two of these to your cart with free shipping. Okay, I've actually already bought several sets of this stuff from these exact same suppliers and handed them off to a bunch of kids that are loving them right now. So that's all legit. You'll need to have a TV or monitor with an HDMI in and it helps if you have a cheap webcam (one of the tutorials I'm gonna mention uses it). You'll also need a second computer with a way to access SD flash cards (pick up a USB toaster for $5 if you don't have this)> Optional would be male-to-female wires like these with any breadboard so he can tinker with making his own stuff -- you'll probably have to drop more cash on more electronic devices to interface with it if you go this route though.

    Next, you might consider this book but I prefer this one more. Okay then you send your kid here to get the hard float raspbian wheezy and you tell him how to figure out how to get it on the flash card to boot on the pi. There's a wiki for all this stuff. Then you send him here and make him do these tutorials. Then you make him read all the issues of the MagPi. And if he's smart enough, you buy him some more peripherals. There should be a lot more tutorials coming out for this device.

    Once he has all that stuff, you go to the liquor store. Now, the liquor stores around my house sell a lot of types of vodkas and Absolut is great but I've found that Sobieski satiates me just as well. It's made from this Dankowski rye that makes great gimlets. Try to buy a case of handles and haggle him down to ~$13 a handle (that stuff is really cheap). Then you go to the store and you get some of that Real Lime lime juice. Not the key lime shit, the actual lime juice. You're gonna need a decent blender because this thing is gonna be working all summer long. Also, a bag of hazelnuts. Go home and fill a cup to the top with ice and put in about one finger of lime juice. Fill the rest with Sobieski. Blend that shit up, garnish with a couple crushed hazelnuts to really dry that shit out and kick back. Trust me, your kid is going to come and talk to you about python and apt-get and registers and you are not going to want to have to deal with that. So just get good and fucking faced in the sun all summer long. Your kid will thank you for staying out of his hair. A summer of riproarin' fall down drunk? You can thank me later.

    --
    My work here is dung.
  7. Codecademy by djKing · · Score: 5, Informative

    Our daughter signed up for Codeademy (http://codeademy.com/)to help her with a CS course she was taking at UBC. She's in Arts but needed a science and CS fit the bill. She found Codeademy very helpful. She got an A+ in the CS course.

    --
    Free as in "the Truth shall set you..."
  8. doing it wrong by LodCrappo · · Score: 4, Insightful

    Sending a kid to a CS-101 type introductory class will very likely bore him to tears and possibly give him a lasting negative impression of programming.

    Why not help him pick a reasonable goal (somewhere in between "make a web page" and "write a new operating system) and then just let him code. Programming well isn't something you learn in a classroom, its learned by coding poorly a whole lot, and then learning how to do it better, and then learning how to do it even better, again a whole lot. At some point in that process a classroom might be involved and might even help, but not at the beginning.

    --
    -Lod
  9. This cannot be underestimated by MikeRT · · Score: 5, Insightful

    When I got out of college, most of my older coworkers where shocked at how quickly I could type Java code because I learned how to touch type the non-alpha numeric characters pretty well. When you don't have to hunt and peck for those characters, you can actually type out code about as fast as you can think "I'd like to make this change..."

    If you want to drive this point home, get your son into a Perl class or doing Perl work. He'll go nuts if he doesn't bother to learn how to do this skill well.

    1. Re:This cannot be underestimated by Hatta · · Score: 4, Interesting

      Get a keyboard with unlabeled keycaps. I use a Das Keyboard with cherry blue switches that is completely blank. If you can't look at the keyboard as a crutch, you're forced to rely on muscle memory, which strengthens very quickly.

      --
      Give me Classic Slashdot or give me death!
  10. MS Office course by Billly+Gates · · Score: 3, Insightful

    I know I am about to be modded down, but hear me out.

    First off as a freshmen he wont even touch any programming course. More than likely he will take english for poets, speech, intro to worplace management, and Intro to computers 101.

    Most universities require you to take that ridiculous intro to computers 101 as many assignments today are group projects done in blackboard which use Outlook, Word, Excel, and even Powerpoint. They do this to emulate work which is a good thing to learn. I learned the Powerpoint slide rule, no more than 3 bullets per slide, etc from my biology professor believe it or not.

    In college excel is used in math, statistics, and computer science with datasets. Most bright kids today know how to type but do not know even how to set a margin in Word! They just tab all over the place and wonder why formatting errors occur etc. These can be bright kids but just are not used to doing office tasks on them.

    Have your son learn this and get a certificate in it so he can exempt from that course and save himself/yourself $2,500 in student loans. He can probably get his WPM typing up too so can get done with papers quicker too.

  11. Z80 by burisch_research · · Score: 2

    Give him a ZX81 or Spectrum 48k and manual. Plus, no internet or anything else! Lock him in a dark room for 6 months. Presto, open the door and you have an IT expert.

    --
    char*f="char*f=%c%s%c;main(){printf(f,34,f,34);}";main(){printf(f,34,f,34);}
  12. Re:Online samples are pretty good by Cenan · · Score: 2

    HTML for new programmers? That's a horrible idea.

    It's a document formatting specification, that nobody can seem to agree on, making it an unecessarily complex choice of "language" to begin with. And what would that teach anybody about encapsulation? Coupling and cohesion? Not to mention loops, recursion and simple stuff like flow of control?

    --
    ... whatever ...
  13. Camp CAEN by KevinFlannery · · Score: 2

    Check your state school. I attended Camp CAEN every summer and learned tons. Something like this is the best way to get good at programming. http://en.wikipedia.org/wiki/Camp_CAEN

  14. WHY? by Dahamma · · Score: 2

    He's going to college. Isn't the point of going to college to take courses?

    If he really wants to learn more about programming before/outside of college, the best way IS to be a self-starter and use the near infinite resources of the Internet to do it. If he doesn't want to do that, why force him? In either case, if as you say the local programming classes aren't very good, why not just let him wait to take one when he starts in the fall?

  15. But I Am Dead Serious! by eldavojohn · · Score: 4, Interesting

    PS the recommendations in the first part of the post are not applicable to a beginner.

    Believe it or not, I am dead serious about the Pi. There's a 13 year old kid from Lithuania staying with my boss and I brought over the exact same setup I mentioned above and just showed him briefly how scratch works. This was his e-mail to me a mere one week later:

    Sorry, that I didn't wrote a letter for you long time.
    I was working on Raspberry Pi and I am still working on it.
    I am learning to program some games, and I have made one already. It is just a simple game. Now it have some things that don't let it work, and I am trying to fix them.
    I made a little movie in the Scratch too.
    Raspberry Pi is a very good computer. Sometimes I am thinking how could it work being so small, and it's almost a real computer.
    I have heard, that root terminal needs a pasword to work. In this Raspberry Pi, I don't need pasword. When the program starts, it put a letter that I don't need pasword to run a program.
    Thank you for opportunity to work with this computer, it is so interesting and good.
    Sincirely,
    Aivaras

    I asked him if he needed the root password I setup Debian with, that's why he said it doesn't need a root password. The great thing about the Pi is that it's cheap and you can do as little or as much with it as you want! I'm 30 years old and I love it! Seriously, when I tally up all the stuff I listed in that post, it comes to under $60! That's like a PS3 game disc ... how can you afford not to buy this for your kid -- whatever the age or gender?

    --
    My work here is dung.
  16. Enjoy his last minutes of freedom!!! by sureshot007 · · Score: 5, Insightful

    Tell him to stop worrying about college and just enjoy the summer. Once you go to college, it's all about studying and doing well, then summers are for working jobs to pay off some debt and have spending cash during the school year, then back to school....and once your graduate and get a job, all of your freedom is gone!

    Have him enjoy his last moments of freedom from responsibility and have fun with his friends.

    Besides, if I had a dime for every kid in Intro to CS that thought he knew how to program but couldn't grasp the idea of simple design patterns...I wouldn't have had to be a TA.

  17. Get an internship. See if he likes it. by pla · · Score: 2

    [...] Even though he is a self-starter I think he would benefit from [...]
    [...] he has indicated that he'd like learn some introductory programming skills this summer [...]
    [...] the CS101-type courses I've seen offered are too general to meet his needs[...]


    Thuppathuppathuppathuppathuppathuppa...

    No offense, but one of those things doesn't jive. Either you want him to waste his last summer of freedom learning something his uni will already present at a painfully slow pace... Or you over-estimate his degree of self-starting.

    In college, I had two very distinct types of peers in my CS classes (no, I don't plan to make this into a "people who know binary" joke). Half of us already knew a few programming languages and casually discussed our latest projects (both in the "toy" and "real employment" senses). And half of "us" switched majors to Tech Writing (the "philosophy major" of STEM) after failing the first semester of Analysis of Algorithms (assuming they even made it past Intro to Programming).


    Perhaps he really does have an interest in programming, perhaps you want him to have an interest in a moderately in-demand and well-paid field. If you make him spend the summer grinding to get a leg up on the other freshmen, though, you can pretty much guarantee that if he graduates in 4-5 years, he'll have a degree in French Renaissance Literature. ;)


    More seriously, if he wants to figure out if he really likes programming, and wants to get an edge over his peers - Have him look for an internship (probably unpaid if he can't actually program yet).

  18. The exact opposite of what you want to do. by lattyware · · Score: 2

    The number one thing that programmers need to learn, and from what I have seen, don't at University, is how to read documentation and apply the learnt concept to their code. The easiest way to learn to do that is to learn by doing. Programming is probably the easiest thing in the world that requires a fair amount of knowledge to do without formal education - the resources are vast and great. A mixture of a good language (personally, a huge fan of Python, and it's often considered a good language to learn, but really, anything with a large standard library will do), it's documentation, Google and StackOverflow will be enough.

    --
    -- Lattyware (www.lattyware.co.uk)