Could this be a better way of learning programming?

  • (2 Pages)
  • +
  • 1
  • 2

17 Replies - 2096 Views - Last Post: 23 August 2012 - 10:32 PM

#1 guodah  Icon User is offline

  • New D.I.C Head

Reputation: 6
  • View blog
  • Posts: 2
  • Joined: 20-July 12

Could this be a better way of learning programming?

Posted 20 July 2012 - 09:24 AM

*
POPULAR

Hi, guys,

I have an idea of engaging entry-level students in programming classes. Before I start working on the project, I hope to get some feedback here. Any comment is greatly appreciated.

Now most of the entry-level students in colleges of high schools learn programming by practicing with problems, like linear-searching an integer array for a given key, bubble-sorting an array with numerical values, etc. These problems can be effective, but may not be engaging enough. The fact is that many CS students left this major after the first one or two programming courses. (That is very sad!) One reason could be that these students did not feel engaged enough in the learning.

My idea is to teach students how to program with hopefully more interesting problems. These problems must not be abstract. Instead, these problems should be related to their daily lives. In details, students are instructed to write programs to access their own data in social networks, such as Facebook, Twitter, Linkedin, or even IMDB. This is possible because these social network sites have opened their data via computer programs. Some practices could be "write a Java program to find how many of your friends on Facebook "liked" "Hunger Game"" or "write a Java program to find which of your friends are a fan of Lakers". What needs to be done is to hide the technical complexity of accessing these social networks from the students since they just start learning programming. Maybe a plug-in in Eclipse is the right form.

That was my idea! Please let me know what you think.

Thanks,

Dahai

Is This A Good Question/Topic? 6
  • +

Replies To: Could this be a better way of learning programming?

#2 JoePatriot  Icon User is offline

  • D.I.C Head

Reputation: -20
  • View blog
  • Posts: 78
  • Joined: 12-July 12

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 09:26 AM

Dude, I think your idea is simply genius. We need more minds that think like yours.
Was This Post Helpful? 0
  • +
  • -

#3 jon.kiparsky  Icon User is offline

  • Pancakes!
  • member icon


Reputation: 7747
  • View blog
  • Posts: 13,106
  • Joined: 19-March 11

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 09:34 AM

Quote

What needs to be done is to hide the technical complexity of accessing these social networks from the students since they just start learning programming


Dead wrong, if you ask me. Computer programming is about managing complexity and learning the ways to handle it, not hiding it or running from it. Any idiot can learn drag-and-drop nonsense and make mudpies (ie, build a "browser") but that's not got anything to do with programming, any more than choosing a skin for your wordpress blog is web design, or splashing paint on a canvas is art. (Sorry, Jackson, but it ain't)
Was This Post Helpful? 4
  • +
  • -

#4 supersloth  Icon User is offline

  • serial frotteur - RUDEST MEMBER ON D.I.C.
  • member icon


Reputation: 4503
  • View blog
  • Posts: 28,411
  • Joined: 21-March 01

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 09:40 AM

i think both are valid approaches. intro classes learning about how data is used/accessed would be good as both a starting point and to teach valuable lessons about the importance of personal information. as students advance the complexities should be disguised less.

not all students advance though, the intro classes would and should still be useful for them nonetheless.
Was This Post Helpful? 0
  • +
  • -

#5 macosxnerd101  Icon User is online

  • Self-Trained Economist
  • member icon




Reputation: 10567
  • View blog
  • Posts: 39,110
  • Joined: 27-December 08

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 09:44 AM

I'm going to move this to Student Campus.

There is a difference in complexity between accessing Facebook and sorting an array. People need to learn how to use arrays. When you muddy the waters with JSON calls and third party APIs, people get confused. Insertion sort teaches how to shift elements in an array, which is an important skill when resizing an array. Plus, it applies later down the road in data structures classes when you analyze it with Linked Lists.

Quote

These problems can be effective, but may not be engaging enough. The fact is that many CS students left this major after the first one or two programming courses.

This happens because students generally get overwhelmed with programming (ie., they don't get it), or don't want to sit and write code. A lot of CS majors move into other fields of engineering, math, or business if they don't want to or can't make it in the CS program. Intro classes in a lot of ways could be stronger, but not by muddying the waters. Intro classes should teach people proper practices and give them a strong foundation for the basics.

Quote

What needs to be done is to hide the technical complexity of accessing these social networks from the students since they just start learning programming.

This is already done with third party APIs. You can only abstract things but so much.
Was This Post Helpful? 2
  • +
  • -

#6 111027  Icon User is offline

  • D.I.C Head

Reputation: 17
  • View blog
  • Posts: 141
  • Joined: 26-December 11

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 10:15 AM

I think the best is something in the middle: give 'em something that's engaging, but do not hide the complexity. If you're teaching them structs or classes, tell 'em to hack up a 'Facebook' profile class, and add in the ability to send messages to friends, for an example. It's an assignment we were given at semester 2 for homework.
Was This Post Helpful? 0
  • +
  • -

#7 guodah  Icon User is offline

  • New D.I.C Head

Reputation: 6
  • View blog
  • Posts: 2
  • Joined: 20-July 12

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 11:19 AM

Thanks for the inputs! Guys!

I do not think that I made it clear by saying "hiding the technical complexity...". What I meant by that was students do not have to know how to connect to the Facebook Graph API, what objects can be accessed in Facebook Graph API, etc. But if they want to find out which of their friends have liked XYZ, they have to iterate their friends' "like" lists. This will help them understand loops.

I agreed with some of you at "not muddying the water". When I learned programming in college from 1995-1999, my professors did not give any thoughts on how engaging the exercises were to us. It did not bother me at all. But during that time, everything related to computers was so cool (beyond engaging) to me, including bubble-sort, binary tree, etc. That was mainly because I had not used computers before entering college and found every bit about computers was great. Unfortunately, this is not the case any more, today's college freshmen grew up with Facebook. Their expectation of CS education should be different than mine. That is why I had this idea.

I admit that the "technical complexity" should be disguised less when students progress. Nevertheless, these students should sooner or later be just engaged by solving problems, whatever they are.

Again, I appreciate all your comments and welcome more.
Was This Post Helpful? 0
  • +
  • -

#8 DarenR  Icon User is offline

  • D.I.C Lover

Reputation: 463
  • View blog
  • Posts: 3,166
  • Joined: 12-January 10

Re: Could this be a better way of learning programming?

Posted 20 July 2012 - 12:05 PM

A few items that I wish would have been taught to me in school are as follows:

linked lists--- hardly touched this at all in school
multiple language integration (meaning that most aps use more than one language but schools never show you how to incorporate them.) Example at my job 1 app uses vb.net, html, javascript, xsl, and xml.

better showing as to how things relate instead of just saying make a program that does this -- here are your methods


etc..
Was This Post Helpful? 0
  • +
  • -

#9 111027  Icon User is offline

  • D.I.C Head

Reputation: 17
  • View blog
  • Posts: 141
  • Joined: 26-December 11

Re: Could this be a better way of learning programming?

Posted 21 July 2012 - 04:19 AM

Where'd you study, man? Linked lists are usually taught in Algorithms and data structures, which is often in the third semester.
Was This Post Helpful? 0
  • +
  • -

#10 Aphex19  Icon User is offline

  • Born again Pastafarian.
  • member icon

Reputation: 615
  • View blog
  • Posts: 1,873
  • Joined: 02-August 09

Re: Could this be a better way of learning programming?

Posted 21 July 2012 - 03:09 PM

If at all possible, try to give the students flexibility. As much as your ideas sound interesting, we all have our own likes and dislikes. I don't know how feasible it is to allow students to have some creative control over their own course work, but I think flexibility is important.
Was This Post Helpful? 0
  • +
  • -

#11 kazisami  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 11
  • Joined: 24-July 12

Re: Could this be a better way of learning programming?

Posted 26 July 2012 - 10:31 AM

View Postguodah, on 20 July 2012 - 11:19 AM, said:

Unfortunately, this is not the case any more, today's college freshmen grew up with Facebook. Their expectation of CS education should be different than mine. That is why I had this idea.


I am doing graduation in CS right now. I grew up using Facebook and many other things on computer, but i still find small and basic things very interesting. The idea of getting engaged is entirely personal in my opinion, if you find the way bubble sorting works engaging, then you will not only solve the class and lab problems, but also try on internet to find similar problems and you will find yourself having fun while solving them.
Was This Post Helpful? 0
  • +
  • -

#12 The Architect 2.0  Icon User is offline

  • D.I.C Regular

Reputation: 37
  • View blog
  • Posts: 351
  • Joined: 22-May 08

Re: Could this be a better way of learning programming?

Posted 12 August 2012 - 01:11 AM

I understand your overall idea, but do you literally want your students to learn the Facebook API?

someone learning how to sort arrays WILL NOT understand how to work the Facebook API within a semester timespan when they're loaded down with other work. They may or may not be able to make a product (i'm leaning very far towards the 'not'), but it will be shit(by intro-student standards).
Was This Post Helpful? 0
  • +
  • -

#13 TwoOfDiamonds  Icon User is offline

  • D.I.C Regular

Reputation: 54
  • View blog
  • Posts: 272
  • Joined: 27-July 12

Re: Could this be a better way of learning programming?

Posted 17 August 2012 - 10:33 AM

Sorry if this idea was already mentioned but why don't you try to open the course with something like "This year you will learn to make an application that will let you manipulate data from facebook, twitter, imdb, etc. " (use big words) .
And you can start the course with the basics of the programming language you are going to teach . So they will be both interested and learn to program the right way .
That's how I would do it if I were a teacher.
Was This Post Helpful? 0
  • +
  • -

#14 Lemur  Icon User is offline

  • Pragmatism over Dogma
  • member icon


Reputation: 1368
  • View blog
  • Posts: 3,450
  • Joined: 28-November 09

Re: Could this be a better way of learning programming?

Posted 18 August 2012 - 07:15 PM

I would still go through the introduction for programming regardless. Without a base to work from, the peaks which you achieve will never be as high, nor as stable as the ones that were thoroughly and meticulously laid in advance.

If such a course results in monkey patching, rigging, hacking, google pasting, or other such techniques, students are not ready for it. The goal is to teach students the proper way, and let them find the answers for themselves while within the realm of solid and tested techniques.

There are values to hacking things together and finding out how it works, but it won't compare to a solid base of knowledge in the long run.

I chose to ignore math in College and most of High School because I thought it was tedious, annoying, and just a plain waste of time. Any algorithms I make now are a result of patched together pieces of things I find on google. Because I chose not to get a solid base, I've handicapped myself and have the pleasure of starting from the beginning even though I'm technically experienced.

Learn it right the first time and you won't have that nightmare.

Now that's not to say don't do some awesome projects, just don't jump the gun and try and make the next facebook as a freshman or sophomore. It doesn't work like that, and it'll burn people when they realize that the best they can do is grab at straws and pray something works.

When a student comes to the idea of their own will and thinking, they feel far more enlightened than having to rely on a search to find it for them.

You might try reading through 'How to Solve it' by Polya. It's fairly enlightening on approaches to teaching math classes, but it's still highly relevant to any technical or engineering field.
Was This Post Helpful? 1
  • +
  • -

#15 screenprintr  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 14-September 11

Re: Could this be a better way of learning programming?

Posted 23 August 2012 - 07:34 PM

I think most people drop out cause they don't understand the basics. I dropped out back when cause the school didn't teach very well. Plus being older I needed to take Intro right before my first class. Instead I took intro, then a few other 101 classes then back to programming.

Also schools should recap or make sure the students have a way to do a quick recap before going on to the next course if they take other courses in between. Especially if you take a semester/quarter off.
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2