Bill Pringle - Bill@BillPringle
(for those who prefer "Headline News" to a newspaper :^)
My goal, when teaching a class, is for everyone to get an A. That seldom happens, but it is always my goal. Your job, as a student is to do the best that you can. My job, as a teacher, is to provide you with the skills and tools to master the subject matter. If everyone gets an A, then we both did good jobs. If everybody gets poor grades, then I probably didn't do my job.
I will do everything I can to help you earn an A. That is why I keep asking if anyone has any questions, encourage you to let me know when you don't understand something, etc. If you don't like to ask in front of the class, talk to me during the break, after class, or send e-mail. If you want, you can get a friend to send me e-mail so that I won't know who is asking the question. As I said, I will do everything I can to help you earn and A. However, I will not give an A unless you deserve it.
There is no question you can ask that will make me think that you are stupid. Please read the previous sentence several times. There is only one way you can make me think that you are stupid. And that is if you are stuck on something for a long time and don't ask for help. If you knew all the answers, you wouldn't be taking the course.
It is important to realize that you are not in competition with your fellow students. In fact, just the opposite. That is especially true when working on group projects. The only way for you to do well in such a course is for everyone else on your team to do well. If another team does well, that doesn't hurt your team. If all teams do A work, then all teams with get an A. Don't be afraid to discuss your efforts with class members on other teams. Don't be afraid to ask or give advice to the other teams. You often learn more when you are explaining things to others than when you are simply thinking about things yourself. I believe that it is impossible to teach something to somebody else without learning something in the process. So, it is to your advantage to share what you know with others.
So work with your fellow students, not against them.
I am available to help with any and all problems you might be having in the course. This includes giving you hints on where to look, suggesting things to try, and even writing some code for you if needed. But you have to ask first.
I get very frustrated when the last day of class comes and some student states that they tried to do something but couldn't figure out how to do it. They lost out on a chance to learn by not asking. Don't make the same mistake. If you are stuck and can't figure out what is wrong, what to do next, or whatever, send me e-mail or ask me in class. I may not always know the answer right away, but I can at least give you some advice.
I prefer getting e-mail from students rather than being asked in class. The reason is that you can send e-mail whenever you have a question or a problem, and I usually get back to you within a day. I always check e-mail at least once each evening. If you send me e-mail sometime during the day, I will almost always send you an answer that evening. If you don't ask until the next class period, you're wasting time waiting.
Some students are surprised to find that most of the sample code on my web site are old-fashioned console (DOS) type applications. There is a good reason for this. They work.
For example, the split_fields function was written in the late '70s or early '80s. It hasn't changed. In fact, if you look at the source code, it is the old K&R (Kernighan & Ritchie) style C code. That routine was written before ANSII C was created. It works, and there is no need to change it.
The Visual Basic sample code, however, constantly changes. Every time Microsoft comes out wth a new release of VB, I have to test my code against the new compiler. Things change from release to release, and so the code has to change with most new releases.
There is another reason for a lot of console based code. And that is that I prefer function over form.
I teach an introduction to programming course for Continuing Education. I have taught it using QuickBasic, C, and Visual Basic. I only tried Visual Basic for a few semesters and then gave up. I found that some students were spending more time deciding on a color scheme then they were on implementing something useful for their program. Too often people get caught up using technology just because they can, instead of because it serves some purpose.
When you are working on your program, please remember that you will be graded on how well you understand the course material, not on how cute your program looks.
Let me give you a good example. During Programming Languages Concepts (CSE428) one team worked on a program to import a web page into an Excel spreadsheet. Each day, as part of his regular job, one of the members had to cut and paste information from this web page and insert it into Excel. The group wanted to automate this process. They would use a browser to display the page, then save it onto their hard disk. They then wanted to run a program that would parse the HTML file and import it into Excel.
They wrote four version of the program: APL, C, C++, and VBA. They liked the VBA version because it was easiest to implement, and had the nicest user interface.
However, had they tried Java, they would have found out that they could open the web page directly without using a browser. By using a scheduler program they could execute the program in the middle of the night without anyone around. When the guy came in each morning, he would find the latest file ready to import. The program would have no user interface, but it would also require no effort on the part of the user. Which do you think is the best version?
By the way, this team wrote excellent group and individual papers, so they all got an A for the course. You don't get penalized for making mistakes; just for not learning from them.
When my kids were little, there were two children's shows that they watched: Sesame Street and Mr. Rogers. Sesame Street has rapid-fire segments that help kids learn lots of facts. Its influences can be found in MTV videos, Headline News, and the use of sound bytes and photo-ops to elect politicians. Mr. Rogers is different. He stresses more how to think and how to make good decisions rather than learning lots of facts. Both are good shows, and my kids & I loved them both.
I tend to be a "Mr. Rogers" type of teacher. I'm really not interested in you learning a lot of facts, I am more interested in you understanding the subject matter, learning how to think, and making good decisions.
For example, if I am teaching about data structures, I don't really care if you know how to build a linked list. What I am interested in, however, is that you understand what a linked list is, how it can be used, its strengths and weakenesses. I want you to be able to understand how to use data structures to solve problems. If you need a linked list, you can find several examples on my web page. Look them over, decide which one is best for you, and use it (or modify it) to solve your problem.
The project teams that tend to do the best are the ones that take advantage of the resources on my home page. You tend to learn more by using a set of tools than trying to build a set of tools. You only have so much time to complete your project. You can spend it trying to re-invent the wheel, or by using pre-built tools to build something new. Take advantage of whatever resources you can obtain.