Educational Philosopy
I have been teaching at the college level for over 20 years at three different institutions of higher learning. Yet I have not been able to escape the influence of the much-maligned lecture. I continue to use the lecture because it is an effective means of communication. However, it is not the only effective means. The traditional lecture, textbook, and solving problems with pencil and paper approach is ripe to be supplemented with a number of alternatives.
I have endeavored to supplement these basic techniques with other useful methods.
In programming classes I always use out-of-class programming assignments; in most classes I use group exercises and wherever I can I use online simulations such as Java applets. Those classes that have some content in ProgrammingLand MOO also use the interactive exercises that are there. I use tests and out-of-class exercises for evaluation.
I also maintain full-service web sites for each class. Each web site has the usual important information, including the syllabus, announcement of the next test, assignments and related links. These sites are typically updated more often than weekly.
Subjects taught at Valley City State University
Computer Science
- Assembly Language
Assembly language is one of the most difficult languages, both for the learner and teacher.
Curt has taught CS 375 during the Spring semester as part of his regular course load. This has been using Intel X86 assembly language with WinTASM and Turbo Assembler. This class was renumbered from 375 to 350 in 2000. At DMACC he also taught S360 Assembly language, also known as BAL.
- BASIC Programming Language
Curt has taught BASIC and Visual BASIC several times at VCSU as well as at DMACC. Unfortunately, he has only disdain for it as a programming language. The CS BASIC class was removed from the catalog in favor of Java.
- C++
Curt's favorite programming language is also taught in his favorite class, CS 160. The CS 160 class is taught every fall and the followup class CS 161 in the Spring. Most of his programming is in C++. In his first year at VCSU, he changed the programming language from Pascal to C++ for these classes. The CS 160/161 classes have been the focus of considerable research and developmental effort. The Programming Land MOO has been used in this class for several years and has functioned as the textbook for the last two years. There are several papers here that focus on ProgrammingLand and its impact on teaching C++.
Here are the student evaluations from teaching C++ in 1997, again in 1999, and again in 2000. C++ was also taught in CS 365 in 1996. Curt also taught C and C++ at Iowa State.
- Comparative Programming Languages
What a wonderful class! It is a shame that it does not get enough students to teach every Spring. In it the features, strengths, and weaknesses of various programming languages are studied. Curt created this class to replace the FORTRAN class that was removed, but it has only been taught in the Spring of 2000. He developed SNOBOL Shell for this class.
- Computer Organization and Systems
This class considers the various subsystems of computers, from the digital logic level to the Operating System level. This is normally taught every Fall semester. Curt developed the BALSX Shell to give the students of this class a gentle introduction to assembly language. He has also found and then enhanced several Java applets that are used in this class. It was evaluated by students in 1999 and the results are here.
- Database. During Jay Hettiarachchy's sabbatical year, Curt taught the Database sequence: CIS 385 and CIS 386. Curt believes in practical hands-on experience, so he used the Leap Relational Database for Relational Algebra assignments and Microsoft's SQL Server to exercise Structured Query Language. Here are the student evaluations from teaching CIS 385 in 1998.
During the fall of 2003 the CIS 385 class was again taught. This time MySQL was the database of choice, running on my favorite machine: euler.vcsu.edu.
- FORTRAN
FORTRAN has greatly diminished in popularity in the last two decades, unless you are an engineer. CS 326 was taught just one year and then removed. The first of the Shells, the FORTRAN Shell was developed for this class.
- In the spring of 2004 Curt taught CSci 365 as a Programmable Games class. We looked at the programming languages of Lambda MOO and Quake III Arena.
- Java
Java is another of Curt's favorite languages. (It is so good, that Microsoft had to develop C# to compete with it, once they lost the lawsuit with Sun.) Java has been taught twice in CS 365, and will likely be so again. It currently is the only viable candidate to replace C++ in CS 160 and 161. Curt developed the Java Shell to go with Sun's Java Development Kit for a usable Java system. This is not nearly as good as Borland's JBuilder, but it is free. Java will be taught twice in the Spring of 2005, once as a General Education class CSCI 127 and the other an accelerated Java as preparation for Eagle Creek employment.
- Pascal
Pascal was clearly the best designed programming language of the 1970s and rapidly became the favorite to teach programming to college students. Unfortunately, it was not updated to object-oriented programming in a wide spread way. It was the language taught in the main programming sequence at VCSU in 1995. Here are the student evaluations from teaching Pascal in 1995. It was taught in CS 120, but was removed from the catalog in favor of Java. Curt also taught it at Iowa State and DMACC.
- Teaching Computer Science.
CS 380 is a class required only for Mathematics Education majors with a Computer Science minor. Not surprisingly it is offered only occasionally. The goal is to instruct potential secondary teachers how to teach Computer Science at that level.
- Windows Programming
This was once a CS 365 course. However, the increase in ease of use of object frameworks and rapid application development tools such as Borland's C++Builder has made such an offering superfluous. Better windows programs are produced in CS 161 now than were in this class.
Mathematics
- Combinatorics
This was a special topics course that was taught just one semester. It was taught by student request, but as a pre-cursor for an as yet to be implemented discrete mathematics course for Computer Science.
- Finite Mathematics
This class involves a number of discrete mathematics topics, such as sets, combinatorics, probability and statistics, simultaneous linear equations and linear programming. Curt taught this once at DMACC.
- Intermediate Algebra
Curt has taught Intermediate Algebra in every Fall semester since 1995. In the Spring of 2000 he also taught a section. The current home page of Intermediate Algebra. He also taught this at DMACC.
- Symbolic Logic
Curt taught this several times since the Fall of 2000. Since Symbolic Logic is of considerable importance to Computer Science, it is very likely the only Junior level mathematics class that he is competent to teach.
Programs written or modified with educational impact
- Curt did not write, but did enhance several Java applets: the Digital Logic Simulator, the Simple Computer Simulator and the MIPS Simulator. See Curt's Simulator Page for more information on each of these including information on the original authors and operating instructions.
- BALSX is a batch program that assembles IBM System 360 BAL and then simulates its execution. It is a batch program with a Windows front end that allows the user to edit the program and then run it and view the results. This is used in CS 370.
- The FORTRAN Shell was the first of the shells and used in CS 326. This Windows program used a full-screen editor, a DOS FORTRAN to C converter, a DOS C compiler to allow the creation of FORTRAN programs from a Windows environment. The FORTRAN to C converter was in the public domain and the C compiler had previously been licensed so this prevented considerable expense. Prior to this FORTRAN had been taught on the CMS system which had been discontinued.
- The Java Shell was used in several CS 365 classes. The Java Development Kit from Sun had a batch compiler, Windows run-time support, but no interactive development environment. The students were then able to use Java shell and interactively edit, compile and run their programs.
- The Leap Relational Database is a freely available demonstration of Database Relational Algebra. However, its batch orientation was quite awkward. This shell allowed students to interactively create algebra statements, submit them to leap and show the results in a window. It was then distributed with the regular Leap installation.
- MOOvia is a Windows MOO/MUD client
- Emailfrm is a part of a system for sending customized email grades to students. The goal is to be able to automatically provide email that informs the students yet also preserves the privacy of their grades. A database in Access or Excel holds the student information, including their scores and current grade. A form letter is generated with Word to make a single letter for each student, which are saved in a text file. Emailfrm then processes the text file and generates a separate file for each student and eliminates pages with invalid email addresses. It then connects to a MAPI server, such as Groupwise and sends the letters to the individuals.
- FileTran is a web site maintainer. A directory contains the source of a web site. When FileTran runs it finds all the files that have been changed since the last run. It then transfers those files via FTP to the desired server and directory.
- The SNOBOL shell uses a batch SNOBOL compiler/interpreter to give students experience in this unique language. It is used in CS 372.
- VisiSort is a program that graphically demonstrates the speed of sorting algorithms and is typically used in CS 161. The user selects several sorting algorithms from a list. The program generates the same data for each one and then runs each one in parallel, guaranteeing that each one receives the same amount of CPU time.
- WinShell was a program shell generator for early Windows programs. The user would specify what controls they wanted and the program would generate a C++ file, a resource file and header file, with these components. Then the programmer would enhance the program with the needed functionality. This was used in CS 365 once and then discontinued when C++Builder was introduced, but was also used to generate the first versions of the FORTRAN Shell, Java Shell, BALSX and VisiSort programs.
- WinTASM is a Windows shell that allows the use of the DOS Turbo Assembler to generate x86 assembly language programs. It has been used every year in CS 375, which has been recently renumbered to 350.
Beginning of this document.
The last time I remembered to update this date December 9, 2004.
Beginning of Curt's Portfolio site.