Prerequisites: none
Syllabus:
Units covered:
| DS1 | Functions, relations, and sets | 2 | core hours (of 6) |
| DS2 | Basic logic | 2 | core hours (of 10) |
| PF1 | Fundamental programming constructs | 5 | core hours (of 9) |
| PF2 | Algorithms and problem-solving | 3 | core hours (of 6) |
| AL1 | Basic algorithmic analysis | 4 | core hours |
| AL3 | Fundamental computing algorithms | 4 | core hours (of 12) |
| AR6 | Functional organization | 4 | core hours (of 7) |
| OS1 | Overview of operating systems | 2 | core hours |
| OS2 | Operating system principles | 1 | core hour (of 2) |
| NC1 | Introduction to net-centric computing | 2 | core hours |
| NC2 | Communication and networking | 1 | core hour (of 7) |
| PL6 | Object-oriented programming | 4 | core hours (of 10) |
| GV1 | Fundamental techniques in graphics | 2 | core hours |
| GV2 | Graphic systems | 1 | core hour |
| SP2 | Social context of computing | 3 | core hours |
Notes:
It is, of course, impossible to cover all of computer science within a single course. The exact list of topics and their ordering will therefore vary based on the interests and background of the instructor. At a minimum, an initial breadth-first course should include a solid introduction to algorithms, some basic concepts in hardware and computer organization, an exposure to abstraction and the virtual environments created by software, a brief introduction to programming and software development, and a treatment of the social, ethical, and professional issues that arise in the field. Beyond that, each instructor should feel free to choose the specific topics covered, particularly in terms of the treatment of modern computing applications. The sample syllabus includes about six hours of material on networking and computer graphics, both important and rapidly growing areas. It would, however, be appropriate to expand these topics or supplement them with material on other important issues such as databases, artificial intelligence, and distributed systems.
There are two important considerations in the design of a breadth-first introduction to computer science. The first is to treat discrete mathematics not as a separate and unrelated subject, but as a fully integrated component of the course. By doing so, students will better understand and appreciate the importance of discrete mathematics to our discipline. For example, Boolean logic could be introduced during a discussion of programming language operators, counting methods could be presented during a discussion of the efficiency of iterative algorithms, while recurrence relations are a natural way to study the performance of recursive algorithms. The goal is for students to be introduced to mathematical concepts within the context of their use in solving important computing problems.
The second point is that the many disparate topics typically found in a breadth-first course must be tied together into an integrated whole. Students must not see the course as a collection of interesting but unrelated topics in a "if this is Tuesday it must be computer organization" style. They should instead develop an appreciation for the important relationships among the major subfields of computer science. This goal can be achieved by demonstrating how each of the course topics utilizes earlier ideas and builds on them to produce newer and more powerful abstractions. This type of "spiral" approach, which reinforces, emphasizes, and builds on previous concepts, is an important aspect to the success of such a course.
|
December 15, 2001 |