Teaching and making programming exciting to the novice [closed] - language-agnostic

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I wanted to teach programming to a complete novice ( somebody who has a bachelor's degree in arts but never into programming).
I tried to introduce python but the response was something like, " Okay, it prints 1,2,3,.....or yes, it does fibonacci series but what is a use, I can do it easily, or my calculator does it, how is it useful". I tried to sell the grand idea with saying that, "Hey, you see the MS Office you use, it uses the same concept." but it did not work. Simply speaking, I could not create or show anything to appeal the novice into getting interested in programming. I showed the GUI I created using wxpython but was horrified to see that the code I wrote gave the novice nothing but horror.
Can anybody suggest a programming teaching approach or something related to programming or even some easy code that will make the novice believe that programming is cool, easy and fun to learn?

Well, unless you're a natural born math-head, recurring patterns of numbers aren't cool.
There's a reason why the canonical thing to start children off with is either turtle graphics, or games programming: it's at least vaguely concrete, and it is open-ended.
Other things people like to make are websites. Some kind of widget-based website framework might appeal.

Related

the advantage of reading open source code [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I know there is no clear answer to this question. I still wonder to know whether Reading open source code can improve myself rapidly? how and why?
ps:I keep reading open source code every day for months.
Well, many of the bigger open source projects are collaborations between many people: Thus you do have a chance of finding a project written by good developers, and therefore improve your own coding style. Of course, it all depends if you actually memorise the stuff you read or not - But I guess you wouldn't really read that much code if you didn't.
In my opinion, you can learn the following from well-written projects:
Coding conventions
Solutions to common problems (Of course, this depends heavily on the "type" of the project)
How to document code properly - If multiple people work on something, and the project is well-written, it probably also has a good documentation.
Of course, all of this is opinion-based, so you need to see for yourself.
Possible answers (this is highly subjective)
Because working with someone else's code is more difficult than working with my own code. It forces me to adapt to some else's thinking ("If all I have is a hammer, every problem looks like a nail")
Because open-source code is often not written under a deadline, by people who enjoy what they are working at, and can provide high-quality real-world examples
Because open-source code tends to have less of an agenda to push vendor XYZ's proprietary pet technology
Because the world might become a slighly better place, if people wouldn't code for the CPU as their main audience, but a human reader :)

As a beginner, is looking too "in-depth" a bad idea? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I've recently attempted to start learning the C programming language, this question isn't specific to that one language though, or any language for that matter. I've found that I regret asking for information/best practices as early in the learning process as I have, simply because I'm receiving too much information.
As an example, I asked a question related to arrays in C:
Is defining the length of an array with a macro "excellent practice"?
What I found was, I received the answer I was looking for; but, I also received a slew of other information, that, as a beginner was absolutely over my head. I then regretted asking in the first place because I found myself worrying about things that I probably shouldn't know/care about at this stage in the learning process.
I guess what I'm asking is: do you think worrying about best practices and language caveats when I'm a beginner will be harmful to me, or is it encouraged? I find myself getting lost reading questions under the 'c' tag, of which I was trying to use to improve my knowledge, but now I'm bogged down and not making any real progress because of all the little details in comments/answers etc.
It's certainly not a bad thing, per se, as learning of advanced matters ahead of time can really help you along the road. This isn't even confined to computer science; I, for example, find myself in this position all the time when cooking a new dish or studying relatively advanced mathematics. Of course, if all the little details and super-technical stuff are stressing you out, by all means, take a step back and breathe, try and focus on the task at hand. You can always return to the more advanced topics later!
On the specific question of learning the standard practices and caveats of a given language, I personally recommend it. First of all, doing so can keep you from developing bad habits. Knowing the strengths and weaknesses of a given language are rather important, and can influence you later on. If you have one or two things you really hate about C, you can try another language in the future that addresses those issues. The sooner you acquaint yourself with such matters the sooner you can make a decision.

Language: How to explain someone not to use the word "command"? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
It's been a while I posted a question. Maybe this one belongs to Programmers or Meta, not sure.
Right now, I'm at university in my first year civil engineer. We have some programming courses where we learn Java in order to acquire the basic concepts of programming and train algorithmic thinking. Almost all my fellow students are unfamiliar with programming. I'm experienced and people do ask questions from time to time to me about their programming problems. While explaining their problem or while asking for solutions, they really often use the word "command". I noticed that, in most cases, they are referring to what we call statements. My problem is that the word command really sounds bad and is in my opinion wrong as well, in this context. So, my question is: how do I explain them not to use commands, but rather something like instructions, statements, expressions, declarations, operations? How to explain that you do not program commands?
Sentences I hear frequently:
Which commands do I need?
What does this command do?
Or am I the only one that thinks command is wrong? If so, please explain.
You could ask them to be more specific for sake of professionalism.
A car is not a truck or not a van - and there are also bikes and bicycles and other things you could drive...
I would ask for being more specific EVERY time until they change their behaviour. You can lead them to the specific expression, but they should make the step to say it from their own. Otherwise they don't make an effort, because they count on you to help them.

What is a code-kata and what is it good for? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
in the past few weeks I have heard about a phenomenon called 'code-kata'. When I get it right, it means coding an exercise again and again. What is its point? Does it improve your abillity to design better software? If yes, why does it do so?
This was the first time I've heard of this, so after a quick google, here's my gut reaction:
Code Kata is not repeating an exercise over and over again. Rather it's about constantly expanding your "comfort zone" so you can grow as a developer.
Simply working on projects that you know how to do won't help you. You need to try and tackle projects that you would most likely fail at on your first attempt.
The end goal is that if you continuously try, fail, try again, fail again, etc, sooner or later you will succeed. When you do, you've mastered some new knowledge, and become a better developer.
Enough repetition of this will obviously improve your skill.
(Sorry if it's a bit of a brain dump)
I collected a bunch of references here: http://slott-softwarearchitect.blogspot.com/2009/08/code-kata-resources.html
The most important of these is http://codekata.pragprog.com/
It's not primarily to improve your design skills, rather it is a way to improve your productivity in your chosen IDE.
Repeating a familiar task over and over again allows you to watch out for and take advantage of IDE shortcuts and features that you were previously unaware of to shave seconds from your time. It will also help you find any unnecessary steps you take out of habit so you can cut them out of your routine.
We tried a few of these at my company, our thoughts were to develop a simple game (obviously something with a bit of logic we'd not know how to do). We'd all have a go at doing it, then we'd keep improving it as much as we could until we thought we had the best way to do things, then we'd meet up again maybe a week later and compare our results. It's interesting to see how different people come up with different solutions, and everyone learns from the experience. Maybe not a proper kata, but we always try and bend these things to something we'd find useful :)

Which open source project would you recommend contributing to? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
What open source projects would you recommend as a good place for a starting open source developer? Factors that I think would be important are some obvious ones like well written code and a community that is helpful to newbies. But it might be nice if the code base is such that I can start hacking some small problems without really understanding the details of how everything works.
I'd prefer something that can be developed on Linux using C/C++/Java/Python/Scala.
Trying to pick a project like that will never work because it's not something you're passionate about. What's an open source project that you use daily or enjoy using? Go work with that one.
It really depends on what your interests are as to what project to dive into.
Rationale for a larger project (e.g. Firefox, OpenOffice, etc) is that it has many developers, a well established code base, and many small tasks/bugs to be worked out.
Rationale for a smaller project is that you will become more intimate with the code and application. You will likely get to know other developers on the team and understand the overall concept better. Additionally, your additions to the project may be more noticeable.
sourceforge has a list of projects seeking a new developer. Therer are several for your requested programming languages:
http://sourceforge.net/people/?category_id=1
Apart from developers they have more help requests:
http://sourceforge.net/people/
Pick one you use and like already.