|
|
Wiki Discussion
Last post 07-02-2005, 1:57 by Kezsc. 41 replies.
-
07-02-2005, 1:57 |
|
|
To start, here's Louren's rough topic list (expanded with some stuff from the old discussion on it), it's not neccessarily where things will end up, but it's somewhere to start a new discussion ![Happy [:)]](/Emoticons/happy.gif) . To go with this, we should come up with a structure/outline for the wiki. So, content, structure and presentation:
Topics
Basics:
- a programming language
- how to program
- how to design programs
- how to manage a project for a bit (version control maybe, working together, organising your work)
General stuff:
- Algorithms and datastructures
- Threading and synchronisation
- Files and I/O
- Networking principles?
- Scripting?
- Performance/timing analysis?
Maths:
- Linear algebra
- Some logic
- Numerical computing (representation issues, etc.)
- Modeling/Simulations
- Other math (as relevant)
Games-specific stuff:
- AI
- Graphics (2D?/3D)
- Audio
- Networking in games
Tools?
- 3rd party libraries
- Image manipulation, Animation, etc.
Structure & Outline
Overall:
- ToC
- Intro
- ?
- ?
- ?
- Contests?
- Index
- Appendices
Intro:
- Nature of design
- Nature of programming
- Nature of games
- etc.
Specific Topic:
- Intro
- Demos (executables, not source)
- Discussion of topic.
- Platform/environment/tools specific stuff
- Questions/problems/exercises + solutions & discussion?
- Links to existing (more in-depth) articles?
Presentation
Um... We wanna pwetty wiki! ![Big Smile [:D]](/Emoticons/grin.gif) . I guess there's not much to say about this here ![Silly [:p]](/Emoticons/silly.gif) .
Also, do we want most bits of code to be able to fit together nicely? So they write a simulator in the simulation section and they can expect that it won't be incompatible with the 3d renderer they wrote in the 3d section.
|
|
-
07-02-2005, 11:01 |
-
07-02-2005, 11:35 |
-
07-02-2005, 14:26 |
|
|
It would be amazing if you make thing like this.
It would be very interesting to read ![Happy [:)]](/Emoticons/happy.gif)
But i am afraid im not much help when it comes to making it..
|
|
-
07-04-2005, 8:44 |
|
|
Okay, here are some thoughts about the presentation and structure. I think we have a pretty good overview of what we want to teach people in the list above. The question is how to present it, and in what order.
One of the things that was posted here recently was something along the lines of "Okay, I'm doing all this stuff with variables and expressions, but how does that relate to making a game? I want to make a game!" I think that that is an important thing to consider. Going through a tutorial that teaches you about the various concepts of the C++ language is nice, but you still won't have any idea how to use them, when to use them, or what to use them for.
Something else that's obvious is that types are hard to understand. Understanding types goes a long way towards being a good programmer, because it makes you understand what's really going on much better. So I think that that should also be one of the first things in it.
Keeping in mind my first point, I'd like to write this thing in the form of a book describing the development of a series of simple games. Let's say we start with a text-mode version of Hangman for the first couple of chapters. That's quite complex already, but we can build it up in steps, and it gives plenty of opportunity to discuss variables, types and expressions (including const, but no pointers and references yet I think), input/output streams, functions, and control logic, as well as some design aspects like separating the logic from the graphics code and keeping everything nice and modular. We will be working towards a clear, game-related goal, so hopefully people will hang around.
The second game should be a bit more complex, and can add things like dynamic allocation, classes, and pointers and references. It would use the same general structure of hangman however, so that we can show that the overal design is similar. Maybe we can say something about design patterns as well, although maybe that would be a little too soon after the introduction of classes. Ideas for which game are welcome ![Happy [:)]](/Emoticons/happy.gif) . And should we go to a graphical system here already?
Also, there should be an explanation of libraries and header files and linking in there somewhere, but I'm not sure where.
Oh, and there should be a chapter 0 that explains about source and object code and compilers and so on, and about setting it all up on various platforms.
Comments?
|
|
-
07-04-2005, 10:48 |
-
07-04-2005, 11:11 |
|
|
For the tasks set in the introductory programming part, my thought is that we should first identify all the things they will need to put together a small game (or several?) and determine how these might be logically split up for the tute. During the tute we could provide the source for a set of primitive (but still reasonably detailed) games (hangman or whatever) that be compiled and run. As we progress through each topic of the basics section, we identify appropriate parts of those games to work on as exercises. As a very simple example, if we want them to know what a string literal is, we would first describe what a string literal looks like in code (i.e. something in quotes) and then ask them to go through and change a bunch of string literals, recompile the code and see how the output has changed. The blocks they're working with would grow larger as they progress, for example, after a while we'd be getting them to replace a whole function, then design a class, etc. The final exercise would be the game we identified at the start, which by then they've hopefully learned all the neccessary components that will enable them to construct it entirely by themselves.
The idea is that they always have something working, get an idea of the context(s) into which each structure they're learning to build fits and get lots of code to look at and analyse in addition to just learning how to construct those thnigs. I think it's important to clearly identify goals and show how each hoop we make them jump through is a neccessary exploration on the way to that goal.
|
|
-
07-04-2005, 15:34 |
|
|
I'm not sure I like the idea of providing all the source up front. I'm afraid that people will try to understand it all at once rather than following the tutorial, and while I'm all for experimenting, I'm a little afraid that we're going to get loads of threads of people asking about things that will be covered later in the tutorial.
Of course, if you want to browse through the tutorial without reading, scoop the code together, and try and compile and run it, nobody is stopping you. Also, providing all the source up front may help teaching people to read code, which is a valuable skill in multi-developer environments (that is, everywhere). And, as someone wrote, when we start learning a human language we start reading first, and learn to write later. So why not do the same with programming languages? Which makes sense until you realise that human languages are actually two-way; that is our computers don't talk back to us in C++. The equivalent would probably be interpreting compilation errors (which, incidentally, is also a very valuable skill that should play a key role).
So, after having started this post with an unfounded opinion, and then having given a random collection of arguments pro and contra, I will now conclude by saying that I don't know either, and will sleep on it tonight ![Glasses [8)]](/Emoticons/glasses.gif) .
|
|
-
07-04-2005, 20:11 |
-
07-04-2005, 20:24 |
|
|
I know for definite that if something like this is set up, I will be reading it for sure.
|
|
-
07-04-2005, 20:40 |
|
|
![Good [Good]](/Emoticons/good.gif) ! If you have any suggestions or ideas, please post them!
BayStone: But part of good programming is good design; I want to teach them to create good designs as well. And giving them the interfaces would be giving them the solution already...
|
|
-
07-04-2005, 20:41 |
-
07-04-2005, 21:07 |
-
07-04-2005, 23:49 |
-
07-05-2005, 1:00 |
|
|
 Quoting: Lourens Veen
I'm not sure I like the idea of providing all the source up front. I'm afraid that people will try to understand it all at once rather than following the tutorial, and while I'm all for experimenting, I'm a little afraid that we're going to get loads of threads of people asking about things that will be covered later in the tutorial.
I think that will happen regardless of whether we provide the source or not.
 Quoting: Lourens Veen
I think it's neccessary to teach two things at once, analysis and design. Giving them things in little bits is a bit like trying to teach design without analsysis, and imo, you can't design something that you don't know how to analyse (at least, you can't be sure that your design is any good or that it does what you think it does ![Silly [:p]](/Emoticons/silly.gif) ). If it's neccessary to restrict the scope of what they're analysing so they don't become overwhelmed, I think that can be provided with snippets of pseudo-code (in fact, I think this would be a neccessary part of focusing them at the appropriate level and on the appropriate bits of real code).
Note that we can make them identify and use interfaces (per Baystone's suggestion) and all that if we provide the full source. It will hopefully teach them that a piece of code can be looked at from many levels, from literals to statements to algorithms, to interfaces, etc. They should be able to look at a bit of code and say "I can identify it as a bunch of statements", "I can identify a sub-set of those statements as operating on a particular set of data embodied by a class", "I can identify that this bunch of statements form an algorithm that does such and such", etc.
I'm not sure we should stick to just one tool (or set of tools), though it would create a lot more work for us if we didn't ![Silly [:p]](/Emoticons/silly.gif) . However, the people reading it should always be clear on what is pertinent to the set of tools they're using. I think to start with, we're going to have to try out a few ourselves anyway.
|
|
-
07-05-2005, 1:12 |
-
07-05-2005, 7:06 |
|
|
Why can't you use UML with C++? And to be honest, I'm not sure about the use of UML, unless in a very informal way. But let's keep that discussion for another thread and/or time.
I would like to keep the tutorial itself more or less tool-agnostic. We can just say "Compile x" or "Run y", and have separate "Compile" and "Run" pages that we link those words to that explain how to do it for various platforms. This would then be explained in chapter 0.
Analysis, yes, that's another part. I think there will be some software engineering in here as well. A simple waterfall model of analyse/design/code/test could be used as the overall structure of each chapter. The analyse part would teach people to think about problems in programming terms. The design part introduces new constructs and concepts that will be used to solve the problem. The code part teaches you how to write it down. Testing shows some common mistakes and how to interpret compilation errors.
Hmm, I'm actually starting to feel like I have an idea of what this thing is going to be like. Exciting ![Wink [;)]](/Emoticons/wink.gif) .
|
|
-
07-06-2005, 12:46 |
-
07-06-2005, 13:33 |
|
|
Is the wikki going to cover things like ADTs?
What, like stacks? ![Big Smile [:D]](/Emoticons/grin.gif) . It probably should ![Silly [:p]](/Emoticons/silly.gif) .
|
|
-
07-06-2005, 19:27 |
|
|
Can you give an example of such a wrong-order evaluation Fluke? I don't recall encountering any problems, but then I usually wrap everything in parenthesis anyway.
Also, if we explain classes we explain ADTs, unless we explain classes without explaining the concept of encapsulation, and if we do that, we can't claim to be teaching OOP. So yeah, of course ![Happy [:)]](/Emoticons/happy.gif) .
|
|
-
10-01-2005, 15:03 |
|
|
OKay i can be stupid sometimes, and this is one of those times.
Is the Wiki actually made or not? I'm very confused ![Sad [:(]](/Emoticons/depressed.gif)
Also, will this Wiki appeal to people who want to learn C++ with practically NO coding background?
I like the idea of coding in C++, at the moment AI coding sounds particularly interesting, but until i learn a language, i can't do squat :'(
|
|
-
10-01-2005, 15:21 |
-
10-01-2005, 15:55 |
|
|
What about from Java - C++? We're learning Java in college, and we're making rather good progress I'd say. ![Big Smile [:D]](/Emoticons/grin.gif) Already learning about polymorphism and other OO stuff.
|
|
-
10-01-2005, 16:00 |
|
|
Oh good, i hope somebody will let me know when the C++ Wiki is up, i don't frequent the programming boards often, i've practically given up on online C++ tutorials, they're all hard to understand or cost money :\
Make wiki soon! ^_^
|
|
-
10-01-2005, 16:43 |
Page 1 of 2 (42 items)
1
|
|