6 Replies - 1270 Views - Last Post: 18 December 2011 - 05:45 PM

#1 Nykc   User is offline

  • Gentleman of Leisure
  • member icon

Reputation: 737
  • View blog
  • Posts: 8,648
  • Joined: 14-September 07

Project (Programming in General)

Posted 16 December 2011 - 08:48 AM

Not really sure where the best place for this is, but any help is appreciated. Mods feel free to move if needed.

I am working on a side project and could really use input/advice as it does not pertain to a specific programming language/technology or architecture.

Question: If you were to teach programming to someone who has absolutely no knowledge whatsoever to anything other than opening up their favorite IDE or surfing the web. How would you go about teaching it? More importantly what concepts would you recommend starting off with. (Language is not important, I am more concerned with concepts)

(Eg.. Variables, Arrays, Loops, Sort, Classes)

Say for example we would be learning something simple like Python or Ruby (Not jumping into frameworks like Rails, Django or anything - you first need to learn the concepts, then maybe some programs to accompany those concepts)

Thanks for your help

Is This A Good Question/Topic? 0
  • +

Replies To: Project (Programming in General)

#2 AlbuquerqueApache   User is offline

  • D.I.C Addict

Reputation: 50
  • View blog
  • Posts: 523
  • Joined: 21-February 10

Re: Project (Programming in General)

Posted 16 December 2011 - 08:53 AM

This is the book I learned with from the university


Programming Logic and Design, Comprehensive [Paperback]
Joyce Farrell

http://www.amazon.co...24050756&sr=8-2

I will stress that this book is for an absolute beginner and uses pseudocode to expalin programming control structures.

now pay me my $1000.00 for attending AA's University!

:)

This post has been edited by AlbuquerqueApache: 16 December 2011 - 08:57 AM

Was This Post Helpful? 0
  • +
  • -

#3 lordofduct   User is offline

  • I'm a cheeseburger
  • member icon


Reputation: 2668
  • View blog
  • Posts: 4,786
  • Joined: 24-September 10

Re: Project (Programming in General)

Posted 16 December 2011 - 09:01 AM

I just did a basic 'foundation' lesson last night.

I started with simple math. Explained different numeric base systems like binary/decimal/hex. Just a basic explanation assuming they've taken math courses. Also a refresher of algebra with functions and variables.

Then moved into describing the basics about a processor and how it works, in very laymen terms. Mostly emphasizing that everything is basically just a series of numeric representations of values and operations.

From there I described how assembly languages are mostly just a translation of these numeric representations converted into more human readable text.

And that higher compiled languages organize common designs in assembly (like loops, routines, conditionals, etc) into even more user friendly syntax that are then compiled back to the machine code above.

I went through very laymen history up to our interpreted languages... namely C# because that's what she's learning right now.

Getting up there I went through C and C++ exlaining what basic types are, like int/char/boolean, and how they really are all just numbers just like back up there in machine code. And then what an Array was, how in memory it's just a series of values with a size defined so it knows how much space in memory is used for it. And then that a string is basically just an array of char values.

Then moved onto structures. And how it's just a blob of memory that follows a defined shape representing a series of different values (where as an array tends to be the same type).

Then moved onto describing how memory is basically layed out with the stack, program, and heap. And how the heap enables us to store large values/objects more dynamically, and then to find it we use a pointer (C++). And the pointer is again just like a basic prim type that tells the program where in the heap a complex object is located, and how we can actually store them in arrays and structures the same way because really it's just a number like everything else. While also emphasizing how a lot of this is taken care of for you in something like C#.

Then covered some basics about paradigms and what they mean. How it's just an approach to solving a problem. Got into functional, corrolated it back to the math lesson with variables and functions.

Explained then functions in C, and how a class can have these functions so that it not just defines the shape of it, but how it acts.

I then told them to read the 3 books I had suggested last week (C# reference book, Concrete Mathematics [Knuth], and GoF Design Patterns), a few links to references (here, msdn, etc). And said that they probably won't understand everything the text says, but read them to the best of their ability, and come back in a few weeks with some basic code written based on the examples and tutorials in those resources, and we'll move on to object-oriented concepts and maybe design patterns.

This post has been edited by lordofduct: 16 December 2011 - 09:07 AM

Was This Post Helpful? 1
  • +
  • -

#4 tlhIn`toq   User is offline

  • Xamarin Cert. Dev.
  • member icon

Reputation: 6535
  • View blog
  • Posts: 14,450
  • Joined: 02-June 10

Re: Project (Programming in General)

Posted 16 December 2011 - 09:04 AM

Here's the advice I give often. It is the same advice I gave to my boss when he finally decided to move from assembly to Windows programming in C#. It was a fight all the way because he just won't listen to the idea that he needed to start with "Hello World" and move up from there. He found it insulting. But he eventually realized that he had no OOP conceptual experience. No modern design experience and so on. He was used to reaching into the keyboard buffer to get keypresses and so on. He eventually accepted that those self-teaching books are written in a certain order for a reason.

Quote

I have a little programming experience but I need to write ...


You need to start there. I can't say "I have little experience in speaking Russian, but I have been assigned to write a mystery novel in Russian. Can you help me?"

We can help you by saying "First learn basic programming and the language of C#. Then take on assignments." Could someone here write this program for you? Sure. Could someone here map out all the processes you need to follow and do the Software Design part of this in the slim hope you could code it from there? Sure. But we don't volunteer to do the job that you're either getting paid for, or getting a grade for. You may want to read this.

For now, just work on the lessons. Do a self-teaching book from cover to cover. Then consider writing a program.

Don't try to create a useful working program to fit a need of yours (or a for-pay contract) as your introduction to coding project. When you are learning to code you don't know enough to code a program, let alone know how to engineer the architecture of a program. It would be like saying "I don't know how to read sheet music, or play an instrument. I think I'll write a 3 act opera as my first learning experience."

I don't say this to be mean. We've seen lots of new coders take this approach and we know it doesn't work. Trying to design your own programs before you understand the basics of the code language you've chosen just leads to problems, frustrations, and 'swiss-cheese' education (lots of holes).


Resources, references and suggestions for new programmers. - Updated Nov 2011
Spoiler

Was This Post Helpful? 1
  • +
  • -

#5 Nykc   User is offline

  • Gentleman of Leisure
  • member icon

Reputation: 737
  • View blog
  • Posts: 8,648
  • Joined: 14-September 07

Re: Project (Programming in General)

Posted 16 December 2011 - 09:31 AM

Thanks I really appreciate the answers and just to clarify - my project is not really about how to program but more less a project encompassing learning to be a programmer starting with the basics and working your way up to more theoretical problems.

Goal setting - so learning your first language of course you will start with basics like syntax, variables, simple input/output and eventually loops and arrays and sorting and then working your way up to more complex things.

I am not using this as a means of what I need to do to learn programming, but what would be the best way to teach someone how to proceed in becoming a stronger developer.

Personally - I am a professional web developer with a strong background in HTML/CSS and a working knowledge of Javascript/JQuery, PHP/MySQL and a little exposure to Perl, Ruby and Python.

I know the basic syntax, I know some mid to advanced concepts - but I am creating something to help become a stronger developer/programmer but assuming there will be beginners with little to no experience up to more experienced people who need further direction.

This post has been edited by Nykc: 16 December 2011 - 09:38 AM

Was This Post Helpful? 0
  • +
  • -

#6 macosxnerd101   User is online

  • Games, Graphs, and Auctions
  • member icon




Reputation: 12324
  • View blog
  • Posts: 45,424
  • Joined: 27-December 08

Re: Project (Programming in General)

Posted 17 December 2011 - 06:30 PM

There are generally two routes to go for the advanced concepts- theory and application. Theory is generally more CS and math heavy, and application generally involves learning a language more thoroughly. Design patterns are another good, language agnostic topic to hit.

Also, perhaps my thread Getting Better at Programming Java might help some.
Was This Post Helpful? 1
  • +
  • -

#7 Nykc   User is offline

  • Gentleman of Leisure
  • member icon

Reputation: 737
  • View blog
  • Posts: 8,648
  • Joined: 14-September 07

Re: Project (Programming in General)

Posted 18 December 2011 - 05:45 PM

Actually Mac your thread helped out a tremendous amount, and that is exactly the type of information I was looking for.

I guess I am trying to compile a list of what concepts are most important when ordered.

Variables and Constants are always a good starting point and then off to Operators and Flow control. Maybe functions, arrays and classes next.

Between that thread and Martyr's project thread I have a great starting point for prioritizing.

This post has been edited by Nykc: 18 December 2011 - 05:49 PM

Was This Post Helpful? 0
  • +
  • -

Page 1 of 1