Abstract
Traditionally, the first two programming courses have emphasized basic techniques and skills—the details of a programming language, basic problem solving and program development, “structured programming”, the manipulation of simple data structures and files, basic sorting and searching algorithms, etc.
Our principle motivation is the conviction that programming should be an engineering discipline, and that engineering disciplines must be grounded in engineering science. Further, to be effectively taught, this science must be introduced as early as possible. In contrast to the measure-theoretic under pinnings of the calculus, the theory we introduce is immediately useful to working programmers. In addition, the topics we cover are fundamental to later courses. By introducing the topics early in the curriculum, we provide a common vocabulary for these later courses, eliminate redundant treatment of topics, and give students greater exposure to the material and a better chance to absorb it.
We feel we have been successful with the course, although our evidence is necessarily subjective. Because its philosophy flies in the face of current practice, we shall attempt to explain that philosophy in this paper. The course itself, “Fundamental Structures of Computer Science” (FS here after) is described in somewhat greater detail in [2] and we are preparing a supporting text [3]. We are not so much interested in pressing our own particular treatment of the topics, however, as we are the choice of material and its place in the curriculum.
- 1 "Curriculum recommendations for the undergraduate program in computer science", SIGCSE Bulletin 9, 2 (June 1977). Google Scholar
Digital Library
- 2 Lawrence Flon, Paul N. Hilfinger, Mary Shaw, and Wm. A. Wulf. "A fundamental computer science course that unifies theory and practice." Papers of the SIGCSE/CSA Technical Symposium on Computer Science Education, Detroit. SIGCSE Bulletin 10, 1 (February 1978), pp. 255-259. Google Scholar
Digital Library
- 3 W. A. Wulf, M. Shaw, L. Flon, and P. Hilfinger. Fundamental Structures of Computer Science. Textbook in preparation (Addison-Wesley). Google Scholar
Digital Library
- 4 Donald F. Stanat and David F. McAllister. Discrete Mathematics in Computer Science. Prentice-Hall, Inc., Englewood Cliffs, 1977. Google Scholar
Digital Library
- 5 Zohar Manna and Richard Waldinger. "Structured programming with recursion." Memo AIM-307 (STAN-CS-77-640), Stanford Artificial Intelligence Laboratory, January, 1978. Google Scholar
Digital Library
Index Terms
Introducing "theory" in the second programming course
Recommendations
Introducing "theory" in the second programming course
SIGCSE '78: Proceedings of the ninth SIGCSE technical symposium on Computer science educationTraditionally, the first two programming courses have emphasized basic techniques and skills—the details of a programming language, basic problem solving and program development, “structured programming”, the manipulation of simple data structures and ...
The Components of a Successful S-STEM Program: What Works at Appalachian State University
SIGCSE '18: Proceedings of the 49th ACM Technical Symposium on Computer Science EducationIn 1999, the National Science Foundation created the "Computer Science, Engineering, and Mathematics Scholarships" (CSEMS) program to provide funding for institutions to supply scholarships for academically talented and financially needy students to ...
A faculty development program
Proceedings of the 13th SIGCSE symposium on Computer science educationThe Computer and Information Science (CIS) Department at Brooklyn College is unable to use full-time CIS faculty for most sections of the introductory programming course. Instead of using adjuncts, the administration of the College would like to use ...






Comments