Thomas C. McMillan

Learn More
This paper describes a programming exercise developed and used in CS2 classes to help introduce recursive programming. Providing a set of primitives which comprise a graphics system allows the students to focus on top down design and the nature of recursion, rather than on implementation details. The exercise entails drawing approximations of fractals by(More)
In elementary probability and statistics classes, a common example is the " Birthday Problem " : In a group of people, what is the probability that at least two people have the same birthday? After the probability has been calculated, it is natural to look for a match by having students announce their birthdays one by one. A question that arose in my class(More)
This paper describes a programming project used in CS2 classes to introduce trees as an abstract data type. The student is required to manipulate tree structures with a set of primitive functions supplied by the instructor. The student does not have access to the implementation details of these primitive functions, and is initially required to complete a(More)
In this paper we present, by way of an example, techniques for using the independently compilable units of Turbo Pascal 4.0. (Turbo Pascal is a Pascal compiler available from Borland International.) We suggest ways that units can be used to illustrate software engineering principles, including information hiding, modularity, and procedural and data(More)
Turbo Pascal has features which make it a good tool for introducing important concepts in CSl and CS2 classes. These concepts include procedural and data abstraction , informa.tion hiding and data encapsulation. In this paper we discuss abstract data types and those features of Turbo Pascal which can be used to implement abstract data types. We also discuss(More)
This paper surveys examples in which questions are answered by developing recurrence relations that model certain situations and then exploring those recurrence relations using an electronic spreadsheet. The goals of this approach are (1) to develop an understanding of and a facility for using recurrence relations as a modeling tool to motivate the need to(More)
We consider, in this paper, various algorithms which are known to sort an array in <i>O</i>(<i>n</i><sup>2</sup>) or <i>O</i>(<i>n</i> log <i>n</i>) time. Since the analysis of an algorithm may indicate its <i>average</i> performance, it is desirable to identify conditions which would indicate that a(More)