Programming using the language Visual BASIC. Broad coverage of language syntax, programming practice, and programming problems appropriate to the novice or end-user programmer using a personal computer.
The goal of this course is to prepare professionals who can program not professional programmers. It has no prerequisite and will be taught for non-CS majors who have an interest in learning to program or anyone specifically interested in VB. The course does not count toward the computer science major but is reasonable for majors to take if they have not yet completed our data structures course.
My primary goal in this course is that all the students learn to (become capable of and willing to) write programs to solve problems in their lives when/if a program is a reasonable problem solution. Learning occurs in the head/brain of the learner and requires actively engaging with the information and tasks to be learned. In this course, if you complete the tasks assigned, the information you need to learn will be learned as a side effect of carrying out suggested tasks.
Pair programming is recommended for all students. (According to WikiPedia) Pair programming is a "software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently." Having two people working and learning together should reduce frustration and time needed for learning. In addition, pairs should also feel free to discuss their work with classmates and even friends who know nothing about programming (just talking through what you are trying to do will often help you solve a problem). At times, however, understanding may not come. When that happens send or bring your questions to the instructor!
Be aware that there is a lot of code available on the Web. However, using it must be done very carefully if at all. Merely copying the code and using it does not result in learning for novices. Copying code without substantial adaptation should be avoided, and is considered "cheating".
I use a problem-centered approach to programming that addresses program development in context rather than focussing on the various language features separately. However, initial activity will have to focus on very small "problems" to allow learning of the basics of Visual Basic—window form controls and their properties, data, variables, built-in functions and program input & output. Understanding these data elements and actions is critical to representing problems in a way that allows computer programs to produce desired results. Exercises designed to help you learn about VB form elements, data, variables, built-in functions; mathematical & Boolean operators, and using them for program input, output, and assignment will be provided. Once these elements are learned progressively larger problems can be solved and eventually moderately large problems (like your project) are feasible for you to attack.
The course will be divided into six units with the last several weeks devoted to project work. Each of the first five units will have associated competency demonstrations (see discussion below). The sixth unit will be address additional topics necessary or useful for the projects, e.g., form interaction, data structures/collections, files, modularization, dynamic form construction.
It is impossible to communicate everything (or even most of what) there is to know about the Visual Basic language and its myriad controls and properties in a single semester class. Class examples, the text, and independent seeking of information should provide more than enough knowledge to design, code, and debug what you develop. Class time will be devoted to several purposes:
A major goal of the course is that you be able to identify a course project of your own choosing, represent the problem and identify a solution, produce the code to implement the project, and understand the code used. We will use several sample problems as examples in the process of learning to program. You should begin thinking immediately about what you want to use as your class problem/project.
Occasionally, I will "publish" an anonymized version of the spreadsheet grade book to allow students to check for recording errors. I have experimented with all kinds of grading scales. This semester I am using approach to communicate my assessment of work using the score assigned. When I assign scores I will use a 14 point scale that clearly communicates the grade.
14:A+, 13:A, 12:A-, 11:B+, 10:B, 9:B-, 8:C+, 7:C, 6:C-, 5:D+, 4:D, 3:D-, 2:F+, 1:F, 0:F-
Grading will mostly look at whether the expectations/specifications were met and, when appropriate, the level of understanding and skill demonstrated. Each assignment description will include additional information on how it will be assessed/graded.
The course will have four grading components—competency demonstrations, a final exam, several project-related activities, and attendance & participation. Attendance & participation will count for 10 percent of the course grade and the other elements will each count 30% of the overal grade. Each is discussed more fully below.
I am using a modified mastery learning grading system. Use of the programming environment and the various programming essentials will be assessed by pass/fail competency demonstrations or driving tests. Most of the demos/quizzes are pencil & paper exams in which you show what is in your head with respect to programming. Each demo can be repeated with only a very slight penalty (to encourage getting it done early). This avoids penalizing students who need more practice to learn. Learning activity will be assigned to provide the practice needed to learn. If you do not do the learning activity, you are unlikely to learn and unlikely to demonstrate competency.
The competencies identified for this course are:
Ifstatements (rather than user action) to organize and control computer actions
Doloops (rather than user action) to organize and control computer actions
The taking and re-taking of competency demos will be governed by the following guidelines.
Being pass/fail in nature, the competency demos do not lend themselves to traditional grading (or to my non-traditional grading system). The total for the competency demos will be added into the overall score total (used for grade estimation) so that one missing competency demo would equate to a B for that part of the course, missing two would equate to a C-, missing three would equate to a D- and missing four or all five would equate to an F & 0 respectively. This is only for this part (30%) of the overall grade. If other aspects of the course are done extremely well, they can compensate for poor competency demo performance. But it is quite difficult to do the other parts well if you cannot demonstrate competency with the simple programming basics.
The final exam will include several kinds of questions. Some will be similar to what will be seen in the competency demonstrations but with no particular problem context. Several questions will involve code that manipulated data in arrays. One question will be similar to those in the document showing sample large questions. Some of the other items will be multiple-choice and some will be more open-ended.
The final exam will count for 30% of the overall grade for the course. Scoring will use the 14-point scale discussed above. Feel free to ask questions about the final exam. I will try to answer your questions without telling you precisely what the exam entails.
The course project will have four grading elements: 1) project proposal and meeting to discuss it; 2) project check-in/demonstation meeting; 3) project report; and 4) project code submission. The project program/code submission will account for about half of the project score. Details of the the project expectations should be available shortly and then throughout the course.
You are encouraged to find a partner and work on the project in pairs. This should make for better learning with less frustration. Keep in mind the instructor is available for consultation on any aspect of the project. Start thinking about project possibilities immediately and seek a partner to work with.
Attending class usually has a big impact on student learning (whether it counts as part of the grade or not). Roll will be taken and participation in class through discussion and questioning will be noted and cause an addition to the base attendance score. Showing up on time, seeming to pay attention, and staying for the whole class period merits a score/grade of B- (9 points). Engaging in class discussion, asking questions, etc. should raise scores. Contributions deemed to be important will be cause for greater increments to the A & P score—disagreements with the instructor and raising issues usually fit the "important" category of participation. Arriving late, leaving early, napping, web- or phone-surfing, etc. will result in lower scores/grades.
Please do not use your cell phones during class! Doing so will substantially reduce your A & P score.
As noted above, there will be learning activities for each of the five units of the course. You are encouraged to work on the learning activities with your project partner. You can think of the learning activities as ungraded homework. The computer provides information that allows you to check the homework yourself. I will provide sample results for most activity sets to facilitate your checking for correctness. If you wish additional feedback or need assistance, please contact me.
If you wish, you may submit, for extra credit, your program code and a log of the results of running the programs for Units II-V. Instructions for doing so will be included in the assignments. Extra credit will be no more than 5%, i.e., the highest possible point total in the course is 105%. Any such submissions must be completed by the due date for the assignment.
Also, I intend to provide some "how-to-do-it" examples of code. If you have a topic for which you'd like to see one way to accomplish a task using VB code you can submit the idea for some extra credit. Be sure to fully describe what you are after and specifically what you want the code should accomplish. Feel free to come talk to me about any such ideas.
I have lots of office hours and am usually available much of the rest of the day except the hour or two before classes. I enjoy talking with students and working through their difficulties. I am usually fairly responsive to e-mail questions also. Please contact me when you are having difficulty or just want to talk.
When you encounter problems, work on them for a while but after 20-30 minutes of no progress, seek help from me, a classmate, the text, the Web, or a knowledgeable friend (talking through the problem sometimes lets you find the difficulty). If you contact me by e-mail, describe what is happening and copy & paste your code into the message.
The planned schedule is provided below. Hopefully it is close to the reality that will occur.
Sometimes we tend to equate time spent with the grade we should receive. Do not fall into that trap. The quality of work is more important than the quantity of work or time spent (though time spent indicates something of worth). Also, keep in mind the rule of thumb that says you should spend about two hours outside of class for each hour of class time. If you feel my assignments require substantially more time than that for multiple students, please let me know.
If you know in advance of an extended absence, notify me and we will plan how the absence will be handled. For unforeseen absences, with good reason, contact me as soon as you return to arrange for making the work up and avoiding interference with other studies.
Code is often available via the web and you have been encouraged to discuss your work with others. I encourage students to work togethe, both working to fully understand each problem & solution. Copying and using code or prose without attribution is considered to be plagiarism—don't do it! Even with attribution, using copied code/prose beyond a small amlount without substantial adaptation is considered to be academically dishonest—don't do it! A good rule of thumb for my class is that you can show/see and discuss code but should use someone else's code only if: 1) you fully understand it, 2) you type it by hand rather than copying and pasting it, and 3) provide attribution of its source. Copying prose is not allowed at all except for quoted and cited material used to make your own point.
If a student has a disability that qualifies under the Americans with Disabilities Act and Section 504 of the Rehabilitation Act and requires accommodations, he/she should contact Student Disability Services (SDS) for information on appropriate policies and procedures. SDS is located on the top floor of the Student Health Center—phone (319) 273-2677.
Do not use cell your phones in class. If an emergency arise you may answer a call. Computers, etc. may be used during class time only for reasons directly related to class activity. If you have to hide activity from the instructor or peers, it is not okay (so don't do it).
I encourage you to use the Academic Learning Center for assistance with writing, math, science, and college reading and learning strategies. For more tutoring information, go to unialc.uni.edu/tutor-services or visit the office located in 008 Innovative Teaching and Technology Center (ITTC).
Unfortunately, the Learning Center does not have Visual Basic programming tutors. And, normally, neither does the Computer Science department. If you feel the need for a VB tutor, please contact your instructor. He can act as a tutor or try to find one for you.