Last-modified: Sunday - Feburary 26, 1995
This is a list of a few C and C++ language tutorials available to a user. This list will include interactive tutorials, public-domain code collections, books etc. I've developed this FAQ purely as a volunteer effort as a service to the Internet community. Although every effort has been made to insure that all the information here is as accurate as possible, no guarantee is implied or intended. Text and Postscript of this list are also available.
I welcome comments, suggestions or criticism for all the people out there on the net that read this. If you can help me make this list a little better, you will be helping a lot of people out there on the net. I am a horrible writer and an even worse speller. If you find any errors or would like to suggest any additions please feel free to email me at the address below:
This file is posted on the 1st and the 15th of each month to the Usenet Newsgroups COMP.LANG.C, COMP.LANG.C++, NEWS.ANSWERS & COMP.ANSWERS. The most recently posted version of this document is kept on the news.answers archive on rtfm.mit.edu. You can receive it via anonymous ftp by clicking here.
Some of the items discussed here are platform-dependent, but most of the items are applicable across all platforms (portable). If you have any comments, suggestions, complaints, additions, etc, please feel free to e-mail me at the following address:
carpenterv@vms.csd.mu.eduIf you are working on a tutorial or would like something added to this list, please e-mail me at the address given above.
The 'C' programming language was originally developed for and implemented on the UNIX operating system, on a DEC PDP-11 by Dennis Ritchie. One of the best features of C is that it is not tied to any particular hardware or system. This makes it easy for a user to write programs that will run without any changes on practically all machines. C is often called a middle-level computer language as it combines the elements of high-level languages with the functionalism of assembly language.
C allows the manipulation of bits, bytes and addresses- the basic elements with which the computer functions. Another good point about C is its portability which makes it possible to adapt software written for one type of computer to another. C was created, influenced, and field tested by working programmers. The end result is that C gives the programmer what the programmer wants. C offers the speed of assembly language and the extensibility of FORTH, but few of the restrictions of Pascal and Modula-2.
C++ is an enhanced version of the C language. C++ includes everything that is part of C and adds support for object-oriented programming (OOP). In addition, C++ also contains many improvements and features that make it a "better C", independent of object oriented programming. C++ is actually an extendible language since we can define new types in such a way that they act just like the predefined types which are part of the standard language.
If you just use C++ as a better C, you will not be using all of its power. Like any quality tool, C++ must be used the way it was designed to be used to exploit its richness. Some of the new features include encapsulation, inline function calls, overloading operators, inheritance and polymorphism. I am not going to explain what they mean here as that would simply take me away from my purpose here, but you can refer to any good C++ book or the C++ FAQ for more information.
The first thing you need is a compiler. A compiler reads the entire program and converts it into object code, which is a translation of the program source code into a form that the computer can execute directly.
The increased popularity of OS/2 and it's latest incarnation Warp, has provided programmers with a wider selection of compilers and programming tools. Still available for free is the GNU gcc package under the name emx. Emx integrates nicely with the Extended Editor included with OS/2. It's available on ftp.cdrom.com, hobbes.nmsu.edu, and other sites. IBM provides the CSet++ 2.x, as well as a smaller, less-expensive package on CD-ROM called CSet++ First Step. Other popular compilers include Borland C++ 1.0 for OS/2, and Watcom C/C++ for OS/2 10.0, and CA-C++ for OS/2 from Computer Associates.
There have been two attempts at freeware/shareware Mac C compilers: Sesame C and Harvest. Harvest C was an ambitious attempt at a production-quality freeware compiler which was later abandoned by the author.
This tutorial contains a complete course for you to learn the 'C' computer language itself. Some knowledge, of computers and the jargon is assumed, but complicated concepts are fully explained. This tutorial is geared towards the UNIX operating system, but everything discussed here applies across all platforms. Most of the source code included here compiles under all the platforms. This is a good effort and is worth your time. Updates to this tutorials are posted to the USENET group comp.lang.c.
This is one of the most complete tutorials out there. Once again, most of the items covered here are apply across all platforms. There are some items discussed here that are DOS dependent. The tutorial includes a manual that covers all the aspects of the C language. The archive also includes a huge collection of C code that is discussed in this tutorial. The best way to learn anything is by practical application and this tutorial does just that. A payment of $10.00 is requested by the author if you find the tutorial helpful, but the payment is not required. I think you should send in the $10.00 as a lot of time and effort went into this project.
Thread is a C language help utility. It was written by a member of the U.S.D.A. Grad School faculty to help students learning the C language. Thread is a variable record-length database, together with an index, that enables the fast lookup and display of C keywords, standard library functions, and other items. There are a few important functions missing from this help utility, but it is still a pretty good resource. Give it a shot.
This is the April 94 release of one of the biggest public domain/freeware portable C code and instruction text. According to the author, the 1.1 MB archive contains over 360 files and approximately 35% of it is PC-specific. The rest of it is completely portable. There is a piece of code for every single task starting with macros to complete cut-and-paste C code solution and utilities, along with some frequently asked questions and instructional files. This archive is a must for every programmer. If you already have SNIP0493.ZIP, get SNPD9404.ZIP which is basically the 'diff' file.
The FAQ (Frequently Asked Questions) is a compilation of frequently- asked questions of the usenet group, COMP.LANG.C along with the answers. Steve's put in a lot of work and this compilation shows it. I found that the FAQ answered a lot of my questions. I even learned a lot of new things browsing through the document. I think this FAQ should should be on your computer desk right next to a good C programming book. The FAQ is posted to COMP.LANG.c and news.answers every month along with the diff version.
This is an educational learning tool which helps expedite the difficult process of learning the C Programming Language. It includes a tutorial, style guide, and interactive quiz program all integrated together in one program. The tutorial covers both K&R version of C and ANSI C. One of the biggest limitation of this tutorial is that it is only available for DOS computers.
This is one of the best C programming tutorials out there on the World Wide Web (WWW). See tutorial #11 for more information on the web and tools to access the web. This tutorial starts out with some basic ideas and then extends to some more advanced features of C. With the popularity of the World Wide Web, items on the web servers are going to be very popular. This is really a great tutorial and worth checking out. Some of the items discussed here are loops, arrays, string manipulation, pointers, dynamic memory allocation, I/O, UNIX, C preprocessor and some exercises. While you're out there, check out Ceilidh, the online C tutoring system.
This is a really nice C tutorial geared towards people on UNIX system as the title would suggest. This document introduces C by providing sample programming tasks. One of the good things about this tutorial is that all the source code included is ANSI compliant. This tutorial also includes programming exercises to aid or gauge your progress as you go through the material (answers included in back). The tutorial covers some of the basics such as functions, pointers and string manipulation followed by some programming examples to apply the items you've just learned.
There is also a section on memory allocation that illustrates the use and dangers of malloc. The section on the Make utility helped me a lot as I really don't like make and makefiles. The section of debugging is also extensive and has some great tips. The appendix of this tutorial also has a section of converting from K&R to ANSI C. Really great job and well worth the checking into.
Just like its C counterpart, this is really one of the best and most complete C++ tutorial out there. This tutorial is not for the person just starting out in programming as C++ is not an ideal first language. But if you are familiar with C or any other programming language, this tutorial will get you started with C++. All the source discussed in this tutorial is included and learning is really accelerated as you can compile the code while you are reading about it. This tutorial will assume a thorough knowledge of the C programming language and little time will be spent on the fundamental aspects of the language. Special attention has be devoted to explaining the newer additions as provided by the ANSI-C standard, as many programmers are used to the old K&R school of thought.
Wow!!! That's really all I can say about this collection of questions and answers for C++ and Object Oriented Programming (OOP). This is the complete FAQ for the Newsgroups COMP.LANG.C++ compiled by Dr. Marshall Cline. I have been programming in C++ for a few months and am far away from being an 'expert', and this compilitation helped me enormously. Once again, this is not for the person that is starting to learn C++, but if you've already taken the first step, this FAQ is for you.
The C++ FAQ has been released as a book called `C++ FAQS -- Frequently Asked Questions' by Addison-Wesley. The book is a complete re-write and supposedly has a lot of new material. Marshall Cline is joined by Greg A. Lomow as the co-author of the book (ISBN 0-201-58959-3). I am not sure if the FAQ will still be posted to the comp.lang.c++. The FAQ will still be posted in the Newsgroup comp.lang.c++, but if you find the FAQ helpful, you should really buy the book.
This is one of the award wining courses at the 1st WWW conference (congratulations Marcus. great job). One of the newest addition here is the Dorill C++ course converted to HTML. There is a wealth of information on C++ available on the World Wide Web (WWW). The World Wide Web (WWW) is a wide area hypermedia information retrieval system that gives the user universal access to a large universe of documents. One of the most popular to the Web is called Mosaic developed by NCSA. Mosaic is an Internet based global hypermedia browser that allows you to discover, retrieve and display documents and data from all over the world. Global hypermedia means that information located around the world is interconnected in an environment that allows you to travel through the information by clicking on hyperlinks-- terms, icons or images in documents that point to other related documents.
You might just want to connect to info.desy.de/general/users.html and browse. I found a lot of great items such as documents and sources on C++ and Object oriented programming, Internet groups for discussions and questions on C++, discussion of Object-Oriented Literate Programming and many other postscript papers.
This is really one of the best collection of C related items out there on the World Wide Web maintained by the Lysator computer society, an association of computer science students at Linkoping University, Sweden. Here's a list of some of the items. There is a great section on ANSI C, reviews of 3 books and a list of errata from 2 books. There is a very interesting paper called `A development of the C language' by Dennis Ritchie that traces the origin of the language we know and love today. There is a HTML version of Kernighan's historical 'Programming in C: A Tutorial' (1974) that describes an early version of C, four years before K&R. WARNING: DO NOT USE THIS DOCUMENT AS A TUTORIAL. Also included are the `Ten Commandments for C programmers' (Annotated version) and a HTML version of the comp.lang.c FAQ by Steve Summit.
This web based tutorial is intended for knowledgeable users of C who would like to make the transition to C++. This document presents an introduction to programming in C++. It is a guide for programming courses taught at State University of Groningen This document is not a complete C/C++ handbook, but rather serves as an great addition to other documentation sources. The reader should take note of the fact that an extensive knowledge of the C programming language is assumed and required.
This document continues where topics of the C programming language end, such as pointers, memory allocation and compound types which makes it a very good programming guide. I highly recommend this tutorial to any individual who is really interested in becoming extremely knowledgeable on C++ and a proficient programmer. Here is a listing of the chapters.
If you have any thoughs or comments, please feel free to e-mail me at
carpenterv@vms.csd.mu.edu
This is the second edition of the original Kernighan & Ritchie (K&R) text. This book is commonly referred to as the New Testament as it includes the modifications incorporated by the ANSI standard, while retaining the nature of the 1st edition. This book assumes that the reader has some basic programming knowledge. So if you're just starting to program and C is the first language, this might not be the ideal book. This is one of THE BEST books on C and a must have, especially if you're starting your own little programming library.
This book by Steve Kochan is absolutely the best book for anyone starting out programming in C. This is an excellent introductory text with frequent examples and good text. This book makes no assumptions about the particular computer system or operating system on which the C language is implemented. This books is written for novices and experienced programmers alike. I love this book as the comprehensive 'teach by examples' book can help you master the unique features of the C language. There is complete coverage of program looping, decision making, arrays, strings, pointers and bit operations and helpful end-of-chapter exercises. This is the book I used to learn C and it really is a great book. The K&R book is really great as a reference, but not as the first book.
Peter has written one of the greatest books to hit the computer book stands in a long time! This is not your typical C book, but is rather a fun book to read. As I told Peter, most C programming texts are really boring as all they do is describe the functions, give a abstract example and then move onto something different. This book is chock full of real world C stories and folklore, including a story about the C bug that brought down the AT&T network. I found the tongue-in-cheek attitude and real world examples/stories very, very interesting. Run, don't walk, down to your local store and buy this book. I really really loved this book, and I read most of it in one sitting. There is also a great introduction to C++ for C programmers that will get you started with C++ and Object-Oriented programming. This book is not for beginners, but is a great second book on C.
Expert C Programming is also ideal for those C programmers who want to move to C++. According to the author, the book puts the "fun" back in "functions" :)
This is a pretty good C language reference book. I am more partial to the Microsoft C Bible as a reference but this is not a bad book at all. If you're a beginning C programmer or a seasoned pro, the answers to most of C questions can be found in this one-step resource. This book presents an extensive summary of C library functions defined by ANSI and many common extensions including UNIX. This book is a must for that perfect programmer library.
This is a absolutely beginner's book. If you have never programmed before, this book is for you. No knowledge of any programming concept is assumed. I like the fact that this book talks to you at your level without ever talking down to you. This book does not try to overwhelm the beginners with a lot of technical details while emphasizing introductory principles. If you've never programmed, this is the book for you. If you are familiar with programming, I would suggest either The C programming language by Kernighan & Ritchie or Programming in ANSI C by Kochan.
This book is a must for every programmer, especially those who program in the DOS environment. The Bible organizes and simplifies the information contained in Microsoft's C library. Each function page gives the purpose, syntax, example call, includes, common uses, returns and examples. The book also has compatibility check boxes, so you can be sure your program compiles with the Microsoft C v5.0-7.0, Microsoft Quick C, Borland Turbo C and UNIX system V compilers.
Teach Yourself C++ is another great book from Herbert Schildt who is more popular for his great C books. This book is especially designed for programmers who already know how to program in C. Based on a 15-minute lesson format, this book includes a lot of exercise and skill checks to make sure your programming abilities grow by each chapter. This book is really the perfect introductory guide for anyone who already knows how to program in C.
According to my sources, this book is currently under revision. There are several items missing from this book as it was written before C++ was finalized. I still think it is a pretty nice book.
Bjarne Stroustrup is the designer of C++ and has written 2 great books on C++. This book is divided into three parts: The first part provides a tutorial introduction to C++. The second part presents a discussion of design and software development issues arising in connection with the use of C++ and the third part is a complete reference manual. With the popularity of C++, several independent distributions of C++ have come forward, but the book discusses 'pure C++;' that is, no implementation dependent extensions are used. I have been programming in C++ for a while and yet found this book very helpful. One of the best way to learn a programming language is by writing small programs relevant to the item you study. There are exercises at the end of each chapter to test/apply what you learned in that particular chapter. This wasn't the book I used to learn C++ and I only recently got it from DEC [DEC ships this book with their C++ compiler in lieu of real documentation :)], but I wish I had gotten it sooner. This is really a great book and worth every penny. If anyone has an extra copy of 'The annotated C++ reference' by the same author, drop me a line. I've already spent about $800.00 this year on books and I can't afford to spend anymore. :)
A lot of people have e-mailed me asking for recommendation for a Visual C++/MS-Windows programming book and the one I use/recommend is Using Visual C++. This book is aimed at readers who are already familiar with C++ and Windows. This book covers many programming topics that use C++ and the Microsoft Foundation Classes (MFC). This book starts with an overview of the Visual C++ workbench and the MFC hierarchy. The book also discusses the AppWizard, ClassWizard and App Studio utility. This book really lets you take full advantage of the C++ compiler and all the utilities that come with it. Microsoft provides a lot of great information with the compiler package, but I found it hard to look through 20 different manuals to find some basic information. By the time you finish this book, you will be ready to create your own MS-Windows applications. Windows programming is pretty complex, but this comprehensive guide shows you efficient and proven techniques to build powerful applications.
Another great book is Visual C++: A Developer's Guide' by Alex Leavens. (ISBN 1-55851-339-6) This book explores the comprehensive set of programming tools that come with Visual C++. This book shows you how to take advantage of MFC, OLE 2.0, add sounds to various Windows systems events and creating icons, cursors and bitmaps images.
The C++ Primer is a great book and will make learning C++ a joy. This really is one of the best books C++ book out there, but it assumes a lot of familiarity with programming concepts and a proficiency in C. Everyone I know who uses C++ recommends this book very highly. If you are interested in learning more about Object Oriented Program, you might consider buying Object Oriented Design by Peter Coad and Edward Yourdon (ISBN 0-13-630070-7)
When I first heard about the book, it thought it would just be a reprint of the electronic version of the FAQ, but I was pleasantly surprised when I got my hands on the book (Thanks Deborah) This is no mere reprint. This is a *great great* book that contains answers to about 500 questions on programming, design, analysis and testing. This book is not for beginners, but for programmers who have figured out the syntax of the language, and are looking to implement them. If you have questions like "What is a class invariant?", "How should I use exceptions?", "What happens when a destructor is executed?", then this is the book for you.
This is a very practical book that contains answers to some real-world programming questions that will really help anyone involved with software development. I just wish I had this book around when I was taking my C++ classes. Unlike other books, this book contains about 200 complete program rather than code snippets that leave you guessing about the implementation. This book is a definite jem and should be in every single programmers library. Go out and buy 2 copies of this book: One for the office and one for the nightstand at home.
This book comes with a customized version of Symantec C++ for the Macintosh. In addition, there is a coupon for obtaining the complete version of Symantec C++ at a much reduced price. I would recommend this book for those who are just beginning to program in C++; however, it does assume at least a working knowledge of C. There is a quick review of C at the beginning. Dave Mark also has a book 'Learn C on the Macintosh'. It has the same great style and comes highly recommended. Thanks Lizann Bolinger.
I welcome comments, suggestions or criticism for all the people out there on the net that read this. If you can help me make this list a little better, you will be helping a lot of people out there on the net. If you find any errors or would like to suggest any additions please feel free to email me.
The LEARN C/C++ TODAY List is Copyright © 1994 by Vinit S. Carpenter (carpenterv@vms.csd.mu.edu). It may be reproduced and distributed in whole or in part, subject to the following conditions: