How to keep a Programming Journal

Motivation: 

A programming journal is a great way to keep track of what you are learning.  It is a helpful place to make notes of insights and terminology and short code segments that do useful things.  It is also a very practical way for you to see how much you are doing and learning.

How to Do It:

What I do, and you can certainly do something different, but it is still useful to see how someone else does it.  I do my own journaling in three steps: 1) PLANNING, 2) TRACKING, and 3) PROGRESS SUMMARIES  IMAGINE THAT YOU'RE A PRIVATE CONSULTANT PAID FOR ACTUAL TIME ON TASK -- YOU HAVE TO HAVE A WORK LOG OR YOU DON'T GET PAID!

PLANNING:

I do planning by writing down a series of Goals that I have to or want to accomplish.  For example if I have an Assignment, say Do the Exercises in Chapter 1.  I'll start by putting down the overall accomplishment as an IMPERATIVE SENTENCE:

1) DO ALL THE EXERCISES IN CHAPTER 1.  -- Then if the Exercises are enumerated or have titles I'll just list them as Actions -- here I've just listed the exercises in the Chapter.

1.1) Create a Circle
1.2) Move the Circle around (6) -- note that I include pages numbers in parentheses
1.3) Use methods with parameters
1.4-1.6) Fool around with colors and making errors  (7). 
1.7) Make more Circles (8)
1.8) Inspect the State of an Object (8)
1.9) Put a House Together manually using the shapes available (9)
1.10-1.11) Open the Picture Project
1.12) Open the Editor and look at Picture Project Code
1.13-1.14) Read the Source Code and find the Sun and then add a second sun

CHALLENGE HOMEWORK PROBLEMS: 1.15 and 1.16 -- spend a little extra time on these because these are for homework.

1.17) Open lab-classes project and create a Student
1.18) Make more students and get their names using getName()
1.19) Create a LabClass Object
1.20-1.22) Exercise the LabClass with numberOfStudents(), and enrollStudent() and call the printList()
1.23-1.25) Add 3 students, then inspect LabClass and set the Instructor, Room, and time and enroll the students and print the class list.

HOMEWORK 1.26 through 1.32 page 16.

THIS CONCLUDES THE PLAN

TRACKING:

Now we Track the work we're doing in our journal by listing the date and time and what we're doing.  A typical example might look like:

1/26/2005 14:02 Started working on Chapter 1, Exercise 1.1
14:05 Finished Exercise 1.1 created a Circle (then check that off the Plan)
14:07 Moved my circle down a couple of times and made it invisible twice -- nothing happened the second time so I guess it just stays invisible once it has been made invisible.
... etc. KEEP DOING IT making note of what you did.
14:30 Got tired so I STOPPED and got up for some FOOD
15:00 STARTED AGAIN ... MAKE SURE YOU SAY WHAT HAPPENED AS YOU WORKED
                                               SPARSE REPORTS WITH NO DETAILS ARE UNCONVINCING.

SUMMARIZE BY ADDING UP TOTAL TIME AT END OF A WORK PERIOD
AND LISTING WHAT YOU HAVE ACCOMPLISHED.

PROGRESS:

Finished all the Exercises in Chapter 1 and the HOMEWORK, spent 2 hours and 23 minutes.

YOUR JOURNAL WILL BE A MAJOR MARKING VEHICLE FOR THE COURSE -- the Grading Criteria will be:

1) COMPLETENESS, 2) CLARITY/NEATNESS, and 3) EFFORT (as measured by total time and total scope of Journal where Scope = amount of work in the journal.  THIS WILL BE A CLUSTER. (See Cluster Grading)