Jump to content

  • Log In with Google      Sign In   
  • Create Account


- - - - -

Unsure I can fully carry on with this workshop


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
43 replies to this topic

#1 simesf   Members   -  Reputation: 122

Like
0Likes
Like

Posted 16 July 2007 - 12:03 AM

I'm not writing this to be offensive, aggressive or hostile but I'm wondering if I'm better off going back to my existing resources to learn C#. The reason I feel this way is that the principal text, the 'C# language specification 1.2' is a reference and not a learning text, which needs a more natural writing style even more than the Mona Lisa needs to sit on a whoopee cushion in order to lighten up. For example towards the bottom of p53 we have this gem: 'Within all source files of a program, namespace-member-declarations within namespace-declarations that have the same fully qualified namespace name are members of a single combined declaration space.' Ooooh I've reread that one a few times; believe me. By the end of the sentence I've forgotten what the first part was. I can count 4 technical phrases there that I, as a beginner have to juggle in my mind to get the meaning. 2 of the phrases are in italics, presumably to make them the significant part of the sentence. But that only serves to further overload the one or two containers in my mind which hold new concepts waiting to be internalised. Now I've focused on one small part of the text to make my point and other parts are clear. But as a beginner I don't know if that bit is a significant bit I'm not getting. I would question any well meaning advice that told me to stick with it; it will become clear. This is where I come to make things clear in the first place. That is what (I presume) any learning text would aim to do. But as I said I think the text we are using is a not a learning text but instead a reference text. It's more suitable to people comfortable with the concepts of programming or even someone who already knows C# than a rookie like me. Just in case anyone would aim the argument at me that maybe I'm just not up to the challenge I would, somewhat defensively I admit, say that I have a degree level education, a higher than average IQ (and old & ugly enough to admit that IQ tests and college degrees don't prove that much), I can follow other learning texts on C# much more easily, and I've programmed a level of a shoot em up using a simpler language. I feel that, with dedication, I'm up to the C# challenge. But while there may be other learners who find the principal text ok to work with, there may be others like me who don't. I am not having a go at the organisers of this course. I think it's a wonderful idea and I have the greatest respect for all contributors. Indeed I found the previous course on c++ to be the single greatest learning tool for that language. To be able to write about a confusing point and get multiple feedback from learned and generous people is in some ways as good as having multiple mentors sitting next to you - what could be better? But that course relied on the 21 days book by Jesse liberty which was designed as a learning text. Was it in the public domain at the time? I don't remember. Maybe a limiting feature is that there are fewer resources for C# which are widely available. I am hesitant to type out and post these frustrations since I do not wish to offend anyone or start a 'lively and frank conjecture of opinions' which may generate more heat than light. I think I will try to follow this course since I feel it really comes into it's own when learners post questions and get good answers which I read attentively. But it would be a shame to feel that I am not as attentive to the source material from which the questions arise simply because it confuses me.

Sponsor:

#2 April   Members   -  Reputation: 343

Like
0Likes
Like

Posted 16 July 2007 - 12:25 AM

I share your frustration with the technical terms and the difficulty of reading the specification. And yes, I believe it was one of the few available free resources that were discovered for this workshop.

On the other side of the coin...of the other languages I've learned, most were from text books so were somewhat easier to digest, were taken in smaller bites and had much more acutal use earlier on than this workshop. However, later on when I programmed professionally with the same languages, I often found the need to go to the technical specifications in order to solve an elusive problem. At first this was very difficult to do, mainly because I hadn't been exposed to the technical documentation books early in my learning experience, so I didn't know what was available and where. Also, this lack of early exposure was a disadvantage because I had not necessarily been exposed to the "technical jargon" that was used to describe concepts in the technical manuals.

So, although I feel your pain, I think eventually it will result in an overall better learning experience since we will have learned not only where to find the documentation we need later, but also, have a good handle on the jargon we can use to discuss, and read about the finer details.

Remember we only can retain at most 70% of what we learn on a pass. I'm keeping the questions and answers where I can see and review them often in order to try and solidify the verbage in my mind, just like I would do for a college class.

Do I think this is difficult, heck yes. Do I think you can do it, of course.

Don't stress over every concept, remember we haven't even coded anything yet. It will take years to get ALL this information in your head. In a company you don't expect a beginner programmer to be really good at a language for about 2 years, and that is after they have been programming for 6 months or better in the college environment. You give them simple programs to write, let them make mistakes and reinforce what they have learned with the next project until it comes fairly easily to them. At that point you can load them up higher complexity projects. We are in the same boat.

The first coding project will highlight the gaps in what we have learned. At that point I will go back and read over the sections I need to read, helping to solidify them in my mind. I don't know about you, but a lot of the technical doc won't make sense to me until I see it in my own code or use it to express my own logic. That's when it really starts to sink in for me. It will also help me to be able to see how other people use the same language to create their own versions of the same programs.



[Edited by - April on July 16, 2007 6:25:13 AM]

#3 TheTroll   Members   -  Reputation: 882

Like
0Likes
Like

Posted 16 July 2007 - 12:43 AM

That is the reason that there are tutors, so if you come across some techno-babble in the reading then you can ask us and we will try to explain it in "English".

Yes some of the wording they use is a little over the top but from what I have seen as technical documents go this is a great read.

So just feel free to ask questions, that is why it is a workshop. If you notice I try to answer any questions as quickly as I can so that people can keep going on with their learning. Yeah some times that is a bit of a pain to keep on top of it, but it is the only way to help keep people from going crazy over some of the wording used in the specification.

As for using a language specification for learning, yeah it is tough, but it is FREE. That is a pretty important part. Also I have learned that no matter what book you get, you get the author's take on what is important. They always seem to leave out stuff that I think it would have been really nice to know. Following the language spec means that you will get it all, even if it is a bit hard to read at times.

As for this; 'Within all source files of a program, namespace-member-declarations within namespace-declarations that have the same fully qualified namespace name are members of a single combined declaration space.'

What it is saying is that in a project in which you have one namespace, even if it is spread across multiple files that they are all in the same group.

Let me show you what I mean.


file A.cs
_____________________________________________________________
namespace MyProject
public class A
(
public int DoSomething()
{
B b = new B();
int temp = B.DoSoemthingElse();
}
)

file B.cs
_____________________________________________________________
namespace MyProject
public class B
{
public int DoSomethingElse()
{
A a = new A();
int temp = A.DoSomething();
}
}






In the example above you can see that we have two classes in different files, but in the same namespace. You can call the other class without having to qualify the namespace because they exist in the same namespace. Now where this become really useful is when you are creating a large project and have multiple .dlls all in the same namespace. You can call classes in the other other .dlls (you have to include the .dll reference in the project) without having to do anything but just call the class, no namespace reference is needed.

Hope that clears that up.

theTroll

[Edited by - TheTroll on July 16, 2007 6:43:25 AM]

#4 DarkTimes   Members   -  Reputation: 122

Like
0Likes
Like

Posted 16 July 2007 - 12:54 AM

As with all technical documents it is a little dry, as TheTroll says you can ask the 'experts' on the forum to clear up any confusion and techno-speak for you.

However I would recommend supplanting your learning here with outside resources, such as other learning aids. There is a general C# tutorial in the Workshop opening post, plus a great many others accessable through almighty Google.

In addition when learning C# I found I got tired of reading occasionally, so in those cases I found Microsoft's Absolute Beginners video series and their Soup to Nuts web casts invaluable.

http://msdn.microsoft.com/vstudio/express/beginner/windows/tier1/
http://msdn2.microsoft.com/en-gb/vcsharp/aa727132.aspx

#5 simesf   Members   -  Reputation: 122

Like
0Likes
Like

Posted 16 July 2007 - 03:01 AM

Having read many forums from many websites I started the original post picking my words very carefully because it's so easy on the web to offend when you don't mean to, or get curt & patronising replies when you don't feel you deserve it.

I think it's a reflection on this forum that I should get such encouraging and helpful responses so fast. Thankyou for the replies; I'm sorry I wasn't able to offer up anything more constructive than a bleat, although I thought the Mona Lisa whoopee cushion comparison wasn't too bad. Now, where's that damn 1.2 specification...

#6 Josh Petrie   Moderators   -  Reputation: 3111

Like
0Likes
Like

Posted 16 July 2007 - 03:40 AM

I've found the best way to make the C# specification seem crystal clear is to find a copy of the C++ specification and read that for a while.

Seriously.

#7 rollo   Members   -  Reputation: 366

Like
0Likes
Like

Posted 16 July 2007 - 05:05 AM

Quote:
Original post by jpetrie
I've found the best way to make the C# specification seem crystal clear is to find a copy of the C++ specification and read that for a while.


QFT!


#8 Ezbez   Crossbones+   -  Reputation: 1164

Like
0Likes
Like

Posted 16 July 2007 - 05:32 AM

Just a quick thought, most (all?) of the words in italics in the reference are things that they've defined with those long, tedious things like so:

foo-bar:
this
that

So if you see that, just try to think of what it is conceptually, rather than the specific way that they've defined foo-bar to be a set of non-parenthesis characters followed by a '.' and then a bar, or w/e. Just remember that a foo-bar is the thing that defines a Bar.

#9 JimDaniel   Members   -  Reputation: 136

Like
0Likes
Like

Posted 16 July 2007 - 05:47 AM

Quote:
Original post by jpetrie
I've found the best way to make the C# specification seem crystal clear is to find a copy of the C++ specification and read that for a while.

Seriously.


Why exactly? Just curious...



#10 Josh Petrie   Moderators   -  Reputation: 3111

Like
0Likes
Like

Posted 16 July 2007 - 05:51 AM

Just because the C++ specification is signifigantly more formal in its language and organization than the C# specification. So after you spend time digging through that mess trying to figure out what the correct way for a compiler to be handling some edge case, the C# specification looks refreshingly simply in comparison.

(Of course, reading the C++ specification purely to disambiguate the C# specification for the goal of learning C# is not exactly the greatest of ideas; kind of inefficient.)

#11 Spoonbender   Members   -  Reputation: 1254

Like
0Likes
Like

Posted 16 July 2007 - 07:38 AM

Quote:
Original post by jpetrie
Just because the C++ specification is signifigantly more formal in its language and organization than the C# specification. So after you spend time digging through that mess trying to figure out what the correct way for a compiler to be handling some edge case, the C# specification looks refreshingly simply in comparison.


But that doesn't help a beginner, who, it is probably fair to assume, has not read the C++ specification. [wink]

I think this is a valid point. The first and foremost criterion for a text used to teach programming must be that the people being taught are able to read and understand it. If they have a problem with that, well, it is a problem [grin]

I think it's an interesting idea to use the language specs as a textbook, but perhaps it should be supplemented by another, more down-to-earth text(book)?

I guess one problem might be that no matter how well written the language specs are, they're written for a very different purpose. They're supposed to be a reference for people who are already programmers. It's not necessarily supposed to make sense when you read it from start to end, and it makes assumptions that you or I may not notice (because we're used to programming and used to this family of languages), but which are major roadblocks for the students.

Anyway, just my thoughts. Keep in mind that so far, I haven't been involved with the workshop at all, so take this with a grain of salt, since I might not know what I'm talking about [lol]

#12 ByteJuggler   Members   -  Reputation: 122

Like
0Likes
Like

Posted 16 July 2007 - 08:15 AM

Without wanting to send you to more material that confuse, may I suggest you have a scan through the relevant section of this freely availalbe online book ".Net book Zero", available here: http://www.charlespetzold.com/dotnet/

Aside: It says it's intended for C & C++ programmers, but really, the writing is relatively easygoing, so I think it should even suit many virtual beginners, so have a look and post back. Hopefully it will help as a suplementary text.

#13 RobotAlligator   Members   -  Reputation: 122

Like
0Likes
Like

Posted 16 July 2007 - 03:53 PM

Simesf, I have to agree with you on this. I found that if I spend the time to decypher every sentence it isn't so bad(in terms of understanding it), but I find myself reading half the page over again, looking up words that I cant remember, reading a sentence 4 times and just drooling, and that is usually when I stop reading. Yes I can understand it, but I have to agree with you it isn't written in a learning style.

My only rant? It's time consuming, and when I get fed up and skip a sentence saying I don't need to know this that well, and it gets referred to 5 lines later I usually just stop reading. And by time consuming I mean...sometimes 30 minutes a page. If I don't look up what I just read, I find it feels like I'm reading a big line of 1's and 0's trying to make sense out of it.

#14 JWalsh   Moderators   -  Reputation: 463

Like
0Likes
Like

Posted 16 July 2007 - 05:50 PM

Hello All,

Sorry for my absence. I have been out of town since Friday morning due to a wedding.

Let me address your concerns first. As I pointed out in one of my previous posts, the complete beginners who are feeling overwhelmed by the reading material are in a difficult situation as a result of my bad assumptions - based on the feedback I got from the C++ Workshop. The reading material is overly technical for those people who do not have previous programming experience. Can this be resolved? Yes.

As I indicated in one of my previous posts, myself, and other tutors will be providing overviews of each chapter, in overly verbose, human readable terms which will help make it possible for you to better understand the reading. There have also been a number of posts by different people who have provided additional beginner resources that you may reference to help clarify the information within the specification.

Finally, I am providing review questions and exercises which are there to help you test your understanding of the material. No one is expected to retain or master all of the information about a language over night, nor from a specification. All that is important is that you understand the material well enough to answer the review questions and the exercises I will be providing.

Now, with all of the above said, myself and the other tutors can only do so much for you. At some point, it'll be up to you to do both the reading, the review questions, as well as to provide your own questions here when you feel lost.

You see, this workshop's greatest resource isn't the text we use, nor the review questions I write, nor even the exercises or projects I will be providing. This workshop's greatest resource are the roughly 400 other students who are reading the same text as you, answering the same review questions, and doing the same exercises.

Any time there is something you do not understand the answers to your questions are just a forum post away. All you need to do is raise your questions here, express your confusion, and request clarification....

Currently, there are a large number of beginner students who have failed to ask questions, instead choosing to believe that because the text is overly technical, that it isn't possible for them to learn or understand. As I stated in the workshop's introduction, this workshop is not for the passive. It's for dedicated students who have a passion for learning, and want to learn C# in a hurry - so they can move on to more exciting things, like game programming in C#.

So if you're truly interested in learning C#, take advantage of the 400 other people participating in the workshop by posting your questions on C#. You'd be amazed at how well others can bring to light those things which are currently in the dark. I don't want people who are feeling confused to sit idly by while the workshop comes and goes. We can only help you if you ask the questions which you need to ask.

Cheers!
Jeromy Walsh
Sr. Tools & Engine Programmer | Software Engineer
Microsoft Windows Phone Team
Chronicles of Elyria (An In-development MMORPG)
GameDevelopedia.com - Blog & Tutorials
GDNet Mentoring: XNA Workshop | C# Workshop | C++ Workshop
"The question is not how far, the question is do you possess the constitution, the depth of faith, to go as far as is needed?" - Il Duche, Boondock Saints

#15 James Sear   Members   -  Reputation: 122

Like
0Likes
Like

Posted 16 July 2007 - 10:17 PM

Hello, JWalsh

I signed up planning on ploughing through it and, where I didn't understand matters after much though, asking lots of questions! I think this is a great way to learn these things. Life has, however, stuck a small spanner in this particular workshop for me... the love of my life has abruptly reinstated our previously delayed wedding date!

We didn't have a way to save the money we needed for her plans in time, so we delayed it for a year. With less than 3 weeks to go until our original date, though, she has drastically scaled back the plans and arranged a smaller ceremony with far fewer guests! There is still an awful lot to be sorted out, though, so I guess I shall have to sit this particular course out :)

By all means remove me from your class lists, but I assume it will still be sitting here as reference material in x months time? I could read back and learn then?

regards,
James Sear

#16 Daerax   Members   -  Reputation: 1207

Like
0Likes
Like

Posted 17 July 2007 - 01:11 AM

I think having the specification as the first introduction to the language is a not a good idea. I have some interest in learning theory. People learn by correcting misconceptions. The best introductory texts are those that give a general overview of the main topics while setting things up so that people can fill the missing information with as little fallacies as is possible. And in a manner such that when the learner goes on to more depth the misconception are not too out of line of with the material. A specification will not fill this role, it does not leave enough room for learning and is far too dense, compressing too much information into too little text. It will not be difficult for any beginner's C# text to surpass the C# specification as introductory material; even if this text is less thorough, less concise and leaves more room for error. Forming and correcting misconceptions is an important part of learning.

People cannot at first phrase questions in a manner that fully captures their confusion so any answer must as a result not be sufficient in erasing confusion. So multiple questions must be asked to be sufficient. As well, one will not always know which questions to ask making the process of asking a question for some an unattractive prospect.

Compounding on this is the fact this system requires vigilant tutors who will always be willing to devote time to answer questions and write supplemental material. And that they will not tire of answering the same questions that they may repeatedly encounter. As the project goes on this will become more of a chore as the novelty wears off.

--

My unrequested suggestions are as follows. You may ignore them as this is not really any of my business.

Each chapter should have freely available suggested reading which provides an overview of the topic at hand. The list should not be too large and each item in the list should be able to stand on its own as supplemental material. Too much information can be bad, for a beginner and expert both. The specification can then be read with less detail leading to less frustration.

Eventually people will start dropping out, sooner than later if the barrier of entry and cost of retention is too steep. The creation of a lively community is thus vital. So this piece of advice applies to students. Form groups, post frequently, create your own competitions and even give each other titles.

Finally, every student should be distributed amongst the tutors. The tutors can then focus on answering within their group, create group tailored reading materials and guide projects. And finally the tutors could set and manage the competitions, have the competitions be between groups and maybe form competing factions. The more tutors the better. Advanced students in each group and each chapter can alleviate tutor burden.

--

Perhaps these suggestions are unfeasible, unrealistic and even uninformed but they are well intentioned. At the end of the day it is your project and you shall do with it as you will.

[Edited by - Daerax on July 17, 2007 7:11:19 AM]

#17 simesf   Members   -  Reputation: 122

Like
0Likes
Like

Posted 17 July 2007 - 03:09 AM

Not sure whether this should be in a new thread but here goes:

On page 57 we have these lines of text:

'The accessibility domain of a nested member M declared in a type T within a program P is defined as follows (noting that M itself may possibly be a type):
· If the declared accessibility of M is public, the accessibility domain of M is the accessibility domain of T.
· If the declared accessibility of M is protected internal, let D be the union of the program text of P and the program text of any type derived from T, which is declared outside P. The accessibility domain of M is the intersection of the accessibility domain of T with D.
· If the declared accessibility of M is protected, let D be the union of the program text of T and the program text of any type derived from T. The accessibility domain of M is the intersection of the accessibility domain of T with D.
· If the declared accessibility of M is internal, the accessibility domain of M is the intersection of the accessibility domain of T with the program text of P.
· If the declared accessibility of M is private, the accessibility domain of M is the program text of T'

I can't make head nor tail of that. I've picked out the most obscure bit of that section but I'm really struggling with the rest.

I used to teach English to adults. I used many course books and I sometimes used rather exacting grammar books for advanced learners to ram home a grammar point. But I never used an exacting grammar book as a primary source book for beginners. I could have told them that if they stick with it, the grammar they have learned will put them in very good stead. But then I would expect my attendance to drop to 0 sooner or later because even the most rule loving language learner doesn't work that way. Right now I feel like I'm trying to learn 50 pages per week, sometimes syllable by syllable since the meaning of the sentence is so unclear, that without already knowing what it is I'm trying to learn I stand no chance.

Maybe a few lines of code would greatly simplify the above quote but examples of code are very thin on the ground in this text. And even if I didn't feel so guilty about pestering good people to decipher just about half of all the text from the specification, it then begs the question 'If half the text is being rewritten for learners, why bother with such a discouraging text in the first place?' But the problem there is that if this is the primary and central text, can I as an ignorant learner afford to ignore it and concentrate soley on the forum posts and supplemental materials from tutors? I do not have the knowledge to make that call so I feel stuck with wallowing in mud in order to try and get to the lake so I can do what I want to do, which is learn to swim.

#18 JWalsh   Moderators   -  Reputation: 463

Like
0Likes
Like

Posted 17 July 2007 - 03:12 AM

Daerax,

Thank you for your informed and thoughtful response. We are aware now of the mistake of using the spec, and people have posted links to freely available guides to aid in the learning process as a first-step process.

And you are correct, it's imperative that new programmers actually take advantage of the workshop by posting their questions.

And finally, the groups and individual tutors is a great idea, as is the competitions, it just a matter of time, resources, and responsibility. While it's one thing for the "tutors" to volunteer to do what they normally do, that is answer questions on a forum, its another to ask them to monitor the progress of specific members of the workshop. Though I like the suggestion.

At the end of the day, it's not a matter of what I want to do, it's a matter of what I can do. I'm but one person, willing to accept any help people are interested in providing in writing chapter overviews, review questions, exercises, or even project proposals. As it is, I've got the workshop, my wife and son, my work, and now a possible book deal. So as crappy as the reference material is, I don't have time to do much about it other than solicit aid from others.

Each workshop we run is a learning process, as we can never identify the audience we're going to have or the level of interest before the workshop materials are put together.

I hope when all is said and done this workshop does not come off as a failure, and we instead manage to reach a few dozen individuals who really take off in their C# programming.

Cheers!
Jeromy Walsh
Sr. Tools & Engine Programmer | Software Engineer
Microsoft Windows Phone Team
Chronicles of Elyria (An In-development MMORPG)
GameDevelopedia.com - Blog & Tutorials
GDNet Mentoring: XNA Workshop | C# Workshop | C++ Workshop
"The question is not how far, the question is do you possess the constitution, the depth of faith, to go as far as is needed?" - Il Duche, Boondock Saints

#19 JWalsh   Moderators   -  Reputation: 463

Like
0Likes
Like

Posted 17 July 2007 - 03:13 AM

Sounds like people want to end the workshop?
Jeromy Walsh
Sr. Tools & Engine Programmer | Software Engineer
Microsoft Windows Phone Team
Chronicles of Elyria (An In-development MMORPG)
GameDevelopedia.com - Blog & Tutorials
GDNet Mentoring: XNA Workshop | C# Workshop | C++ Workshop
"The question is not how far, the question is do you possess the constitution, the depth of faith, to go as far as is needed?" - Il Duche, Boondock Saints

#20 Josh Petrie   Moderators   -  Reputation: 3111

Like
0Likes
Like

Posted 17 July 2007 - 03:40 AM

I don't know, I don't think it's a failure yet -- if there are resources out there better-suited to learning the language than the spec, is it not possible to adapt the original workshop schedule to those resources?




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS