A good question is never answered.
It is not a bolt to be tightened into place
but a seed to be planted and to bear more seed
toward the hope of greening
the landscape of idea.

--John Ciardi
I have prepared the following “secrets of success” for your edification. They are not secrets in the sense that they are hidden; rather, they are secerets because they are too often ignored. Attend. These apply specifically to courses that I teach but many of the suggestions apply equally well to any course you might take. Think of my suggestions as mindset issues regarding how you approach a course, and pragmatic techniques for how you progress through a course. In the terms of John Wooden, these are simply effort and attitude -- that which you have control over.

Your Approach

You can predict your level of success in a course based on your attitude and expectations at the start. To the extent that you are able to improve your mindset going into the semester you will significantly enhance your outcome.

Look for the transformative

If this class is worth taking, it is because of the ways it will change you. Expect and anticipate change, keeping in mind that change is painful. The more you look for and are open to occasions for transformation, the more deeply those occasions will enrich your educational experience.

Cast out fear

“Fear is the mind killer.” The only failure worth fearing is the failure to learn! Fortunately, you have control over what you learn from a given situation or experience. This applies far beyond college courses and the grades you get in them.

Plan to spend time

Make peace with the fact that my classes are often challenging and will require significant amounts of your time. The “average” college course requires between two and three hours of outside study for each hour of class time. As an average, some courses will require less; some will require more. Mine tend to require more. Also as an average, some students will need less time and others more. It is your responsibility to assess the time you need for each class you take and then to allocate your time accordingly.

Your Practices

Follow instructions

This simple advice will correct 70% of all problems students encounter.

Treat yourself well

Get plenty of rest. (Follow this instruction.) In addition to sleep, eat well and exercise. You might be surprised to find that your concentration and clarity will be markedly improved.

Ask questions

Possibly the most important skill you can acquire is that of formulating good questions. Good questions frame a problem such that sometimes the answer is obvious simply by asking the right question. Skillful question asking will, by repitition, reduce problems to manageable or trivial ones with straight-forward solutions.

Start assignments early

Or more generally, manage your time well. You will save yourself untold grief if you start assignments the same day they are announced. Starting early allows clarification questions to surface early and gives you a time buffer against the deadline when you encounter unexpected obstacles. You should also budget your time and make adjustments if you find yourself spinning your wheels. By allocating a fixed amount of time for each of your classes, you can keep your academic program on a steady track. An added benefit of a time budget is that it helps inform you when you are spinning wheels -- getting nowhere. When you find this happening, you must try something different. A progression of tactics would include but not be limited to: formulate a question that when answered would get you unstuck, try a different approach to the problem, try a different problem altogether, or ask for help from a peer or professor.

Eliminate load/compile and runtime errors from submitted work

Do not submit programs that will not compile or run. It is better to have a solution that runs with partial functionality and stubs with comments than a “complete” solution that is completely non-functional. If you have an error that you cannot correct by the submission deadline, comment out the offending portion of code (as minimally as possible) and include an explanatory note.

Submitting assignments

(These instructions apply to homework exercises, project deliverables, and online exams.) In addition to addressing the functional requirements of the assignment, you should attend to several details when preparing your work for submission. First, make sure you include and complete(!) a standardized acknowledgments header as comments at the top of your file. For some classes, you will be given a standard template that you should include at the top of every submission. At the very least, this header must include (1) your name, (2) assigment identifier, (3) the name of each person or source from which help was received together with a description of the help received, and (4) the name of each person to whom you provided help together with a description of the help given. Failure to include and complete this header will result in a zero grade for that assignment.

Second, follow the submission instructions for the assignment. Usually, this will involve saving your submission in a file that includes your Westmont email ID as well as the assignment ID. For example, Eva Bailey might be instructed to submit a file “ebaileyHW1” for her first homework assignment. On other occasions, you will need to create a tar or zip archive (never submit a rar archive -- you will get zero credit!). In the case of creating a tar or zip archive, be sure to first create a folder named according to the assignment instructions and then create the archive so that the named folder is created when the content is extracted from the archive. (Do not use files or folders with generic names such as “homework” or “project1”.) Failure to follow instructions will lower your grade.

Study groups

Given that much learning takes place socially, you should not be surprised that study groups can be a highly effective tool for learning. For a difficult concept, it only takes one member of the group who does understand it to benefit all of the group. Even if no one person fully understands the concept, it may be possible to assemble a complete picture from the partial understandings in the group.

Do consider working in a study group whether you feel comfortable with the material or think you are drowning. Even in the case where you understand a concept or reading adequately, encountering a different perspective or understanding can provide significant added depth to your own understanding. Also, it is well known that explaining something to someone else improves one's own understanding of the topic in question.

how to do it

Study groups work well in many disciplines, but the form they take will vary accordingly. In traditional seminar courses, students come together having read some material prepared with questions and reflections. In content memorization courses, students will sometimes quiz each other on facts and figures. In introductory computer science courses where programming is a primary focus, students might work individually on their assigments but do so together in the same space. When questions come up, someone probably knows the answer or can suggest a strategy for moving forward.

what to avoid

The danger in a skills-based course such as introductory computer science (but still relevant in other contexts as well) is that a student relies on a study group and avoids the work of actually learning. Another pitfall is to divide the assignment among the members of the study group, thereby reducing the work each has to expend, but also reducing the learning that each appropriates. For this reason, the assignments and projects I give are not collaborative efforts unless explicitly specified as group assignments. See my advice and warnings about copying code in the context of CS courses. In short, never copy code from a peer. Do not forget to acknowledge the help you give or receive on an assignment.

Utilize help sessions and office hours

From time to time, TAs or I will facilitate help sessions; take advantage of these gatherings. Help sessions are like study groups with a bit more structure and a higher probability of having at least one person who can answer questions. But remember that like the well-functioning study group, help sessions provide a pool of knowledge that can be drawn upon -- not a public problem solving episode that can be observed and recorded.

My regular office hours provide another opportunity for you to obtain assistance. However, for both office hours and help sessions, do not plan to have someone else do a problem for you. For example, it is unacceptable to say something like, “I don't know how to do number 5. Can you help me?” Technically, “Can you help me?” is a question, but it is not the best question. My answer would be “yes.” You would then need to formulate a more specific question describing what you do understand about the problem, the step you are stuck on, and a specification of what information would get you unstuck. That would represent a good question.

Get to know your professors

Your professors are extremely busy but do not let that discourage you from attending their office hours or even asking them to join you for lunch! At a small Christian liberal arts college such as Westmont, the faculty are here because they care about students and students' growth -- intellectually, spiritually, personally. Faculty teach classes because they want students to learn; if that learning requires time beyond class either during office hours or over lunch, we will be glad to help. That said, do not expect your professors to give you a private tutoring session because you were busy reading facebook or skipped class altogether.

At Westmont, there is a little-known program, Take a Prof to Lunch, that is woefully underutilized. (And yet graduating seniors report that they desired more opportunities to get to know their professors. Go figure.) Talk to your professor and invite them to join you for lunch; then visit the link above and complete the online form.

Ask questions

Did I mention that the ability to ask the right questions is possibly the most important skill you can acquire?

Summary tips

Most people find that they cannot write a program as a stream of consciousness. (I'd claim that no one can write a good program that way.) This is especially true of students as they are first learning to design programs. You will save yourself significant frustration if you follow several guidelines.