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
|
|
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
.
|