I like to write blog entries that expose some information or contribute positively to how I see the issues in the field of Information Science. This entry tends to be something of a gripe and therefore I feel a strong need to preface, or maybe I should say justify, my remarks. I tend to be rather demanding as a teacher. At the same time, I work hard to help students. As one student put it, “he kicked us into gear so fast I picked up the material from his tough-love attitude, enthusiasm, and extremely clear and aggressive teaching style.” Obviously, I selected a quote that I think puts me in a favorable light. By way of more objective assessment, over more than a decade, course reviews have been consistently favorable – all within the top 25% of courses rated. Equally important to me, 90% of the students indicate that they learned much more in this course than in other course they have taken. Ok, hopefully you will accept that I am not simply whining about students, but trying to express something positive about the way I would like students to approach their responsibility for learning.
A student came into my office the other day and asked if I was busy. I wanted to say “no I have just been waiting for someone to walk-in unannounced to disrupt my concentration on the rather difficult problem I was trying to solve,” but I held my tongue and replied “what can I do for you.” The student wanted to take one of my basic courses, but hadn’t programmed in a long time, and wondered if there would be much programming. I said there would be. He asked if the course would be a lot of work. I said yes. He asked if it would be too much work for him. I said I didn’t know. I asked some questions about how well he had programmed, how much he remembered, what kind of work load he was used to, etc. This went on for about 15 minutes – with the same question being asked over and over again. Basically, he wanted me to assure him that the amount of work in the course would be reasonable by his standards. I finally had to tell him that I could not assure him the course would be easy. I told him I thought he could learn a lot if he took the course. Finally I told him that the syllabus and the notes for every lecture were online for his review. He left rather disappointed. I believe he wanted to take the course because a lot of people talk about how much they learn in this particular course – it has a good reputation, but they also complain that it is a lot of work. Like many other visitors to my office, I suspect that this young man had heard that a number of students have reported that the ability to talk about things learned in my classes helps in job interviews. He wanted the advantage of having things to talk about in job interviews –– but wasn’t sure he wanted to expend the energy to acquire the knowledge. This phenomenon has led me to make a standard disclaimer in the first lecture of most of my courses. “You may have heard that some students report that talking about things they learned in my course helped them in a job interview. Please note, and I know some students who have made this claim, and I can assure you that what they are saying is “what THEY LEARNED in my course helped them in the interview.” They are not saying “the COURSE HELPED them” or “what I TAUGHT HELPED them.” I offer you an opportunity to engage in deep learning of the subject matter, so that you really understand the subject and can talk about it. If you do not internalize the concepts and principles, you will leave just as ignorant as you arrived.”
I spend between seven and fifteen hours in preparation for every three hour lecture I give, and generally speaking, in the subjects I teach, that prep time does not decrease in a second or third offering of a course – because the landscape is changing. I have, on more than one occasion, spent in excess of two days solving a problem that once solved allowed me too explain it simply and completely to students in 15 minutes. I am not bragging about having simplified the concept or complaining about the time required to distill and simplify new concepts for the classroom. That is what I am paid to do. What bothers me is that many students don’t have a corresponding perspective, i.e. the amount that I learn will be correlated with the time spent in learning. I tell students at the beginning of each course that there will be 15 three hour lectures – 45 hours. I don’t give midterms or finals, so they get a full 45 hour exposition. My expectation is that a graduate student spends three hours outside of class for every hour in class. To make the multiplication easier, I round 45 to 50 and multiply by three. They should plan on 150 hours of work outside the classroom over the term. I allocate 50 of those to reading the textbooks and other material I provide. I am a slow reader. Others are faster. I remind them that if they are very slow readers either because they don’t read much or because they are not native speakers of English, reading time may exceed 50 hours. That leaves 100 additional hours that they will need to commit to the homework, exercises, and projects. The assignments and projects that make up the course each contribute between 0 and X points to their grade. The sum of the X’s is 100. Moreover, a project that contributes 10 points to their final grade has been constructed such that it should require about 10 hours of effort. If you are really prepared, you might be able to do it in an hour or two. If you are not well prepared, it might take 15-20. If you need less time, it is because you are well prepared. If you need more time, it is because you lack prerequisite skills. These time discrepancies are not my concern – i.e. I will not make the course harder because some students come prepared, nor will I make it easier because some students are ill prepared. (I must admit that this is not completely true. Ten years ago, I devoted an entire lecture teaching html. Today, I assume students come to graduate school with knowledge of html.)
My favorite assignment in this category is the first assignment in a course on client server systems. The assignment involves correcting a thirty line-long piece of code. It is important to note that the code “worked” flawlessly. That is, they were given client software, which included the code they were reviewing. The code compiled without error, linked without error, and executed against server code I provided and ran without error. I tell the students when I give them the code that the corrections can be made with less than 100 keystrokes. (Actually, in an efficient editor, it is less than 20 mouse and keystroke actions.) Less than 10 percent of the students achieve a perfect score, most get a little more than half of the points, and some get less than 4 out of the ten points. Some students claimed to have spent well in excess of twenty hours on the assignment. My in-class correction of the code, along with a DETAILED explanation, takes less than 15 minutes. This assignment is a very extreme example of a prepared mind versus an unprepared mind struggling with a problem. In general, I can do one of my assignments in about half the time I calculate for students. I have no doubt that for some it takes twice as much as the average time calculated. (As a footnote, the client server assignment had logical errors that normal use never triggered. The point of the assignment was to emphasize the importance of flawless programming in an environment where hackers exploit logical errors in code that needs to run 24X7 in a hostile environment. Getting the code to compile, link, and execute is not the issue. Writing correct and secure code is the issue. Footnote to the footnote, I am always flabbergasted to learn that the current generation of IDE based programmers seldom comprehend the difference between compiler, linker and runtime errors. Further, they seldom have a good mental model of the types of libraries and the different compiler and linker options – they don’t have much hope of understanding how paragraph alignment of variable storage can impact buffer overflow errors! )
To return to the question at hand – i.e. “Will this course be a lot of work?” Wrong question I think. A much better question would be “what will this course give me an opportunity to learn?” The answer to the first question is what most students want. I would like students interested in taking my courses to think about the cost-benefit ratio of the course. The amount of work in any course is a function of your preparation to take the course. Courses cover material from a beginning point defined by the course description and the explicit, assumed, and implicit prerequisites. Explicit prerequisites are those listed in the course description. If the course requires “Data Structures”, data structures will be used, but will not be taught. The assumed prerequisites are those that may have been stated elsewhere. For example, to be admitted, graduate students must have a structured programming language. Assumed prerequisites are things like the ability to understand English; to read a textbook, reference manual, journal article, and program; to calculate arithmetic expressions and statistical measures; to follow an algorithm or logical inference, etc. The amount of work you will do will reflect that required by a solid graduate course plus all of the work you will need to do to make up for the deficiencies in your prior education. I am sorry if that sounds harsh, but we need to draw the line somewhere. Otherwise we find ourselves in a position where advanced graduate courses need to teach basic sentence construction, addition and division, and common sense logic. That leaves little time to discuss the implications of procedural, object-oriented, and declarative programming languages or the vagaries of regular expressions and the XML Path language. I look forward to seeing you in my courses and hope they will provide a productive framework within which you can learn some things that will serve you well in your professional career – beginning with your first job interview.