CS Faculty and Students To Write a Creative Commons C++ Textbook
Cynic writes "Inspired by an earlier Slashdot story about Finnish teachers and students writing a math textbook, I pitched the idea of writing our own much cheaper/free C++ textbook to my programming students. They were incredibly positive, so I decided to move forward and started a Kickstarter project. We hope to release the textbook we produce under a CC BY-NC-SA 3.0 license and sell cheap hard copies to sustain the hosting and other production costs."
Its that kind of thinking, collaboration, and progress that revolutionizes industries. Best of luck to you!
Nobodies Prefect
Tidbits for Techs Technology Blog
are there not already vast quantities of available C++ information ? (besides stackoverflow)
go away dum dum
The hard part is writing the book of what NOT to do in C++. That would easily take several volumes.
As a good comparison, consider O'Reilly's JavaScript: The Good Parts, which is a mere 176 pages.
There's no -1 for "I don't get it."
You're gonna need it! The scope of C++ is huge!
I hope you don't just stop at the language, though. The common libraries are frequently ignored...
Good thing a link was provided. Actually it was the only link I clicked.
It must be written in American, not Finnish !! Imagine if you had to write goto as gehtunblech !!
A book written by a committee will be a painful read.
If you want to do something useful, create one of those single plastic sheet two page guides to the language. Boiling the language down to two pages of small type with a few diagrams is a useful exercise. More useful than another thousand page book of blithering.
Hey, thanks! I'm a beginner C++ dummie in Finland and will definitely check out your book.
One of the major costs of college was the $100 text books that showed the basics of a language and example code, but it wasn't something that I would keep as a reference for future study.
Your book was junk. There are too many programming books that are bloated and meandering. Granted, C++ itself is bloated and meandering, but still...
I still have my K+R ANSI C book 20 years later. I actively used it for a good while, perhaps a third of that time. This book is well under 1 cm thick, not much over 1/4 inch, and it delivers the goods.
A much fatter book that also delivers the goods is Advanced Programming in the UNIX Environment. I so wish that the these books could be properly updated by their original authors, keeping the original style. (not possible anymore)
Bruce Eckel publishes free (freeware?) books about several languages, and the one on C++ was one of my most read. Just a suggestion to check the existing state of the art and to not duplicate efforts. Anyway, a very good idea!
Pledged ($50). I don't care if the book turns out crap or not; more people should release books in this manner (IMO) so the decision to pledge was very easy.
Richard Stallman gives good reasons why this CC license is the wrong one to use: http://stallman.org/articles/online-education.html
The world can always use more free information.
Just be sure to check the legal details with a lawyer first. You don't want the university claiming ownership of your hard work and selling it after the fact, due to the fact that you and your collaborators are employed/enrolled there.
While it is certainly good to have a variety of textbooks, similar efforts already exist.
Check out http://greenteapress.com/
When you already have a high quality one!
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
"Thinking in C++" is the most famous free C++ book, freely available online.
It's not that great, but can a couple of random programming students really make something better?
I've always wanted a good textbook really made for beginners. Too often I pick one up that says "coding for beginners" then on the inside is says "you should already be familiar with..."
No I'm not familiar with anything. I want a textbook that teaches it like you would to a 10 year old. No assumptions, define everything. Every new concept is accompanied by an example AND a tutorial.
If anyone can recommend me one of those, especially for objective C, I'd be very happy. And no. the for dummies, o'reilly, and Apress books are not good enough.
I don't know what's the goal of the course, but there already exists a free online book that surveys C++, including the latest revisions. It's called C++ annotations:
http://www.icce.rug.nl/documents/cplusplus/
K&R ANSI C is the only usable C reference. If you have a prof require a book other than K&R for a C course, you need to file a complaint with your CS dean, alleging incompetence.
C++, on the other hand, doesn't seem to have a similar significant tome. I tried reading Stroustrop... it's just not the same. There's also the problem that while C is effectively a static language now, C++ is evolving constantly. (See c++0x, c++11)
In addition, many of the C++ concepts are libraries, rather than the actual language syntax, e.g. use of the STL or other container classes to prevent rewriting commonly used containers is almost as important as being able to write said containers if you need them.
Meh....textbooks are expensive as hell, but only if you actually buy them. By junior year I'd realized that I had never once opened the textbook for any if my comp sci class and stopped buying them. It's just faster to Google what you need, and if they assign homework from the book (which I found very rare in CS,) you just go to the library.
What would be awesome is an open replacement for that damn $500 calculus textbook....math textbooks are one that you generally do actually need, and those prices are beyond absurd...
Didn't Bruce Eckel already do this? Do a search for "Thinking in C++".
Having earned my degree in CompSci, I can say I was severely disappointed in my C++ texts. While the Deitel text is very comprehensive, it is so much so that it loses any effect. What is really needed is a multi-function text. One part deals solely with teaching the language constructs along with basic examples. The second part needs to focus on "real-world" style code. Current texts focus so much on the constructs, do a moderate job at best at tackling them, then leave any real examples as exercises buried 30 exercises in behind a bunch of boring "write a loop that adds 5 to each member of an array" type questions.
Have you even looked at the link you posted? It has a completely different scope.
SJW n. One who posts facts.
K&R doesn't cover C99 or C11, which is unfortunate. Somebody needs to update it.
There's also the problem that while C is effectively a static language now, C++ is evolving constantly. (See c++0x, c++11)
Evolving constantly? That's one set of changes in 13 years! If anything it was too slow, though it's better for them to make no changes than to have something bad set in stone for ever.
Also, there's C99 and C11. Though those aren't anything like as large in scope as C++11.
SJW n. One who posts facts.
OK ... I'll volunteer to update C99 if you take C11.
now we need to go OSS in diesel cars
Hopefully the teacher knows his stuff and is a good editor.
Speaking from experience, C++ is complex enough to fool you into thinking you're good at it early on when you've really only just began to scratch at the surface to see what's underneath.
The students may be writing with the best of intentions, but there's a good chance they'll give bad information. Learning to not fool yourself about your limits is an underrated skill.
On the other hand, writing documentation for things is one of the best ways I've found to really flesh out my understanding of something, so I bet these students will come out of the project with a significantly improved understanding of the language.
My CS department writes their own 1st year notes and posts them online for free (yes, it'll cost if you want to print them, but most people have laptops now). The school kinda 'forced' them to put a textbook down for website, the first class my prof said that we'll not be following that book so we can return them, or keep them if we want extra reference material. My experience has been quite good, the first class was extremely well structured and the notes very easy to understand. My second class is more difficult to follow but the professor that wrote the first class is teaching the second for the first time, he never wrote the notes and I can tell he wants to rewrite it all so that it's much easier to follow. By doing this, they can structure the notes around the class, not trying to fit the class to the textbook. I think it works much better.
First of all, why NC? I don't think it's fair, especially if he is going to write it with commercial support from the kickstater guys.
Second: what's wrong with this book, for example? http://www.icce.rug.nl/documents/cplusplus/
Duplication is not something desirable. Instead he could just contribute to that book.
So NO, DONT support it on kickstater!
I think it's a great idea, and will pledge some money.
I also think other subjects could use a basic text as well - say math textbooks. All those high schools and colleges spending fortunes for textbooks when the basic material hasn't changed appreciably in hundreds of years. School districts could save money on book purchases and focus on teaching, contributing homework problems, etc.
First these guys need to read The Nature of Code; full stop. I have never read a better book on coding. The language covered in that book is the obscure Processing (a C++ like syntax) but it doesn't matter. That guy explains everything you need from pretty well zero to Genetic Algorithms in ways that I have never seen done so simplistically. Most shelf computer books meander through the usual OOP stuff such as circle and square inheriting from the shape base class but without really explaining why the hell you would need any of that.
CS textbooks can't wait to show off the writer's math skills and while explaining one thing will throw in lambda calculus just for laughs. Also CS textbooks often contrive the need for something like a doubly linked list instead of leading the student up to where they hit a problem that is nicely solved by the topic. This is where you find the critical difference between obtaining knowledge to regurgitate on a test and building a skill set for life.
One of the keys to the nature of code is that the writer is almost always doing something graphical. The result is that you can get a feel for what your code is doing while at the same time having concrete goals. I am sick of textbooks where they will introduce a vector blah and then get you to sort and print the results. I doubt there is a person on earth who went into a CS course wanting to sort a list of names. But if you have a graphical bunch of rectangles and you put each rectangle in a vector and then have the student sort them that way and display them stacked, still useless but the student will probably get more satisfaction.
Good luck with the book.
Because, its not the same thing. Because, writing another "The C++ Programming Language" is a huge task, and probably not particularly useful for a student outside of a reference book. "Programming: Principles and Practice Using C++" is probably a better book for a student, and its only ~$40 and can probably be resold for $20. So, as textbooks go that's pretty inexpensive.
All that said, its probably possible to expand the teaching curriculum and distil a semester or two of C++ into a few dozen pages, similar to many of the online tutorials that can be found. It might not sound impressive, but a student probably should be spending the majority of their time writing code, not reading about writing code. So, with that said, a tutorial that covers the usual variables, arrays, loops, functions, classes, and stops before getting into multiple inheritance, operator overloading, templates, exceptions and dozens of other C++ concepts that are deep dark holes (especially when combined) isn't really going to be that large. The problem of course is, that if you choose to ignore 50% of the keywords that aren't strictly necessary to write useful programs, the students will be left in the dark about a lot of the ugly edge cases. Take exceptions, its entirely possible to go a whole semester or two, and not have to teach anything about C++ exceptions. Of course, the resulting code won't be checking for new/construction failures.
Frankly, teaching one of the large programming languages (like C++, Java, C#, etc) at the university is going to be helpful for industry, but the vast majority of the students aren't even going to score "proficient" in those languages after just a couple semesters. The whole CS program is going to have to standardize on C++ for all the classes, and even then a graduating student simply isn't going to have the time to learn enough about C++ that they won't have to be on a tight leash for the first year or 5 of their career. C++ is a fantastic language for professional development. Its problem is that your average programer probably has to write 100k lines of C++ code and read a similar amount of other peoples code before they are proficient enough to be trusted. Part of the problem is the environment C++ programs run in. POSIX and windows both are full of gremlins, just waiting for the newbie programmer to miss some esoteric edge condition that happens on real hardware..
K&R ANSI C is the only usable C reference. If you have a prof require a book other than K&R for a C course, you need to file a complaint with your CS dean, alleging incompetence.
Sounds a little bit harsh, don't you think? Sure, there are many lousy books on C (or any language, for that matter), but what about King's "C Programming: A Modern Approach"?
Ezekiel 23:20
I don't see the point of this. It's a kickstarter to fund a reduplication of already existing projects.
Specifically: http://en.wikibooks.org/wiki/C%2B%2B_Programming
Is everything in the US part of the military?!
Yuck.
You realize that C has a few revision since K&R, right? Hell, the last one was only two years ago! The same year as the last C++ update.
There are already excellent C++ and algorithm and CS books available at consumer (as opposed to university) prices. What are the chances a committee of non-authoring experts will better what's already available? If you produce "free" texts that aren't as good as inexpensive texts, you're doing a disservice to everyone who will spend time reading them.
Now if you're willing to toss out your work if it doesn't turn out to be excellent, then go for it. But if you're going to declare it better than what's already available because it's free, then you're just pawning reverse progress off as principle.
If you have to learn code through a textbook, you already failed.
I haven't thought of anything clever to put here, but then again most of you haven't either.
$5000?!
the great thing about kickstarter is there's no accountability.
You want to get funding to write a C++ book? Start doing some grant writing.
Your school doesn't provide any hosting space? Why can't you put it up there?
Also, there are already tons of online resources for c++. What will make yours unique?
Great, just because some guy is familiar with /. then he gets a round a free advertising.
Guess he doesn't know about Khan Academy. Sal has been there, and done that, so good luck with your little project. Thanks though for at least being honest about using the free labor of students for your own gain.
Steal from the best, would ya? www.khanacademy.org for your programming (and other) educational needs. Hmm, I think MIT has probably released something too.
What school are you from again?
Uh guys... why start a new project? How about just contributing to something that already exists?
I like how all of them in the video when asked "do you think you can do better than seasoned C++ professionals in writing a textbook" answer yes without hesitation.
That's not to say I frown upon their enthusiasm, but there is something to be said about the humility of recognising someone's expertise and efforts put into a project, rather than assuming than you can do it better without training or special knowledge, just because you think you're smart and stuff.
I've seen this symptom particularly among professionals like scientists or doctors: just because they're good at what they do (and well-respected for it), they automatically assume that they can make amazing teachers without a day's worth of educational training. Result? Usually they suck at transmitting their ideas and they take it out on the students
Nice project though, I pledged, for what it's worth. The open (and reviewable) nature of the book alone promises that it has good potential :)