The heart of computer science
The first two objectives can not be met simply with course work. The techniques and methods of approaching computer solutions to problems are independent of the application area of the problem and must become a reflex action on the part of the students. By demanding that students write well-structured programs and requiring them to submit analyses of all programs throughout their training , it is felt that they will develop proper programming techniques and attitudes. When programs are graded by an instructor less weight must be given to the output and answers and far more emphasis placed on the source program and algorithms. It is clear that the concepts of structured programming and the analysis of algorithms must be stressed throughout the entire curriculum. We have attempted to define a heart of Computer science, which should be in the intersection of all undergraduate computer science programs. The heart was developed by examining those topics which were absolutely essential to meeting the objectives stated above. Although it may appear that some of the topics are very mathematical in nature, it is an interesting observation that they do not require any mathematical background other than the ability to perform simple algebraic manipulations (secondary school algebra). It is our experience that the required mathematics can be developed in the courses at little cost in time. On the other hand, it is our belief the heart should also contain a certain amount of basic mathematics. ~