Class Logistics & Content
- Catalog Description:
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.
- Class Meets: daily @ 3:30-4:45 in ITTC 328
- Instructor: J. Philip East, ITTC 315, 273-2939, firstname.lastname@example.org
- Office Hours: MWF: 9:45-11:45, 1:30-2:30
- Optional Text: Sams Teach Yourself Visual Basic 2012 in 24 Hours, Complete Starter Kit by James Foxall
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 occur 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".
General Course Plans
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—form control 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).
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:
- demonstrating Visual Studio and various VB language features
- demonstrating program planning/design and developing VB code to implement the plan
- working on learning activities and the course project
- responding to student questions and clarifying course material
- completing the initial attempt to demonstrate competency in each of the first five units.
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-
In some cases the point total will not be 14. The same ratio will be 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 program 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:
- creating a VB project with multiple forms & form elements/controls; naming the project and forms; setting/changing form element properties; establishing the start form for the project; compressing/zipping the project folder; and renaming it & attaching it to an e-mail message sent to the instructor. (This is ultimately how your project will be submitted.)
- interpreting and producing expressions using numeric & string variables, functions, operators, and form element properties and using them in input, output, and assignment statements.
- interpreting and producing Boolean expressions — Boolean & relational variables, functions, operators, and form element properties in addition to, or conjunction, with the numeric and string expressions in Unit II
- code-based conditional execution — using
Ifstatements (rather than user action) to organize and control computer actions
- code-based repeated execution — using
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.
- The first attempt will be done in class. If you miss class that day, you will need to schedule an appointment to take it outside class time.
- Success is determined by the instructors assessment of the student's overall understanding of the material.
- Second and following attempts (re-takes) require an appointment outside class time.
- Competency on the demo for Unit II is required for all re-takes of competency demos for Units III, IV, and V. It is not required for the initial in-class trials of those demos.
- Re-takes may be taken after three or more days have elapsed since the last attempt of the same unit demo.
- Re-takes are not available/allowed after the last day of classes.
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 questions 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 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 five grading elements: 1) project proposal and meeting to discuss it; 2) project check-in meeting; project demonstation meeting; 4) project report; and 5) project code submission. The project program/code submission will account for slightly more than half of the project score. Details of the the project expectations are available.
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.
Class attendance & participation
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.
Learning Activity & Extra Credit
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 "grade" the homework yourself. I will provide sample results for each activity set 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.
Instructor Availability & Assistance
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.