CS220 - Notes and
Resources
Text: "Data Structures
With C++ Using STL" by William Ford and
WIllam Topp
General Hacker Stuff
The Jargon
File
This is the place to go to learn 'hacker-speak' if you're so
inclined. There's also a print version but the online one is
updated more frequently.
IBM
DeveloperWorks
- A great resource for developers, with articles, tutorials and links
to software.
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.
O'Reilly.Net
- An excellent
source of programming tips/tricks/articles for just about every
platform you
can think of.
Dr. Dobbs -
If you're planning on
being a professional software developer, this is a magazine you need to
know
about - plenty of great articles and tutorials. (I recommend
subscribing,
but you can get a lot of the content from their Web site if you
prefer.) In
continuous publication since 1976, this is possibly the most long-lived
computer
publication ever.
Top-Coder.com -
If you're
interested in showing your stuff, here's a place where programmers get
together
and compete in coding contests online.
Course-Related
Links
C++
Links
- A lot of resources
The
Object-Oriented Page - Another
ton of links, not specific to C++ but about OOP
A
Crash Course on STL - Just what
it says
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.
Phil
Ottewell's STL Tutorial - A
decent page with plenty of 'Life of Brian' humorous references.
A
Modest STL Tutorial - Just as
the name suggests.
SGI's STL page
- A good site with tutorial, examples and even an FAQ.
Game Development
Irrlicht - A
free, open-source realtime 3D engine. Fully cross-platform, written in
C++ and available for .NET.
Free
Game Programming Libraries and Code - Just what it says.
DevMaster.net - Online
source for game development
GameDev.net - Another
online resource for game developers.
The Game AI Page - A good
reference for building smarts into your games.
Open Source Gaming
(One of the best ways to learn how to code is by reading
someone else's code. This section is meant as a resource for a wide
variety of games that have source code freely available.)
Cube -
A basic First Person Shooter game, similar to Quake 3. What makes this
useful is that the code is freely available so you can learn how to
code a game like this yourself and even adapt the code for your own
use.
Open Source Gaming
- A nifty site devoted to open source games for multiple platforms in
various languages.
Open
Directory: Games - A page of links to open source games and game
development projects.
Home
of the Underdogs - Yet another collection of links to open source
gaming projects.
BZFlag Links - Think "Capture the Flag"
with Tanks
BZFlag Home Page - Get
the software, browse the documentation, talk to other players and
developers.
BZFlag
Project Home - A good site for game and map developers.
Developer
Documentation - An up-to-date reference to the source code for
BZFlag. Very useful for would-be game developers.
BZFlag User Forums
- Ask questions, answer questions, make friends, get involved!
BZFlag
Resources - Links to sites around the Internet for players,
designers, coders, etc.
SourceForge
Forums - Discussion boards for developers, users.
Essays
on Programming and the Profession
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.
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 7 in 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.
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.
Advogato
- This is an interesting on-line discussion forum, mainly dealing with
software development.
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.
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
- One of the best search engines out there for the technically
inclined.
igrep - advertised as the first search engine for technical people.
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.)
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 |
Problem
Solutions and other Code
|
|
|
|
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
.
|