Independent Study Topic?

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Independent Study Topic?

Postby TheChewanater » Tue Dec 08, 2009 6:13 pm UTC

My teacher said that I can pursue an individual study. I'm trying to decide between Assembly or OpenGL (in C++). Other suggestions are welcome, though in all probability I'm going to go with one of the two I mentioned.

A little info:
  • I'm a high school freshman, so I'm in no rush.
  • I know C/++ and HTML 5 (plus CSS and JavaScript), as well as a myriad of other languages I mostly just touched upon.
  • I've done a little with both assembly and GL, but I wouldn't say I knew either well enough to write a simple program.
  • I intend to work on game design or other graphics utilities.

Any opinions on the matter? OpenGL seems to be the best route, but would it be a good idea to learn some assembly first?
Last edited by TheChewanater on Fri Jun 25, 2010 12:03 am UTC, edited 1 time in total.
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

User avatar
headprogrammingczar
Posts: 3072
Joined: Mon Oct 22, 2007 5:28 pm UTC
Location: Beaming you up

Re: Assembly or OpenGL? (another "which one" thread)

Postby headprogrammingczar » Tue Dec 08, 2009 6:49 pm UTC

If you don't know any assembly, go for that first. Knowing assembly makes learning OpenGL easier, but not vice versa. Also in the same vein as OpenGL is OpenCL and CUDA, which you could potentially have a lot of fun with, depending on what kinds of programs you like to write.
<quintopia> You're not crazy. you're the goddamn headprogrammingspock!
<Weeks> You're the goddamn headprogrammingspock!
<Cheese> I love you

User avatar
Xeio
Friends, Faidites, Countrymen
Posts: 5101
Joined: Wed Jul 25, 2007 11:12 am UTC
Location: C:\Users\Xeio\
Contact:

Re: Assembly or OpenGL? (another "which one" thread)

Postby Xeio » Tue Dec 08, 2009 6:52 pm UTC

Chances are you wont actually ever need assembly. It's probably a good idea to have at least a basic understanding of how it works, but I don't thin it's absolutely necessary.

OpenGL on the other hand is used fairly often in many graphical rendering applications. If you are actually interested in game design (what do you mean by graphics utilities? modelers?) knowing OpenGL or DirectX is likely handy to know.

headprogrammingczar wrote:If you don't know any assembly, go for that first. Knowing assembly makes learning OpenGL easier, but not vice versa. Also in the same vein as OpenGL is OpenCL and CUDA, which you could potentially have a lot of fun with, depending on what kinds of programs you like to write.
Why would assembly make OpenGL necessarily easier? Unless you're writing you shaders in assembly rather than the C/C++ syntax I don't see why it would matter.

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Assembly or OpenGL? (another "which one" thread)

Postby TheChewanater » Tue Dec 08, 2009 6:56 pm UTC

So should I go with OpenGL and learn assembly in my spare time?
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

fazzone
Posts: 186
Joined: Wed Dec 10, 2008 9:38 pm UTC
Location: A boat

Re: Assembly or OpenGL? (another "which one" thread)

Postby fazzone » Tue Dec 08, 2009 8:23 pm UTC

It is my belief (having learned assembly) that learning assembly makes learning everything easier, because there is no "magic". There's no "call this library function". Most people today seem to believe that they can get away with not understanding their systems all the way down, but I disagree. Sure, for web programmers writing code in Javascript, there's no need to learn assembly. But I think that anyone doing serious games or systems programming (application programming is debatable) should learn assembly on some architecture. A great programmer needs to be able to think about code from the multiple layers of abstraction. You learn in most programming courses to visualize your program from the top down, i.e. thinking about it in terms of your algorithms, your data structures, the interplay and relationships between your objects, and the like. But it's a whole other perspective, and one that I don't think is taught much, to view your program looking at it from the bottom up, thinking in terms of individual instructions, your memory layout, how you are making use of cache, and things like that. You could argue that it's more important to view your program looking down, but I think that although looking down may be more "pure", that it is equally valuable in producing clean, correct, and effective code to look from the bottom up, from the perspective of the CPU. And that's what you do when you program in assembler, you put yourself in the CPU's shoes. Getting back to your situation, I'd say that it would be an excellent idea to take advantage of the time that your teacher is giving you to pursue assembly, because when you take more and more difficult programming and computer science courses, you will have a distinct advantage over most of your peers, in the whole extra bottom-up perspective gained by assembly programming.

tl;dr: Assembly isn't useful to learn in and of itself, but it's true value is in the perspective it gives you writing higher level code.
*/

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Assembly or OpenGL? (another "which one" thread)

Postby TheChewanater » Tue Dec 08, 2009 9:03 pm UTC

In that case, I'm definitely going to learn Assembly, even if it's secondary. The fact that it has little use itself makes me reluctant to do the independant study on it still, but now I feel as if I have to learn it at some point to be a good programmer, so why not now?
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

cogman
Posts: 112
Joined: Sun May 18, 2008 2:17 pm UTC

Re: Assembly or OpenGL? (another "which one" thread)

Postby cogman » Tue Dec 08, 2009 11:52 pm UTC

Assembly is useful for high performance code, that's about it. I was able to pick up Assembly really quickly (though I pick up most things pretty quickly).

If you options are GL or Assembly, I would go with GL. Assembly isn't really all that hard to pick up. If you have any sort of reference, you pretty much can learn assembly in very little time. The trick is learning how to write FAST assembly.

GL on the other hand has a pretty steep learning curve. If someone is teaching it, I would jump on the opportunity to be taught GL over assembly. You can be a great programmer without knowing a lick of assembly.

User avatar
lulzfish
Posts: 1214
Joined: Tue Dec 16, 2008 8:17 am UTC

Re: Assembly or OpenGL? (another "which one" thread)

Postby lulzfish » Tue Dec 08, 2009 11:59 pm UTC

TheChewanater wrote:In that case, I'm definitely going to learn Assembly, even if it's secondary. The fact that it has little use itself makes me reluctant to do the independant study on it still, but now I feel as if I have to learn it at some point to be a good programmer, so why not now?

It might be helpful to sort of learn how the call stack and such works, but I don't think it's really important, and you can master OpenGL with a good understanding of C.

OpenGL's way more fun, too, because you draw stuff and you can go into GPGPU from there.

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Assembly or OpenGL? (another "which one" thread)

Postby TheChewanater » Wed Dec 09, 2009 12:02 am UTC

It seems everyone is more or less in agreement. Thanks for the help :lol:
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

User avatar
mrcheesypants
Posts: 408
Joined: Tue Apr 24, 2007 10:59 pm UTC
Contact:

Re: Assembly or OpenGL? (another "which one" thread)

Postby mrcheesypants » Thu Dec 10, 2009 6:42 am UTC

Personally, I think that learning assembly if you haven't done any serious programming is a good way to develop a premature optimization habit. But on the other hand, you gotta think on a low level to do any optimization what so ever.

I'd say go OpenGL unless you want to do some embedded systems programming in the near future. Would be more fun than x86 assembly programming anyway.
(11:20:42 PM) NapalmCornflak3s(Parkaboy): organizing porn is easy at my house. there are two folders: "tentacle" and "other"

User avatar
Berengal
Superabacus Mystic of the First Rank
Posts: 2707
Joined: Thu May 24, 2007 5:51 am UTC
Location: Bergen, Norway
Contact:

Re: Assembly or OpenGL? (another "which one" thread)

Postby Berengal » Thu Dec 10, 2009 7:52 am UTC

mrcheesypants wrote:But on the other hand, you gotta think on a low level to do any optimization what so ever.

Personally, I think this is completely false. Optimization is something best done in the overall program design, then individual algorithms. Optimizing the number of cycles on the assembly level should be your last resort, somewhere after buying better hardware. Your time is usually much better spent doing something else.
It is practically impossible to teach good programming to students who are motivated by money: As potential programmers they are mentally mutilated beyond hope of regeneration.

User avatar
mrcheesypants
Posts: 408
Joined: Tue Apr 24, 2007 10:59 pm UTC
Contact:

Re: Assembly or OpenGL? (another "which one" thread)

Postby mrcheesypants » Thu Dec 10, 2009 11:02 pm UTC

Berengal wrote:
mrcheesypants wrote:But on the other hand, you gotta think on a low level to do any optimization what so ever.

Personally, I think this is completely false. Optimization is something best done in the overall program design, then individual algorithms. Optimizing the number of cycles on the assembly level should be your last resort, somewhere after buying better hardware. Your time is usually much better spent doing something else.


Agreed. I'm just a web/applications programmer and for most programming this is true.However I think game programmers or embedded developers usually have a justified reason for low level code optimization since it is their last resort. That being said, if the OP wants to get in the field of game programming, he/she should probably know some assembly code.
(11:20:42 PM) NapalmCornflak3s(Parkaboy): organizing porn is easy at my house. there are two folders: "tentacle" and "other"

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Assembly or OpenGL? (another "which one" thread)

Postby TheChewanater » Fri Jun 25, 2010 12:03 am UTC

Slight change.

Instead of what I previously thought, now I'm going to take AP Java over the summer myself, do an independent study in my own time through the school year, then take the AP Java test in May. I've been thinking about what topic I should do for the study. I'm done with learning assembly (for now) and OpenGL doesn't seem like something I can really stretch out into an independent study unless it's something specific. It also doesn't interest me much anymore.

Some of my current ideas for topics are system programming and Lisp. Which do you guys think is a better idea? Or can anyone think of another idea for an independent study?
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

User avatar
Berengal
Superabacus Mystic of the First Rank
Posts: 2707
Joined: Thu May 24, 2007 5:51 am UTC
Location: Bergen, Norway
Contact:

Re: Independent Study Topic?

Postby Berengal » Fri Jun 25, 2010 6:02 am UTC

When in doubt, always go for the language part. That's just my personal opinion though.
It is practically impossible to teach good programming to students who are motivated by money: As potential programmers they are mentally mutilated beyond hope of regeneration.

splargle
Posts: 9
Joined: Wed Jun 02, 2010 11:31 am UTC

Re: Independent Study Topic?

Postby splargle » Fri Jun 25, 2010 8:41 pm UTC

You should consider doing something geared strongly towards the ideas of concurrency/parallelism; most of the courses that you take will probably not emphasize this as strongly as they should, so it seems like something that would be worth looking into independently.

With many-cored systems becoming the norm, it is very valuable to understand how to utilize such a system to its full capacity. The need for such system utilization will usually only come into play for intense scientific applications and - you guessed it - games. So, if you are interested in getting into game development a strong familiarity with concurrent programming could really set you apart from your peers.

The nice thing about looking into concurrency is that it can be explored in almost any language. You could develop a program to familiarize yourself in the languages with which you are already familiar; perhaps comparing the advantages and disadvantages in each. If you wanted to learn a new language you could then look into one geared towards concurrency such as erlang.

If you managed to get comfortable with concurrency in the languages you know, and learned a new language that emphasized concurrency then you could try to get down into some crazy stuff. Up to this point you probably would have just been using your regular old CPU in your programs, try moving to working with the GPU.

You could check out what the CPU was doing to handle all those threads and processes you were throwing at it. Write up stuff on the workings of semaphores, what the heck a mutex is, or maybe explore the mathematical advantages of concurrency (what impact does concurrency have on the runtime of some of the algorithms you implemented?).

Why I think concurrency could form a good program:
-With new technology it is more important to think concurrently
-Concurrent programming is important for high-intensity programs (like games)
-It will let you get more familiar with the languages you know
-You can learn a new language geared toward the concept (such as erlang)
-There is the potential to mess around with parts of the computer you probably have not messed with before (such as the GPU)
-You can do (almost) anything with concurrency. Most programs you write could be improved with concurrent programming.
-Just because your programming doesn't mean you can't write! Write papers explaining some of the stuff you have used to make your programs work correctly...
-The opportunity to do some more mathematical stuff along with coding (for example, compare runtime of concurrent vs. non-concurrent versions of an algorithm)
-...There is a lot that you can do and these are just some ideas.

Hopefully I have given you something to think about at least :)

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Independent Study Topic?

Postby TheChewanater » Sun Jul 11, 2010 4:15 pm UTC

I'm pretty sure I'm going to do something Lisp-related, but what? I've already learned the basic syntax (most well spent 45 seconds of my life) and about lists and stuff. What's left to do that I can think of a paper to write about? For some reason, I seem to find re-learning concepts I learned in C/C++ in Scheme redundant, yet it seems hard to study new concepts and apply them in a language I'm just learning.

splargle wrote:[snip]

Okay, I'll look into that more.
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

0xBADFEED
Posts: 687
Joined: Mon May 05, 2008 2:14 am UTC

Re: Independent Study Topic?

Postby 0xBADFEED » Sun Jul 11, 2010 4:54 pm UTC

I wouldn't write-off OpenGL just yet. Out of all the things you've listed OpenGL is probably the most useful. Even if you never use OpenGL ever again the concepts you learn concerning graphics programming will be transferable to pretty much any high-performance graphics system. You'd be amazed at how many programmers know basically nothing about graphics programming. A good do-able project to both teach you OpenGL and keep you focused might be making a simple scene-graph library based on OpenGL. This could easily stretch out over the course of an independent study (and really much longer). Plus there are lots of OpenGL scene-graph libraries with source available to help guide you in your project. One caveat is that understanding OpenGL requires that you have at least a basic (ideally better than basic) understanding of linear algebra. You say that you're a high school freshman which means you're unlikely to have had a linear algebra course.

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Independent Study Topic?

Postby TheChewanater » Fri Aug 20, 2010 3:11 am UTC

How's this quick outline sound?

Subject: Functional programming.

Purpose: I will study functional programming in LISP.

Why: To broaden my experience beyond procedural/object oriented programming.

Background: Self-taught C++ and others.

Scope: I will learn a dialect of LISP, specifically Scheme. I will study functional programming with it. My project will be [?]

New knowledge/skills: I expect to learn about concepts of functional programming and how they can be applied.

Materials/resources: I will be using The Scheme Programming Language by R. Kent Dybvig, which is available online, and my computer, which I already have.


I just need a final project and I can write up the full application. So, what kind of project would demonstrate knowledge of functional programming? Some sort of image processor, or a parser or something? I'm not really sure since I don't know a whole lot about functional programming.
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

bieber
Posts: 223
Joined: Thu Mar 13, 2008 12:13 am UTC

Re: Independent Study Topic?

Postby bieber » Fri Aug 20, 2010 5:14 am UTC

TheChewanater wrote:How's this quick outline sound?

Subject: Functional programming.

Purpose: I will study functional programming in LISP.

Why: To broaden my experience beyond procedural/object oriented programming.

Background: Self-taught C++ and others.

Scope: I will learn a dialect of LISP, specifically Scheme. I will study functional programming with it. My project will be [?]

New knowledge/skills: I expect to learn about concepts of functional programming and how they can be applied.

Materials/resources: I will be using The Scheme Programming Language by R. Kent Dybvig, which is available online, and my computer, which I already have.


I just need a final project and I can write up the full application. So, what kind of project would demonstrate knowledge of functional programming? Some sort of image processor, or a parser or something? I'm not really sure since I don't know a whole lot about functional programming.


Well, I've heard that LISP and its ilk are just wonderful for writing parsers. Be warned, though, if you want to go for a parser then you're also going to need to learn at least a little bit of formal language/automata theory

User avatar
TheChewanater
Posts: 1279
Joined: Sat Aug 08, 2009 5:24 am UTC
Location: lol why am I still wearing a Santa suit?

Re: Independent Study Topic?

Postby TheChewanater » Wed Oct 13, 2010 3:49 pm UTC

I've decided to write a Lisp in Scheme. Right now I just have the lexer done. Does anyone know where one can find information about what to do with the lex'd tokens? I'm not even sure what to Google.[cite][/cite]
ImageImage
http://internetometer.com/give/4279
No one can agree how to count how many types of people there are. You could ask two people and get 10 different answers.

bieber
Posts: 223
Joined: Thu Mar 13, 2008 12:13 am UTC

Re: Independent Study Topic?

Postby bieber » Wed Oct 13, 2010 10:54 pm UTC

TheChewanater wrote:I've decided to write a Lisp in Scheme. Right now I just have the lexer done. Does anyone know where one can find information about what to do with the lex'd tokens? I'm not even sure what to Google.[cite][/cite]

http://en.wikipedia.org/wiki/Recursive_descent_parser
That ought to get you started. You might also want to learn some of the theory behind Context Free Grammars and Pushdown Automata (presumably you've already learned at least a little about DFAs and NFAs in the process of writing the lexer, no?)

User avatar
Cxo
Posts: 14
Joined: Thu Aug 12, 2010 6:58 pm UTC

Re: Independent Study Topic?

Postby Cxo » Thu Oct 14, 2010 7:21 am UTC

Here is a nice textbook on language design and interpretation: http://www.cs.brown.edu/~sk/Publication ... -04-26.pdf


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 10 guests