Jump to content

Menu

How to prepare for programming classes


Roadrunner
 Share

Recommended Posts

If we plan on taking aops programming classes eventually (maybe grades 7 or 8), what would be the best preparation? We don't plan on it for another couple of years, but I have read here that these classes are extremely tough. Which math classes (and/or programming ones) do we need to make sure we have completed, before successfully venturing into Intro to Python? Also, my husband and I won't be able to help at all, so he would need to be very prepared. I am getting nervous that his interests are so far beyond of my abilities that I won't be able to even steer him in the right direction. Should we be doing easier programming now? Is that even helpful?

Link to comment
Share on other sites

Listening in as my ds11 is getting interested after having a great deal of experience with Scratch...  FWIW, I have been wondering whether the Intro class is not quite as super-challenging as it once was before they added the Intermediate class.

 

For a 9 y.o., I can highly recommend Scratch, but we're not far along enough yet to see whether lots of Scratch will help with the big-picture of programming before starting Python.

Link to comment
Share on other sites

He has done scratch, but that doesn't look like programming to me. I looked at "do you need this class" PDF on Python to have an idea on what they do int the class and left my eyes on the paper.  :tongue_smilie: My kids do some animated things with Scratch, but they have outgrown it. I don't see how that could be helpful for real programming course though. Seems so different. But then again, I know nothing about programming.  :001_unsure:

Link to comment
Share on other sites

The math part is clear from the Are You Ready? pretest.  AoPS prealgebra plus a bit of algebra (systems of equations and inequalities?) should do the trick, or perhaps any regular algebra 1.

 

I don't know about the programming (it's been multiple decades since I took Pascal and COBOL, lol) except that ds continues to impress me with what he can do just in Scratch.  Maybe a programmer can comment; I am under the impression that programming concepts are separate from the syntax of a particular language.

 

Other than that, I would expect a sizable workload (several hours per week) for the Intro course, presumably more for a student who hasn't learned to program in a language before.  So, time would need to be allotted.

 

Eta, if your son is interested in doing some exploring on his own, you might check out this free on-line textbook

http://openbookproject.net/thinkcs/python/english3e/#(might be the text used for the Intro course? I can't remember)

Link to comment
Share on other sites

Personally, I've found a decent understanding of logic really useful when learning programming. Basic algebra is useful as well.

 

You could maybe have your DS make a couple simple websites with HTML or Javascript, that's simple and gives you an idea of how a program can be structured (and he can add in CSS eventually if he wants to make it look pretty). There are all types of free classes out there, including Khan Academy and Youtube tutorials. If he's into games, creating redstone machines in Minecraft actually is a very good introduction to how a program works (gates, circuits) as well. That would focus more on the engineering aspect, I suppose, but it could be a fairly easy way to learn some more of the logic behind a program.

 

https://www.khanacademy.org/computing/computer-programming

http://www.minecraftguides.org/logic-gates/

Link to comment
Share on other sites

My dd10 moved from Scratch to Python and JavaScript about half-way through AOPS Pre-A. She recommends 6 months of Scratch and good typing skills before switching from block code to text-based code, plus the patience and the willingness to re-read your code over and over. She also recommends Khan Academy videos for JavaScript, and books or instructional downloads for Python. She would probably wait until the Intermediate level before taking a class from AOPS.

 

 

The description from the Intro Class from the AOPS website:

 

This course will assume no previous computer programming experience. Students that have programmed before, but not with Python, might be better off downloading an online textbook and studying it on their own. The class is appropriate for middle and high school students who do not have computer programming experience and have completed at least a Prealgebra math course.

 

Students with prior programming experience in Python might instead consider our Intermediate Programming with Python course. Students with considerable experience with another language might also consider our Intermediate Programming with Python course after learning the basic syntax of Python via an online resource such as our free online textbook (see "Textbook and Software" below).

Link to comment
Share on other sites

I don't know about the aops class specifically, but for any programming, and solid understanding of formal logic would be extremely helpful. Like the examples on this page: http://en.wikipedia.org/wiki/List_of_logic_symbols

 

Finishing algebra and understanding nested functions would be helpful as well. Very basic combinatorics and modular arithmetic would be bonuses, but not necessary. 

Link to comment
Share on other sites

I had DS take the Landry academy Python class and it was difficult for him. He was just too young, the class long and tedious, and it became not fun at all towards the end. That said, the class was rigorous and I would have him take it again when older. DH had to help, but he doesn't know much programming himself so I had two frustrated people on my hands instead of one. Anyway, they managed to submit and get decent grades in the projects.

I am taking a haphazard or, if I'm generous, integrated approach to programming. He does FLL lego league and was able to write some simple programs for the projects, enough for us to get second in our local tournament. I was shocked. He will continue with that, and eventually we will do another class. He never took to scratch either. We're not good at the discovery method I guess, and I found the scratch book not particularly well done. The Python for kids book recommended upthread is very good, even I can follow it ;)

Ps happy to lend it to you for a year or so as we we are not using it now and you know our fall plans ;). That was the book used in Landry that's why we have it

Link to comment
Share on other sites

I had DS take the Landry academy Python class and it was difficult for him. He was just too young, the class long and tedious, and it became not fun at all towards the end. That said, the class was rigorous and I would have him take it again when older. DH had to help, but he doesn't know much programming himself so I had two frustrated people on my hands instead of one. Anyway, they managed to submit and get decent grades in the projects.

I am taking a haphazard or, if I'm generous, integrated approach to programming. He does FLL lego league and was able to write some simple programs for the projects, enough for us to get second in our local tournament. I was shocked. He will continue with that, and eventually we will do another class. He never took to scratch either. We're not good at the discovery method I guess, and I found the scratch book not particularly well done. The Python for kids book recommended upthread is very good, even I can follow it ;)

Ps happy to lend it to you for a year or so as we we are not using it now and you know our fall plans ;). That was the book used in Landry that's why we have it

No Lego league here unless we go back to PS. How do you go about learning how to program Legos on your own? My kids build Mindstorm all the time, but software is always downloadable. I didn't realize you can write it. How does one go about learning that for Mindstorm specifically?

Link to comment
Share on other sites

My kids build Mindstorm all the time, but software is always downloadable. I didn't realize you can write it. How does one go about learning that for Mindstorm specifically?

My kids did RobotC for Mindstorm during the Hour of Code. There is a 10 day trial link on the software publisher site.

 

http://www.robotc.net/download/nxt/

 

A familiarity with programming flow charts would be useful

https://www.udemy.com/blog/flowchart-examples/

Link to comment
Share on other sites

No Lego league here unless we go back to PS. How do you go about learning how to program Legos on your own? My kids build Mindstorm all the time, but software is always downloadable. I didn't realize you can write it. How does one go about learning that for Mindstorm specifically?

I don't understand...yes the software is downloadable but you still have to build the robot and make it do things. For FLL, they are given certain missions and get points based on that. Another nice WTMer sent me a link to various ev3 and NXT projects which are indipendent of fll; let me dig that up.

We formed our own FLL team. It helps to have one person familiar with programing, but we don't, and it was fine.

Link to comment
Share on other sites

I don't understand...yes the software is downloadable but you still have to build the robot and make it do things. For FLL, they are given certain missions and get points based on that. Another nice WTMer sent me a link to various ev3 and NXT projects which are indipendent of fll; let me dig that up.

We formed our own FLL team. It helps to have one person familiar with programing, but we don't, and it was fine.

I mean DS built a Mindstorm and yes, it does things, but he just downloaded a program, not program it himself.

Link to comment
Share on other sites

You are talking to technology illiterate, so :) what will this do? Will this teach him how to code one?

RobotC would introduce your kids to C programming from pseudocode (english like) written in logical steps to actually using the C language to create their own programs. It also teach kids how to add in useful comments in their programming code so someone else could understand their coding.

 

Once your kids are familiar with C programming, it is easy to pick up other programming languages like Java, Python or any new programming languages that come up.

 

Also your kids can use C programming for arduino and raspberry PI if they want to.

Link to comment
Share on other sites

RobotC would introduce your kids to C programming from pseudocode (english like) written in logical steps to actually using the C language to create their own programs. It also teach kids how to add in useful comments in their programming code so someone else could understand their coding.

 

Once your kids are familiar with C programming, it is easy to pick up other programming languages like Java, Python or any new programming languages that come up.

 

Also your kids can use C programming for arduino and raspberry PI if they want to.

O.K., so we start here then. :) I won't even ask for raspberry PI is, but it sounds delicious. :)

Link to comment
Share on other sites

He has done scratch, but that doesn't look like programming to me. I looked at "do you need this class" PDF on Python to have an idea on what they do int the class and left my eyes on the paper.  :tongue_smilie: My kids do some animated things with Scratch, but they have outgrown it. I don't see how that could be helpful for real programming course though. Seems so different. But then again, I know nothing about programming.  :001_unsure:

 

I've coded a little. I think Scratch is great preparation for real programming.

Link to comment
Share on other sites

I am under the impression that programming concepts are separate from the syntax of a particular language.

 

Yes, just so.

 

The logic of programming is entirely distinct from the practice of writing code.  The former is abstract and theoretical.  On the other hand, the practice of writing code is concrete.  It is lexically and syntactically bound to whatever language is used; the computer will not understand you otherwise.

 

My kid took a Java 'programming' course (not with AOPS).  I am pretty sure he learned no Java at all, just what to type and where (especially since it did not compile and I had to help him fix it...).  Looking at this syllabus, I'm tempted to ask him if he wants to try this next.  The post test looks a lot like a midterm exam... :thumbup1:

Link to comment
Share on other sites

Is being good at math alone enough?

 

I am surprised not too many people have taken aops programming classes.

 

As a current practitioner, I'm not really convinced a lot of math is really need to be good at programming.  Certainly there are some topics that are needed (Boolean algebra for instance), but on the whole it's really about the thought process.

 

Maybe I'm just jaded - they forced a lot of math on me :D

Link to comment
Share on other sites

 

I am surprised not too many people have taken aops programming classes.

DS is taking classes here: http://www.forthuntparent.com/academy/HTMLMoreInfo.cfm

 

He's taken HTML, CSS, JavaScript, JQuery and is just starting HTML 5. The cost for all is a tiny fraction of the cost for a single AoPS class. I have no idea if they are as in depth, but he loves them and...he's 11. It's his first foray into programming and he's learned SO much. He can pace himself however he wants, and there was no stress when he needed to take a few months off to recharge (which wouldn't have been possible if $350 were on the line).

 

Honestly, that amount of money for a class makes me choke. Especially when there are so many lower cost and still high quality ways to learn available.

 

Just to be clear--I don't know anything about the class you are looking into, just offering up one possible answer to your question.

Link to comment
Share on other sites

Yes, just so.

 

The logic of programming is entirely distinct from the practice of writing code.  The former is abstract and theoretical.  On the other hand, the practice of writing code is concrete.  It is lexically and syntactically bound to whatever language is used; the computer will not understand you otherwise.

 

My kid took a Java 'programming' course (not with AOPS).  I am pretty sure he learned no Java at all, just what to type and where (especially since it did not compile and I had to help him fix it...).  Looking at this syllabus, I'm tempted to ask him if he wants to try this next.  The post test looks a lot like a midterm exam... :thumbup1:

 

Similarly, my DS took a java course and a Python course but I am convinced he knows nothing of those languages (and there is nothing for him to *do* with them anyway). He is able to write simple EV 3 mindstorm programs (which is not even traditional coding, just a series of blocks and rotations from what I can tell).

Link to comment
Share on other sites

 

I am surprised not too many people have taken aops programming classes.

 

After watching that video of the math prize for girls speech, I am also surprised.

 

I know in my case (and this is obviously not the case with others, since I see kids mentioned here playing with their arduinos and their raspberry Pi things)--I can sign him up for a class, but it is hard to envision what he can do with it. With math, you do more math. There's a pretty established path. With foreign languages (insomuch programming is a language) you aim for fluency and ability to communicate. What does one do after mastering Python 1, or after a week of Java camp? especially when their parents don't know enough to assign work or projects or whatever?*

 

* I realize this is only a problem for me with a kid that is happy and content to do whatever is given but not self directed. But from talking to other parents at the FLL tournament, I don't think my raspberry pi is the only one gathering dust.

Link to comment
Share on other sites

After watching that video of the math prize for girls speech, I am also surprised.

 

I know in my case (and this is obviously not the case with others, since I see kids mentioned here playing with their arduinos and their raspberry Pi things)--I can sign him up for a class, but it is hard to envision what he can do with it. With math, you do more math. There's a pretty established path. With foreign languages (insomuch programming is a language) you aim for fluency and ability to communicate. What does one do after mastering Python 1, or after a week of Java camp? especially when their parents don't know enough to assign work or projects or whatever?*

 

* I realize this is only a problem for me with a kid that is happy and content to do whatever is given but not self directed. But from talking to other parents at the FLL tournament, I don't think my raspberry pi is the only one gathering dust.

I have a hard time visualizing it too. My DS loves programming but isn't in the least bit interested in arudino or raspberry pi or anything else he'd have to tinker with (even snap circuits were a huge bust). Our plan right now, after he completes HTML 5, is for him to learn web page building using all the tools he's gained. He's also interested in learning to create games; he's not into scratch at all, but would like to perhaps create an iphone game or app. The farther he advances and more languages he's learning, the better I'm able to see how he'll put it all together into something useful and concrete.
Link to comment
Share on other sites

What does one do after mastering Python 1, or after a week of Java camp? especially when their parents don't know enough to assign work or projects or whatever?*

 

.....But from talking to other parents at the FLL tournament, I don't think my raspberry pi is the only one gathering dust.

Stay a few hours at Barnes & Nobles. My local stores have shelves on programming and electronics. Let your child see the examples of "harder" projects in the books.

 

My opinion is that learning programming languages is about training the mind to conceptualise a problem, break into manageable chunks and to write in logical pseudocode. With well written pseudocode/flowchart another programmer can code it in the language of their choice.

For example I could take the documentation for a python program and re-code it in Java.

 

Sometimes to learn is to spoil some stuff. I crash my intern company's server with my intense programming. The server couldn't handle it and my intern boss was very amused. Let your child experiment with your raspberry PI and your NXT ;) once you buy them it's already a sunk cost.

 

Your child can also read up on systems analysis and design if he is interested about programming.

 

I had a year of Fortran 77 and a year of C compulsory for my civil engin degree. Hubby had a year of C for electrical engin degree. So even non compsci degrees might have programming modules/electives.

Link to comment
Share on other sites

Sorry, I don't mean that. I think some kids just grow into it later. While some are just not interested. I was the kind of kid that reprogram the remote controls for fun.

DS has a good friend like this. We'll pick him up from his school and he'll have an armload of broken electronics from the trash. He just uses parts and pieces and creates the most incredible things. DS is amazed, but would never do anything like that himself.

 

I'm hopeful programming will be a good fit for his conceptual, analytical mind. He's convinced he'll go into engineering, but completely lacks the hands on, what if component. I try to convince myself there's a place for the Big Thinkers, too. :)

Link to comment
Share on other sites

DS has a good friend like this. We'll pick him up from his school and he'll have an armload of broken electronics from the trash. He just uses parts and pieces and creates the most incredible things. DS is amazed, but would never do anything like that himself.

 

I'm hopeful programming will be a good fit for his conceptual, analytical mind. He's convinced he'll go into engineering, but completely lacks the hands on, what if component. I try to convince myself there's a place for the Big Thinkers, too. :)

 

There are all sorts of Engineering jobs.  Only some of them are best suited to the kids that can repurpose broken electronics.  But, there is more than Electrical, Mechanical.  

Link to comment
Share on other sites

DS is taking classes here: http://www.forthuntparent.com/academy/HTMLMoreInfo.cfm

 

He's taken HTML, CSS, JavaScript, JQuery and is just starting HTML 5. The cost for all is a tiny fraction of the cost for a single AoPS class. I have no idea if they are as in depth, but he loves them and...he's 11. It's his first foray into programming and he's learned SO much. He can pace himself however he wants, and there was no stress when he needed to take a few months off to recharge (which wouldn't have been possible if $350 were on the line).

 

Honestly, that amount of money for a class makes me choke. Especially when there are so many lower cost and still high quality ways to learn available.

 

Just to be clear--I don't know anything about the class you are looking into, just offering up one possible answer to your question.

I second this recommendation. Dd11 has been using this at her own pace very happily.

Link to comment
Share on other sites

I have heard one programmer say that kids graduate with programming degrees and don't know how to program. I am not sure what that means, but I am assuming it has to do with quality.

Does Khan provide quality stuff in programming?

My dh would agree with that to some extent. He writes programs to control manufacturing systems. He works with some great programmers and some awful ones. It is really all over the board, like most things. He has found that it comes down to logical thinking and work ethic. He also finds that the ones that are not solid on algebra are not good programmers.

 

My dd11 did the Khan lessons last year. She enjoyed them and they were fine, but didn't cover very much. I haven't looked to see if they have added any new ones.

Link to comment
Share on other sites

I've been lurking on this thread for a while, but could no longer resist the urge to chip in.  My background is very abnormal with this subject, but I was a childhood coder, and the experience led directly to my career.  So, maybe that experience is germane.

 

Coding in itself is not difficult.  Any language can be picked up in a brief period if you have some facility with languages or vocabulary.  Even the logic is not all that imperative (I know, it's blasphemous).  At the beginning, especially to a child, programming is more about the craft than the technique.  Simply copying examples of games and manipulating them is very beneficial.

 

This is how I started out -- coding in Basic and in machine code, not to program, but to craft a game.  My coding style wasn't great, and it didn't matter at all.  I didn't know algebra yet, but I did have some talent for math.  I was only 7 or 8.

 

Scratch, et al are nice starting points, because they are very safe.  C#, Python, Java, and so forth are not really the best languages to learn with, because they are already very rich.  Heck, it's probably better to start with Lisp, because it is so simple in its basic form.  However, most courses these days revolves around those other three, so kids rush to prepare for them, and never get to explore the craft.

 

By the time I had the logical foundations needed to take a course in proper, object-oriented programming, I had already worked with six or seven different languages (it was a long time ago, so don't remember exactly).  I found out which ones were more comfortable for different tasks.  When I finally learned formal techniques, I understood the material implicitly.

 

This is an approach I would recommend.  As mentioned earlier, try out scripting, or HTML, XML, SQL, or scripting.  Mod some games on the PC -- lots of games today have robust modding engines.  Play, and enjoy.  Set aside some time each day during school -- "this is your official computer play time."  Just be sure that time is spent on creative exploration.  Yes, encourage gaming!  The larger the world, the better.

 

When your child is ready for formal education, then a strong background in discrete math will be needed (logic, probability, counting, number theory).  Keep in mind that the vast majority of programmers have little to no exposure to this material until their sophomore year of college, after a full year of computer programming experience.  (Wow, as a mathematician, I am surprised at how easy that was to write!)  In my experience, having watched hundreds of programmers hone their craft, programming will develop logic skills, but starting with good logical skills doesn't lead to good programming techniques.

Link to comment
Share on other sites

I have heard one programmer say that kids graduate with programming degrees and don't know how to program. I am not sure what that means, but I am assuming it has to do with quality.

Does Khan provide quality stuff in programming?

Quality of programmers with CompSci degrees stretched the whole spectrum. I don't know when the term spaghetti code was conned but some coding is so bad, rewriting is easier than debugging.

Khan is good for beginners but doesn't go in depth. It's a nice free get your feet wet solution and safe to let lose your kids on.

Link to comment
Share on other sites

I don't know much about the programming angle, but one of the things I love about Scratch is the on-line community.  All three of my older kids (13, 11 and 11) have become more and more involved in the Scratch community over the past couple of years, each in their own way.  My dd has been a curator (a two-week stint for the website) and while she assures me that it's no big deal at all, IMO it has helped develop something in her.  She leans much more toward artistic projects and is very into art in general and I'm happy that she has learned bits about programming along the way even though that's not her main focus, because I believe programming as a tool will serve her well in the long run should she pursue some coursework.  I love the collaborative tone of the Scratch website and the building of enthusiasm.  Even my ds who would rather play other people's games than take the effort to make his own gets something out of it and has learned enough that he sometimes makes his own projects - that alone makes me happy even though he doesn't put forth as much effort as his twin brother, who is working on a new unique game.

 

 Simply copying examples of games and manipulating them is very beneficial.

 

FWIW, there seems to be quite a lot of this on Scratch.  That's probably the primary method my kids have used for learning new stuff.

 

 

Link to comment
Share on other sites

I'm hopeful programming will be a good fit for his conceptual, analytical mind. He's convinced he'll go into engineering, but completely lacks the hands on, what if component. I try to convince myself there's a place for the Big Thinkers, too. :)

Hubby is not a tinkerer nor a coder :) maybe that's why he specialise in nanotech R&D. The only programming he ever did for his job was Visual Basic. I seldom get to do hands on when I worked as an engineer, the lab techs get the fun. Tinkering is a pastime for me.

 

Engineering encompass a big range. Your son would find his place :)

Link to comment
Share on other sites

Quality of programmers with CompSci degrees stretched the whole spectrum. I don't know when the term spaghetti code was conned but some coding is so bad, rewriting is easier than debugging.

 

We were using "spaghetti code" even back in the 70's.  It's appalling how much meandering, unfocused code there is in the wild.  It has been that way for what seems like forever.

 

MIT's "structure and interpretation of programming" is a real treasure in this regard.  It is no longer taught, but it is still available on OCW, if you hurry.  It's one of the masterpieces of computer science teaching.

 

Link to comment
Share on other sites

We were using "spaghetti code" even back in the 70's.  It's appalling how much meandering, unfocused code there is in the wild.  It has been that way for what seems like forever.

 

MIT's "structure and interpretation of programming" is a real treasure in this regard.  It is no longer taught, but it is still available on OCW, if you hurry.  It's one of the masterpieces of computer science teaching.

 

 

 

My brother, who makes good money as a programmer, considers it a matter of personal honor to have the "cleanest" code possible. Not sure how he came to that philosophy exactly, but the amount of junky bloated code in the world aggravates him greatly. He says one his joys in life is being asked to fix a code, and then deleting massive portions of it. Um, ok...lol.

 

He would agree, yes, that to learn code well one must be willing to just play with it. But eventually you have to learn how to play clean. And eventually you will achieve true beauty in a powerful program running on only a few lines of code. He used to come to me all excited, "I wrote a program that does x, and it's less than 100 lines!" Um...yeah, good job!

 

I asked him what the modern day equivalent of Basic is that he first learned programming with, and he suggested Python, just because it was so basic.

 

As for what to do after you learn a programming language? You learn another one! Of course! lol. 

Link to comment
Share on other sites

I've been watching this thread too, but have been shy about jumping in because I have nothing helpful to add.

 

Anyways!

 

Ds loves the *idea* of programming but dislikes the straight through logic. He does well with the discovery method but doesn't have a very direct (?) way of thinking. The comment about math being like art in my siggy is his, and it's this type of thinking that seems to hinder him in liking Scratch or the process of programming very much. That, and some LDs (dyslexic profile, insidious vision issue) are what seems to hold him back. In any case, he's expressed interest in programming again. Would there be resources or types of programming that are suited to this type of thinking?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

Ă—
Ă—
  • Create New...