These classnotes are depreciated. As of 2005, I no longer teach the classes. Notes will remain online for legacy purposes

JAVA01/Thinking Like A Programmer

Classnotes | JAVA01 | RecentChanges | Preferences

Difference (from prior major revision) (no other diffs)

Added: 16a17,25

Getting real-world experience and building a resume



One of the best way to gain real-world programming experience is to assist on an Open Source or Free Software project.

Take a look around sites like SourceForge? and check their "Project Help Wanted" pages (http://sourceforge.net/people/). Find a project that interests you, take a look at the source code, lurk around the mailing lists, and volunteer any help you can.

The nice thing about helping out in a project like these (in addition to the good feeling you get from helping) is that non-trivial assistance in a project looks very good on a resume. I can honestly say the jobs I've worked at were all due to my experience in running an Open-Source project.

If you would like to help out with a very friendly project, then I would like to recommend mine: http://www.tux4kids.org/

As we saw in the previous example, in order to think like a programmer, one must learn to see even the most simple and seemingly trivial tasks in terms of a series of fundamental steps.

Details: Special attention must be paid to the details of a given problem. What is the desired goal? What possible things do we want as input? What possible things could we get (whether we want them or not) as input? What are each of the steps involved in obtaining that goal or processing that input?

Assumptions: What assumptions can we make? For most computer languages, the assumptions are that the steps we lay out must be very basic and fundamental. We cannot assume that there will be any pre-existing knowledge of the problem we're trying to solve.

All roads lead to Mount Fuji

One of the interesting things about computer programming that typically does not apply to other engineering-type fields is that programming requires the programmer to be both creative and logical. There is rarely just one solution to given problem. Instead, there are many (hundreds, thousands, millions, infinite). Some solutions may be better than others, but all are valid.

There are two different modalities when designing a program, both have their merit and use. Some languages require the use of one or the other:

Top-down programming

In top-down programming, in order to solve a problem with a computer program, the programmer must look at the big picture, decide what needs to be done, and break up the problem into smaller bits and peices. Gives a program a logical, hierarchical structure. Large routines are broken down into smaller, modular routines.

Bottom-up programming

Bottom-up programming is the opposite of top-down programming. It refers to a style of programming where an application is constructed starting with existing primitives of the programming language, and constructing gradually more and more complicated features, until the all of the application has been written.

Getting real-world experience and building a resume

One of the best way to gain real-world programming experience is to assist on an Open Source or Free Software project.

Take a look around sites like SourceForge? and check their "Project Help Wanted" pages (http://sourceforge.net/people/). Find a project that interests you, take a look at the source code, lurk around the mailing lists, and volunteer any help you can.

The nice thing about helping out in a project like these (in addition to the good feeling you get from helping) is that non-trivial assistance in a project looks very good on a resume. I can honestly say the jobs I've worked at were all due to my experience in running an Open-Source project.

If you would like to help out with a very friendly project, then I would like to recommend mine: http://www.tux4kids.org/



Classnotes | JAVA01 | RecentChanges | Preferences
This page is read-only | View other revisions
Last edited May 27, 2003 8:15 pm (diff)
Search:
(C) Copyright 2003 Samuel Hart
Creative Commons License
This work is licensed under a Creative Commons License.