CS106 - Notes and Resources

Texts: "An Introduction to Programming with C++" by Zak

"C++ Programming: Program Design Including Data Structures" by Malik


General Hacker Stuff

IBM DeveloperWorks - A great resource for developers, with articles, tutorials and links to software.

The Jargon File - A great collection of geek-speak which makes for very entertaining reading. Particularly good if you're interested in how the industry has grown and changed since it started.

Dr. Dobbs Journal - the Web site for the best general-interest programming magazines around.  In addition to posted articles, opinion pieces and essays, they also have a collecition of links to software tools, techniques, tutorials and other programmer resources.

Object-Orientation Tips - A neat page with a ton of information about OOP

Guru of the Week - a regular series of C++ programming problems created and written by Herb Sutter.  (NOTE:  These are tough problems.)

TopCoder.com - If you're feeling particularly cocky about your coding skills, here's a site that offers programming contests where you can participate online and win prizes.

The Quines Page - A quine is a program that produces as its output its own source code. (I'll let you ponder that for a moment.) There is an ongoing, informal competition amongst alpha geeks (and would-be alpha geeks) to see in how many programming languages a quine can be written. Good-natured nerd fun.


Essays on Programming and the Profession

Licenses Down, Services Up - An interesting article from the weblog  Skipping Dot Net about the future of the commercial software industry.

The Programmer as Movie Icon - A very good essay that tries to address how programming is taught versus how it is practiced.

How to Interview a Programmer - This is an discussion with several industry veterans about techniques they use to find the best qualified programmers for a project.

The Lost Art of Computer Programming - An intriguing page of essays by a professional programmer who became one "by accident".

How to Think Like a Computer Scientist - A book that attempts to live up to its title. The language used is Python but the lessons are easily applied to other programming languages.

How to Write Unmaintainable Code - This tongue-in-cheek essay is a guide to writing maintainable code and is an amusing and informative read.

Epigrams on Programming - A page of one-liners that offer sometimes humorous, surprisingly deep observations on the science and profession of computer programming . (Example: "There are two ways to write error-free programs; only the third one works. ")

Deleting Code - A deceptively simple essay on what to do with code you're no longer using. (It's more subtle than you may think. A recommended read. )

The Pragmatic Programmer - Homepage of the book of the same name, this site also contains excerpts from the book as well as essays from the authors on the profession. Highly recommended.

The Tao of Programming - A well-done, tongue-in-cheek look at computer programming in terms of Eastern mysticism.

Quotes on Program Development - Like the title says....

Code and Personality - How to tell what kind of person you are from looking at your code.

Problem-Solving Strategies - Not specifically about programming, but a good set of rules-of-thumb for dealing with technical problems.

How to Be a Programmer - This is a link to a 230 KB PDF file that summarizes the technical and non-technical things that the author (a Ph.D in Computer Science and professional programmer with 20 years of experience) wishes someone had explained to him at the beginning of his career. Good, clear writing with useful real-world tips.

Don't Live with Broken Windows - An interview by a pair of professional programmers (The authors of "The Pragmatic Programmer" seen above) about "software craftsmanship and the importance of fixing the small problems in your code, the 'broken windows,' so they don't grow into large problems. " This is Part 1 of a ten part series.

Orthogonality and the DRY Principle - Part 2 of the series - Andrew Hunt and Dave Thomas continue with their thoughts on program design. (Note: DRY stands for Don't Repeat Yourself)

Good Enough Software - Part 3 in the series - This interview is about "the myth of bug-free software".

Abstraction and Detail - Part 4 in the series - This interview discusses what the authors mean when they say "Put abstractions in code, details in metadata."

Building Adaptable Systems - Part 5 in the series - Reversible design decisions, making systems configurable

Programming Close to the Domain - Part 6 in the series - The benefits of coding in a language related to the business domain.

Programming is Gardening, Not Engineering - Part 7in the series - The reasons coding is not a purely mechanical process

Tracer Bullets and Prototypes - Part 8 in the series - The importance of getting feedback during the development process

Programming Defensively - Part 9 in the series - Programming defensively against your own and other's mistakes.

Plain Text and XML - Part 10 in the series - The advantages of using plain text in your application development.

Course-Related Links

Object-Oriented Programming in C++ - A page containing information about "you-know-what"

C++ Links - A lot of resources.

The Object-Oriented Page - Another ton of links, not specific to C++ but about OOP

More C++ Links - A good page with tons of good links

Objective Viewpoint - An online magazine put out by the ACM (Association for Computing Machinery) with a lot of good articles on
OOP.

Free C++ Books - Part of an online project offering free books for a variety of technical subjects.  The books are downloadable in plain text, PDF or HTML format.  They're adding new books all the time so this is a good place to start building your reference library on the cheap.

Organizations/Projects

Mozilla - The Mozilla project is producing the next-generation Web platform.

OpenOffice - The OpenOffice project is producing a free, open-source competitor to Microsoft Office.

Virtual Network Computing - Remote desktop software similar to PC-Anywhere, except it runs on every platform you can name and it's free.

General Resources

ComputerWorld - If you want to see how computers are really used in real businesses, this is a good source. Essentially an offshoot of Computerworld magazine (available as a free subscription if you can convince them that you influence buying decisions where you work) , this site is pretty platform independent and has a decent career section, as well as a 'gossip' column where actual IT folk write in anonymously and describe the various ways that management can screw up the techies.

The O'Reilly Network - From one of the top publishers of computer books, this site has articles, tips and how-tos on a wide variety of computer topics.  Highly recommended.

Advogato - This is an interesting on-line discussion forum, mainly dealing with software development. Kind of geeky and fractious, but there are a few nuggets of gold here.

Artima - Another good source of technical information for developers, specifically object-oriented developers.

Dr. Dobb's Journal - This is the web site of the longest-running programming magazine in existence. Good essays, articles and programming resources.

CPUniverse - If you were thinking of going into contracting or consulting, this is a great site. Affiliated with Contract Professional magazine (not a free subscription but well worth the cost) this site has tips on the hottest skill areas, what it's like to work in different parts of the country and even how to negotiate a contract and handle your tax situation. There's even a free weekly e-mail newsletter.

SoftPro Books - This is an excellent source for computer and networking books. You can order online or go to one of their local stores. (They have one at Yosemite and Arapahoe in Englewood and another in Boulder.) You can usually get 10-20% off the list price and if you join their 'frequent shoppers' club (it's free) you can get additional savings. 

GoCertify - A nice site that has information on just about every technical certification you can get -- who offers it, what you need to get it, where you can get training and where/how you can take the test.

BrainBench - Another certification site, but this one does their own online certification exams in a wide variety of technical subjects.

Yahoo! Briefcase - 30 megabytes of free online storage.  Floppies are awkward and obsolete! (Requires free Yahoo! account)

Open Source

Freshmeat - A prime source for finding or posting open-source software. If you're interested in learning from others, this isn't a bad place to start.

Sourceforge - According to their home page "the world's largest Open Source software development website". You can start a project here, join an existing one or just check out the scenery.

Open Source Games - From the Open Directory Project, a listing of links to open-source games and related projects.

Online References

Online Computer Dictionary - Stuck trying to figure out an acronym or computer term? This is a good site to look it up. 

Google - THE best search engine out there for the technically inclined. 

FAQs Online - Here's the one-stop shop for looking up Internet FAQs (Frequently Asked Questions) and RFCs (Requests For Comments). 

Just for Fun

Ubersoft - A funny comic strip about a mythical software/OS vendor located somewhere in the Pacific Northwest....

User Friendly - Yet another comic strip that looks at the funny side of computing.

Computer Stupidities - This site collects actual dialogues between real users and real tech support folk. The range of misunderstandings and confusion is frequently hilarious.

Peter's Evil Overlord List - Thinking about a career as an Evil Overlord? Think you have what it takes to be the next Darth Vader? Check out this site for a collection of SuperVillain Do's and Don'ts including 'My ventilation shafts will be too small to crawl through'.

The Voice Actor Page - Want to know who does the voice of Larry 3000 on Time Squad?  Find the answer to this and many more questions about the men and women who do the talking for your favorite cartoon characters.  Search alphabetically by show title or actor name.  (By the way, Larry is voiced by none other than Mark Hamill.) 

Villian Supplies - Planning an evil scheme to take over the world, but need parts for your death ray?  This hilarious site has entries for everything from henchman to hidden volcano lairs.

Stupid Plot Tricks - Expanding on the Evil Overlord lists, this contains lists of rules for henchman, good guys/gals, bad guys/gals and even sidekicks.  Very funny read.

Insultingly Stupid Movie Physics - This site examines many popular movies to see if the action is in line with real physical laws.  An interesting, entertaining and even educational read.

The Invisible Library - Dedicated to books that don't exist but should.
 

Notes
Study Guides and Misc.
Source Code/Solutions
  • Course Syllabus

Zak Notes

Malik Notes

DISCLAIMER: The views expressed on this site are those of the author and are not necessarily those of his employer, Westwood Technical College or its affilliates. This material is intended to supplement the class lectures and text and is not required to complete the course.

You can e-mail me here