Well, it's that time of year again. Class registration for next year. And since next year is my senior year in high school, I have, oh, 4.5 credits worth of classes open to electives. I have no where near that many electives I want to take, so I thought I should probably do an independent study. I asked an old teacher of mine (he taught VB and java) if he would do an independent study of C++ with me, and he said yes. Now here comes the tricky part; I need goals for the board of education to approve it. I have no idea what a reasonable expectation would be for a years worth of studying C++.
This is where you the reader comes in. If you have any sort of experience in C++, what do you think would be a reasonable goal for me? I'm not the dullest knife in the drawer, so I would prefer something a little more challenging to meet. Any input would be greatly appreciated. Thanks in advance!
Independent Study[C++]
Re: Independent Study[C++]
Hmm steps to learning c and c++?
Basic data types and operators. (Learn the basic data storage types in computer languages, and learn the basic operators for computation. Practice declaring and assigning variables. Printing out variable values to the console.)
-Boolean operators
-Arithmetic operators
-Arrays
-ASCII representation
-Binary representation and operators
-The memory stack and variable declaration
Control flow. (Learn the basis control structures in a program to allow varying behaviors depending on input.)
-Braces for code blocks
-If-Else statement
-Loops, do, while, for
-Break statement
-Switch statement
Functions. (Learn the basics of functions to allow repeated use of complex functionalities. Practice using standard C++ functions)
-Declaring a function
-Basic (Pass by value) parameter and return values.
-Recursion
-Overview of standard functions provided by C/C++ standard libraries
Advanced data representation.
-Pointers
-The memory heap
-Dynamic memory allocation (new/delete)
-Function parameters using pointers (Pass by reference)
[Basics in debugging would be good to start here and continuously practicing throughout, because once you start making complex programs that dynamically allocate memory you are going to need to start developing debugging skills]
Fundamentals in object oriented programming.
Classes
Permissions
STL Classes and containers
I think up to here could be a good years of learning and maybe even more than enough... But if you catch on quickly.
...
Advanced OO...
Inheritance etc.
...
Algorithms.
...
The sky is the limit.
I don't know if I missed any topics.
Basic data types and operators. (Learn the basic data storage types in computer languages, and learn the basic operators for computation. Practice declaring and assigning variables. Printing out variable values to the console.)
-Boolean operators
-Arithmetic operators
-Arrays
-ASCII representation
-Binary representation and operators
-The memory stack and variable declaration
Control flow. (Learn the basis control structures in a program to allow varying behaviors depending on input.)
-Braces for code blocks
-If-Else statement
-Loops, do, while, for
-Break statement
-Switch statement
Functions. (Learn the basics of functions to allow repeated use of complex functionalities. Practice using standard C++ functions)
-Declaring a function
-Basic (Pass by value) parameter and return values.
-Recursion
-Overview of standard functions provided by C/C++ standard libraries
Advanced data representation.
-Pointers
-The memory heap
-Dynamic memory allocation (new/delete)
-Function parameters using pointers (Pass by reference)
[Basics in debugging would be good to start here and continuously practicing throughout, because once you start making complex programs that dynamically allocate memory you are going to need to start developing debugging skills]
Fundamentals in object oriented programming.
Classes
Permissions
STL Classes and containers
I think up to here could be a good years of learning and maybe even more than enough... But if you catch on quickly.
...
Advanced OO...
Inheritance etc.
...
Algorithms.
...
The sky is the limit.
I don't know if I missed any topics.
-
rudel_ic
- official Wolfire heckler
- Posts: 2193
- Joined: Sun Aug 28, 2005 11:19 pm
- Location: Hamburg City
- Contact:
Re: Independent Study[C++]
The basics should take you about half a year to get down, less if you are already familiar with other languages of a related paradigm to an advanced extent; after that, you should tackle some project that fits the other half year (or more) you have. That's at least what I'd do.
And that could be anything. Just think about what would be worthwhile in your opinion, then get the basics down, then re-evaluate if you can get what you chose first done.
Since you have a teacher by your side, this shouldn't be hard to figure out.
Dwelling on theoretical aspects for a year is a bit on the crazy side in my opinion; it's not like the subject matter demands such a dedication in terms of time spent. C++ isn't black magic or whatever.
Edit: What SamW lists amounts to basics, you can get that stuff done in three months if you put everything into it. Seeing as you apparently already understand numerous aspects as it is, you will probably be done in less time.
Edit: You should also pay attention to stuff like advanced data structures, common patterns and code re-use and how to properly go about that in C++. Because that's where you'll spend a lot of time in practice.
And that could be anything. Just think about what would be worthwhile in your opinion, then get the basics down, then re-evaluate if you can get what you chose first done.
Since you have a teacher by your side, this shouldn't be hard to figure out.
Dwelling on theoretical aspects for a year is a bit on the crazy side in my opinion; it's not like the subject matter demands such a dedication in terms of time spent. C++ isn't black magic or whatever.
Edit: What SamW lists amounts to basics, you can get that stuff done in three months if you put everything into it. Seeing as you apparently already understand numerous aspects as it is, you will probably be done in less time.
Edit: You should also pay attention to stuff like advanced data structures, common patterns and code re-use and how to properly go about that in C++. Because that's where you'll spend a lot of time in practice.
Re: Independent Study[C++]
You should have some sort of program demonstrations in there too. You shouldn't just study the theory, but test it in practice as well. For example:
A program that takes user input, perhaps adds some randomness, and creates something to show to the user. Early stuff might be things like creating geometric shapes, or an N number of stars. Later on, you could do stuff like random map generation or graphs or other types of visualization.
A program that reads and writes a file from the computer, possibly changing its format. Early on, just do text files or something. As you learn more and find something interesting, you could read database or spreadsheet files and do stuff with them, or learn to deal with various image formats and convert between them, or write a convertor that deals with complex data, like Overgrowth's animation files.
Programs with increasing complexity of user input. At first, it'd be stuff like buttons that can be pressed and text fields that can be written in, or object(s) that follow the mouse cursor. Responsive real-time keyboard + mouse control could be a later project, and if that stuff interests you you can hook Wiimotes and other motion-sensor stuff to computers.
Also, at some point you could try doing stuff for specific OSs, or porting something to a different OS. Or perhaps making a program that can hook up to an OS and do some specific stuff, like Mike Lin's tools. Whenever I get a new computer, MCL is one of the first tools I install.
These kinds of demonstrations will help your non-computer-savvy teachers. They might not be the ones reviewing how well you're learning the basics, but even they can tell if a program is doing anything or not. If you keep the demonstrations as open as in my examples, you can do pretty much anything you want. Games, number crunchers, graphic stuff, text or image editors, etc.
A program that takes user input, perhaps adds some randomness, and creates something to show to the user. Early stuff might be things like creating geometric shapes, or an N number of stars. Later on, you could do stuff like random map generation or graphs or other types of visualization.
A program that reads and writes a file from the computer, possibly changing its format. Early on, just do text files or something. As you learn more and find something interesting, you could read database or spreadsheet files and do stuff with them, or learn to deal with various image formats and convert between them, or write a convertor that deals with complex data, like Overgrowth's animation files.
Programs with increasing complexity of user input. At first, it'd be stuff like buttons that can be pressed and text fields that can be written in, or object(s) that follow the mouse cursor. Responsive real-time keyboard + mouse control could be a later project, and if that stuff interests you you can hook Wiimotes and other motion-sensor stuff to computers.
Also, at some point you could try doing stuff for specific OSs, or porting something to a different OS. Or perhaps making a program that can hook up to an OS and do some specific stuff, like Mike Lin's tools. Whenever I get a new computer, MCL is one of the first tools I install.
These kinds of demonstrations will help your non-computer-savvy teachers. They might not be the ones reviewing how well you're learning the basics, but even they can tell if a program is doing anything or not. If you keep the demonstrations as open as in my examples, you can do pretty much anything you want. Games, number crunchers, graphic stuff, text or image editors, etc.
-
rudel_ic
- official Wolfire heckler
- Posts: 2193
- Joined: Sun Aug 28, 2005 11:19 pm
- Location: Hamburg City
- Contact:
Re: Independent Study[C++]
Endoperez has a point. For instance, at Uni, I had this one assignment where we had to implement Huffman coding. I visualized the tree dynamically with OpenGL, and that earned us a big thumbs-up. If you can show shit, that's always a plus!
Re: Independent Study[C++]
Thank you for all your replies, they will be really helpful. I will compile a list of goals and when I want to achieve them for the first semester and see how my teacher feels. Again, thank you very much!