Lectures/Notes
|
Thoughts on C++ and Programming for 559While the focus of this page is on resources to help you learn C++ if you have not learned it already, there are some general comments that might be helpful as you try to prepare to do your projects for CS559. For this class, you will need to program all of your projects and assignments in C++. This is not a statement about the language, or the appropriateness to doing graphics. It's more a statement about what is a convenient environment for us to teach graphics in. Just as we chose to give lectures in English, despite the fact that other languages could have been used, we chose to give programming assignments and projects in C++. This might be a problem if your previous programming experience was in a different programming language. This is increasingly the case as we move our introductory programming courses to Java. First, it is definitely possible to do well in CS559 if it is your first exposure to C++. Many students (OK, some students) did very well. In fact, knowledge of C++ beforehand is not a good predictor of how well students do in 559. That said, learning C++ at the same time that you are learning the graphics material will be a challenge. Plan to devote some extra time to it. While many students who did not C++ prior to taking 559, all of those who were successful put in lots of extra time and effort. To be honest, the biggest problem for most students transcends the language: its the ability to build and debug non-trivial programs. For many students, 559 is the first time that they have to write a program that is too big to wrap their head around. Learning to write complicated programs is harder than picking up C++ if you already know Java. So, you might be better off if you've written lots of big programs in Java than if your programming experience is limited to short C++ programs. C++ vs. 559Learning C++ is not part of 559. We will not test you on knowing C++. We will not expect you to know any fancy C++ features in order to use our example code. We will help you with C++ programming - to a point. We will help you enough that you can do the projects. We cannot teach you to program. We will not help you use complex features. Some Resources for Learning C++Since a lot of people will ask... The department offers a "course" (CS368) to teach student C++ after they have learned Java. It is a self-paced web tutorial. You can work through it without registering (and getting credit). You can access the tutorials from http://www.cs.wisc.edu/~hasti/cs368/. BooksWhen I learned C++ (1989), I went to the bookstore and there were 2 books. So when I tell you the book that I used to learn C++, you have to take the recommendation with a grain of salt. My favorite C++ book is Lippman's C++ Primer. (published by Addison Wesley). With each version, it seems to double in size (this time it added a second author). When I got the first version it was a compact little volume. To be honest, I think it gets worse as it grows bigger. Two other books that have been recommended to me are Wang's "Standard C++ with Object Oriented Programming" and Deitel & Deitel's "C++, How to Program." I have not used either of these, so no promises. Another well known book is Stroustrap's "The C++ Programming Language." This book was first (Stroustrap is the "inventor" of C++). Like Lippman (who was 2nd) this book doubles in size with each version. . One thing that I dislike in C++ books is when they spend more time telling you their programming philosophy, rather than the constructs of the language. There seems to be no avoiding this. Another problem with C++ books is that they like to show off how you can use the complicated features of the language to do tricky things. There are whole books on these kinds of things (that are probably better at it). My opinion is that you are best off learning the basics first, and then moving on to fancier things later. Web TutorialsAside from CS368, there are a bunch out there. In fact, if you type in some C++ topic to your favorite search engine, you will find something. (I did this the other night when I couldn't remember how Templates worked). While you might wade through a pile of junk (this is the web), you might find something good. Some HintsThis is based not only on my own experience, but on my experience teaching CS367 back when it was taught in C++, and in helping 559 students write their first programs.
Good luck! Body |