A mathematician-turned-programmer needs resources. Help pls?

Started by
6 comments, last by Harvey Weyandt 11 years, 4 months ago
HELLO EVERYBODY.

I'm sirsuripu, a new guy here on the forums. I'm a freshman in college with a strong background in mathematics (it is my major after all) and a strong love for games, and it has always been a dream of mine to put both of these passions to work in developing my own games, as a hobby or perhaps as something even more. That being said it is strange (and unfortunate in retrospect) that I was not introduced to the wonderful world of computer programming until just recently; indeed, no one in my family has ever programmed a line, and my high school's curricula did not offer any more than a class in Visual Basic! Nonetheless for the past year I have been rigorously exploring my first language, C++, with the aid of a book concentrated on its applications to game programming, but I don't think I am doing nearly as much as I should to learn about programming, the apical discipline of all mathematics and logic. So on that note, I need some help.

Upon reading some of what the forums have to offer, I have come to an understanding that programming is not a mere past-time, but a demanding discipline, deserving of more than my current investments of concentration. So, I'm afraid that if I want to take this shit seriously, and apply my mathematical talents finally to something worthwhile, it's about time I picked up the pace! My request for anyone kind enough to read this ridiculously superfluous prologue: I need some resources. I need blogs, web articles, tutorials, book/magazine suggestions, and anything else you think would help a beginner broaden his horizons in an appropriate way. Any advice on how to proceed from my current, fundamental knowledge of C++ to a stage at which I could develop something like Pong or Tetris would be a great contribution too! It doesn't even have to be game or C++ - oriented. I just want to have as much at my disposal as I can to immerse myself in the subject as much as possible on a daily basis. Any links or advice would be greatly appreciated, and I thank you in advance! See y'all on the forums! : { )
Advertisement
I think the best way to learn is by doing. The question is then: What to do? Of course you should do a variety of things.

SInce you have a good grasp of Math, you'll probably enjoy solving the problems at Project Euler. This will teach you some important things about algorithm design and force you to really think about how to improve some algorithms.

Since you want to make games, you should make games. I love writing AI for board games. If you want to get into that kind of thing, it's easy to start with simple games (tic-tac-toe), continue with more interesting ones (connect 4, checkers) and then try your hand at the ones where a competitive field of opponents exists (chess, go).

You should also make some video games. You probably know enough already to pick up SDL or SFML (libraries that give you access to graphics and keyboard input) and program Pong, Tetris or Snake.

There is no better way to immerse yourself in programming than having a fascinating project to work on.
Programming can be as simple or as complicated as you want it to be.

It's best to just pick a language. C#, Java, Python are good beginner choices. C++ is a bit more difficult to learn because you have to account for, and manage things more thoroughly.

Once you pick a language, learn everything from the ground up. Just like writing a novel, you have to learn basic reading, writing, and storytelling structure. Just like math, you have to learn arithmetic and then move on to more complex subjects.

If you tell us what your plans are, then we might be able to help you pick a suitable starting language. All languages are good choices, but some are more suitable then others depending on situation and platform.
Python is the perfect beginner language. You can download and install it and start coding in about 0.3 nanoseconds. The IDLE line by line interpreter is perfect for learning to program, users can write a line and see what it does immediately. So I would go with this route at first.

However I wouldn't recommend using Python for making anything other than the TINIEST games, for performance reasons. As a programmer, you will learn that different languages are generally used for different purposes. (And there are often similar languages designed for the same purpose competing with each other, eg C# vs Java, Lua vs Angelscript). Python is not really designed for high-speed execution so it could prove difficult to get larger projects running at decent speed.

Once you are a confident programmer (and perhaps you have made Pong or Breakout in Python) I advise you to move on to C++. It's a fairly easy migration from Python to C++, just remember the syntax changes and that you have to specify the type of a variable. Then you can start using the powerful features of C++ such as pointers and custom memory management.

I started with C++. Took a lot of patience but was worth it.

(Technorati: did you know that EVERYTHING in python is created on the heap? If I type '123 + 45', that gets allocated on the heap as well :()
If you *really* want to incorporate mathematical knowledge into programming, focus on computer graphics. Multidimensional calculus, euclidean topology, differentiable 2-manifolds, linear algebra, etc. - all of these fields have their applications in CG.
C# + XNA

With C# you don't have to worry about managing memory, you can focus on learning oop (beginner stuff), algorithms and other concepts related to programming.
With XNA you can learn how to use a library for building games that will teach you the concepts of rendering/sound/input

You can then transfer your skills to C++ and skill up to full c++ knowledge, templates, generic programming, c11, io, etc
I say Code! You say Build! Code! Build! Code! Build! Can I get a woop-woop? Woop! Woop!
You should find computer graphics very straight forward and logical. Programming should also be fairly easy for you, but you should also learn the fundamentals of programming before starting with a language.

C dominates the world of linear procedural computing, which won't advance. The future lies in MASSIVE parallelism.

k i just got started up with computer graphics (allegro 5) and i must say i'm on fire! thanks all!

This topic is closed to new replies.

Advertisement