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 @ 9:30-10:45 in ITTC 328
- Instructor: J. Philip East, ITTC 315, 273-2939, east@cs.uni.edu
- Office Hours: MWF: 9:45-11:45 and TuWThF 1:30-2:30
- 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-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.
I enjoy very much working on programs with students and hope you will bring questions to me. You should also feel free to discuss your 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). Copying code without substantial adaptation typically does not enhance learning, should be avoided, and is considered to be "cheating".
General Course Plans & Assignments
We/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 Visual Basic form element properties, data, variables, and built-in functions to form expressions needed to represent the basic elements of problem solutions and to accomplish manipulations of data needed to solve the problem. Understanding the data elements is critical to representing problems in a way that allows us to have the computer produce desired results. Exercises designed to help you learn about VB form elements, data, variables, & built-in functions and operations on them will be provided.
The course will be divided into five units and several weeks at the end for project work. Each of those units will have associated competency demonstrations (see discussion below). Those units will be followed by several special language features topics — form interaction, data structures/collections, files, modularization, dynamic form construction. (Most of those topics will make use of the last unit about iteration.) Early in the semester, class time will be used to: introduce key unit content & expectations, demonstrate the solving of small problems with coding, have students demonstrate solutions or ask questions on exercises, 4) review key ideas from the unit, and take the initial competency demonstrations. After the first three units, I will also use class time for developing examples involving larger chunks of code and using conditional and iterative execution of code. 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.
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.
Grading
I am using a modified mastery learning grading system. Programming essentials will be tested by pass/fail competency demonstrations or driving tests each of which can have multiple attempts to demonstrate competency. The other major grading component will be the course project. Two minor elements of grading are sharing your work on homework and attendance & class participation.
Occasionally, I will "publish" 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 trying a different approach that I hope will allow me to communicate my assessment of work using the grade assigned. When I assign scores I will use a 14 point scale, i.e.,
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-
Often the high score will be 13 rather than 14. Course grades will be based on the items indicated below. 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.
- Term project — 40%
The term project is to be completed individually or by a pair of students. If done by a pair, each individual is expected to understand all the code and be able to explain and modify the program code.
Projects will have four grading elements: 1) during the first half of the course each student/pair should have identified a project, prepared & submitted a proposal, and met with the instructor to discuss the project; 2) a second, project check-in, meeting is to occur after substantial work on the program has been completed 3) the project itself (due before finals week); 4) and a project report (to be submitted with the project code). The meetings and project report will each count about 5% of the course grade and the project code wil count for about 25%.
- Class attendance & participation (A&P) — 10%
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 (probably imperfectly, but I am open to correction).
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.
- Homework sharing — 10%
During identified homework discussion days, I will repeatedly call on a random student to share her/his work on a particular item from the homework/learning activity. Having tried something (and sharing it) is the goal, being correct is nice but not required. An alternative to having a solution is to have attempted the item and be willing/able to indicate what was tried, why, what happened.
Scoring of each sharing opportunity will be based on whether the student had something to share and my interpretation of the seriousness of the attempt to solve the item. Scores will likely not include plusses and minuses, i.e., be 13, 10, 7, 4, or 1 (or 0).
- Competency demonstrations — 40%
The competency demos will typically be pencil and paper quizzes (the first one will be computer based). Each is pass/fail and up to five attempts are allowed. All attempts must be completed prior to finals week. Each demonstration will account for 8% of the course grade. 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; compressing/zipping the project folder; and renaming it & attaching it to an e-mail message sent to the instructor
- interpreting and producing expressions using numeric & string variables, functions, operators, and form element properties
- 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
If
statements (rather than user action) to organize and control computer actions - code-based repeated execution — using
For
andDo
loops (rather than user action) to organize and control computer actions
The first attempt at competency demonstration will occur in class. All attempts after the initial in-class trial are to be scheduled outside of class. Students are responsible for scheduling all such attmpts.
Competency demonstrations do not require perfection but perceived lack of understanding or skill with respect to important ideas or multiple occurrences of not paying attention to detail will lead to the conclusion that competency has not been demonstrated. The competency demos are pass/fail but, to encourage you to do the work early and seek help, there will be a half point deduction for each retake, with the top score being 13 (an A, not an A+). The lowest non-zero score would be 10 (a B)
- Final exam
The final is required for students who work in pairs on the project and optional (for extra credit) for those who work individually. For those project partners, the final could hurt the overall grade. For those working alone on the project, the final can only help the overall grade. The exam will ask you to produce VB code for a relatively simple task involving selection (conditional execution), iteration, a file, and data in an array or list box. Sample questions are available.
Instructor availability
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.
Feedback
With computer programming, feedback about successful coding is produced by the computer. I provide practice activity that allows you to have the computer check your work. Thus, I will not check or grade programming practice exercises. Some feedback will occur during the homework sharing activity. Additionally, individual feedback and assistance is available for the asking and I highly encourage visits to office hours and e-mails for help. 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.