13 Replies - 5199 Views - Last Post: 05 December 2012 - 06:13 PM

#1 iKyriaki  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 8
  • Joined: 30-November 12

Looking for advice when self-learning

Posted 01 December 2012 - 09:12 PM

I'm not really sure if this is the right place to put this, and if it's not, I apologize.

I'm currently trying to learn C# and hoping to make a really basic game with XNA in about a month, just to have a small project under my belt. Something I'm having trouble with is figuring out the best way for me to learn the language though. I have access to a lot of resources like videos and the tutorials on this site and other sites, but I end up wasting a lot of time just browsing through them and not really studying them. I ordered Head First C# and I'm currently waiting on that, but outside of that I'm looking at whatever else I can find.

I have at least a basic understanding of a few beginner aspects, and I'm trying to work my way up from that. What can I really do to make sure I understand everything I learn and make sure I'm sticking to one resource instead of jumping through many different ones?

Is This A Good Question/Topic? 2
  • +

Replies To: Looking for advice when self-learning

#2 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 7578
  • View blog
  • Posts: 12,746
  • Joined: 19-March 11

Re: Looking for advice when self-learning

Posted 01 December 2012 - 11:28 PM

You're not going to learn the language just by dinking around with tutorials. You can learn to build web pages that way, but something more complicated is a work of engineering, not just spitting code.

You need to learn the basics, by writing a lot of small programs and understanding them and building up a core of knowledge. You need to think about constructing a complex machine, with lots of moving parts. To do that, you don't start with the welding torch, you start with a design on paper.

I haven't been very impressed by the "head first" books that I've glanced through, but maybe the style suits you. Whatever, work through it. Do every example that they give you and type in all of the sample code and make it run. Try to understand it all, and experiment with the code to test your hypotheses.

When you've finished with that book, you'll be ready to write small programs, but probably not big programs - you'll have to spend some time writing the small programs first. If it's games you want to do, start small. Work your way up from simple console based stuff to more involved stuff. Try to learn some more of the fundamentals - algorithms, math, that sort of thing. They'll help you a lot more than you think they will.
Was This Post Helpful? 4
  • +
  • -

#3 iKyriaki  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 8
  • Joined: 30-November 12

Re: Looking for advice when self-learning

Posted 02 December 2012 - 12:54 AM

When I try to learn the material, I read the text and make sure I can understand the code after reading, then type in the code and make sure it works for myself. Should I just continue doing that? I probably could try to make a few more small programs, since the only ones I've actually "made" are ones from programming guides and one that counted by skipping certain numbers.
Was This Post Helpful? 0
  • +
  • -

#4 baavgai  Icon User is offline

  • Dreaming Coder
  • member icon

Reputation: 5780
  • View blog
  • Posts: 12,596
  • Joined: 16-October 07

Re: Looking for advice when self-learning

Posted 02 December 2012 - 05:50 AM

You can read all the code you want. Understanding it is good, but that won't teach you to program. You can copy that code and run it, but that's also not programming.

Taking the code you've copied and changing it in some way, that will start you down the programming path. Coding you own solution from scratch, now that you've seen how someone else does it, better. Coding you own solution before you see how someone else does it, best.

Ultimately, as jon already suggested, you, only you, must write code. The more code you write, the more you challenge yourself with the type of code you write, the better you'll get. There really is no shortcut to this.

Short answer: wrote lots of code.
Was This Post Helpful? 3
  • +
  • -

#5 tlhIn`toq  Icon User is offline

  • Please show what you have already tried when asking a question.
  • member icon

Reputation: 5441
  • View blog
  • Posts: 11,676
  • Joined: 02-June 10

Re: Looking for advice when self-learning

Posted 02 December 2012 - 08:45 AM

*
POPULAR

Quote

I'm currently trying to learn C# and hoping to make a really basic game with XNA in about a month,


Games are often the most complex programs one can build. They should never be considered beginner work. You simply don't know how much you don't know at this point.




My standard beginner resources post


We have a tutorials section and a learning C# series of articles.

First learn the language by working 2-5 "Learn C# in 30 days" type books cover to cover. Do a couple hundred on-line tutorial projects where you build what you're told to build, the way you are told to build it WITH AN EXPLANATION OF WHY so you can learn.

There are three routes people seem to take when learning programming.
  • Just start trying to create programs
  • Start taking apart other programs and try to figure out the language by reverse engineering
  • Follow a guided learning course (school or self-teaching books)


For the life of me I can't figure out why people try 1 & 2. I strongly suggest taking the guided learning approach. Those book authors go in a certain order for a reason: They know what they're doing and they know the best order to learn the materials.

Quote

Where do I start?


You start by learning a coding language FIRST.
Learn to plan before you type.
THEN you start designing software with a purpose.


If this sounds like you

Newbie/Rookie said:

I have a little programming experience but I need to write ...
read this section
Spoiler


Otherwise, you can just jump to the resources here:
Some of the tutorials below are for C# or Java not C, C++, VB.NET [...]. But the conceptual stuff of classes, object oriented design, events etc. are not language specific and should give you enough guidance in theory of program development for you to be able to look-up specific code example in your chosen coding language.



Resources, references and suggestions for new programmers. - Updated Oct 2012
Spoiler

Was This Post Helpful? 7
  • +
  • -

#6 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 7578
  • View blog
  • Posts: 12,746
  • Joined: 19-March 11

Re: Looking for advice when self-learning

Posted 02 December 2012 - 12:52 PM

View PostiKyriaki, on 02 December 2012 - 02:54 AM, said:

When I try to learn the material, I read the text and make sure I can understand the code after reading, then type in the code and make sure it works for myself. Should I just continue doing that? I probably could try to make a few more small programs, since the only ones I've actually "made" are ones from programming guides and one that counted by skipping certain numbers.


Type in the code, then try playing with it to be sure you understand it. So if you find that something like this (java example, but similar to C#, I think)

for (int i = 0; i < array.length; i ++){
   System.out.printf("i = %d; array[i] = %d\t", i, array[i]); 
}



prints something like

1 2 5 2 4 9 4 (just some made-up numbers)

what sorts of things would you expect to be able to do with this loop and this array? For example, you might wonder if you could print every other member of the array, or print them in reverse order, or print the odd-numbered and then the even-numbered ones - and yes, you can do all of those things, and you should try to figure out how.
This gets you thinking about how arrays and loops work, and hopefully will cause some errors that you'll have to fix, which will also teach you something useful.

In other words, don't just learn what you're given to learn - dig in and try to get more out of it than just what the example is supposed to show you.
Was This Post Helpful? 3
  • +
  • -

#7 iKyriaki  Icon User is offline

  • New D.I.C Head

Reputation: 4
  • View blog
  • Posts: 8
  • Joined: 30-November 12

Re: Looking for advice when self-learning

Posted 02 December 2012 - 10:20 PM

Thank you all for the advice! I think I have a clear understanding of what I need to do now.
Was This Post Helpful? 0
  • +
  • -

#8 Sergio Tapia  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 1252
  • View blog
  • Posts: 4,168
  • Joined: 27-January 10

Re: Looking for advice when self-learning

Posted 03 December 2012 - 07:16 AM

View Postjon.kiparsky, on 02 December 2012 - 02:28 AM, said:

I haven't been very impressed by the "head first" books that I've glanced through, but maybe the style suits you.


That may be because those books are intended for programming newbies. A seasoned developer won't like the pretty pictures and mnemonics. He's just going to want the code and documentation. :)

When I was starting out, 2 months into my university degree, I was clueless on programming and the Head First books really cemented things in for me. They are great for that purpose.

Now, with what I know, I wouldn't buy a "head first clojure" because I just want the code and documentation.

View PosttlhIn`toq, on 02 December 2012 - 11:45 AM, said:

Games are often the most complex programs one can build. They should never be considered beginner work. You simply don't know how much you don't know at this point.


I agree 100%

Game programming is probably the hardest branch of software development. It's hard.

At this point you're not only wrestling with learning C# but also learning about XNA, and also about tons of advanced subjects like race conditions, threading, and the like.

I wish you luck though! You will bleed and cry and curse, but you'll learn something and come out better for it. :)
Was This Post Helpful? 2
  • +
  • -

#9 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1622
  • View blog
  • Posts: 5,709
  • Joined: 03-August 09

Re: Looking for advice when self-learning

Posted 03 December 2012 - 04:05 PM

View PostSergio Tapia, on 03 December 2012 - 02:16 PM, said:

Game programming is probably the hardest branch of software development.


OS and compiler developers say "You're adorable; tell me more about how hard game dev is" :P

but no really; game dev is easily one of the hardest. I'd say it's up their with compiler devolpment when you get into all the 3D stuff and what's expected out of games nowadays.
Was This Post Helpful? 2
  • +
  • -

#10 Sergio Tapia  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 1252
  • View blog
  • Posts: 4,168
  • Joined: 27-January 10

Re: Looking for advice when self-learning

Posted 03 December 2012 - 05:12 PM

I don't refer to those guys as developers, more so as Engineers. Those are the true, cojones to the wall engineer in the software world. We're all kids playing in the sandbox they build.
Was This Post Helpful? 2
  • +
  • -

#11 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1622
  • View blog
  • Posts: 5,709
  • Joined: 03-August 09

Re: Looking for advice when self-learning

Posted 03 December 2012 - 05:57 PM

they're generally called systems software engineers I believe.

This post has been edited by ishkabible: 03 December 2012 - 05:58 PM

Was This Post Helpful? 0
  • +
  • -

#12 Hamdemon  Icon User is offline

  • New D.I.C Head

Reputation: 2
  • View blog
  • Posts: 12
  • Joined: 31-May 12

Re: Looking for advice when self-learning

Posted 03 December 2012 - 10:37 PM

When I learn a language I typically like to start with the syntax and core fundamentals of what the language does, take a notebook and start with that. After you get down the basics, start writing little programs to use the concepts. Then just work your way up, slowly making more complicated programs. Once you feel comfortable with the language I'd work on a project, actually something you think would be fun to make or that you'd find useful. For one language, I wrote a to-do list program that was pretty basic, but then added a GUI and more features as I went. Just remember to read, study, write things down and most importantly practice and try things out. If you're curious or confused about HOW something works, then try it out until you find out.
Was This Post Helpful? 1
  • +
  • -

#13 derrellgore  Icon User is offline

  • D.I.C Head

Reputation: 3
  • View blog
  • Posts: 50
  • Joined: 16-September 12

Re: Looking for advice when self-learning

Posted 05 December 2012 - 03:16 PM

I agree you have to write, write, write and write some more.

I programmed a little back before windows even existed. AT 45 I decided to go back to it.

Best books in the work are by MURACH...whether you do VB or C#....each has three books that are must haves...C#, ADO.NET for C#, and ASP.NET for C#.

I started with VB and after going thru these three books I got a job in about two months and have been programming for three years now making twice what I used to make as a System Admin.
Was This Post Helpful? 0
  • +
  • -

#14 ishkabible  Icon User is offline

  • spelling expret
  • member icon




Reputation: 1622
  • View blog
  • Posts: 5,709
  • Joined: 03-August 09

Re: Looking for advice when self-learning

Posted 05 December 2012 - 06:13 PM

I actually have an algorithm that, for sufficiently good implementations of the sub functions, will teach you how to program guaranteed

while(!brain.full()) {
   Knowledge newKnowHow = read();
   brain.addKnowHow(newKnowHow);
   writeCode(brain); //write code using new know how
}


while technically it runs in linear time, no one has found a finite sequence of text to read or code to write for which this loop ends. it's one of the great unsolved problems in computer science.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1