Introduction to mathematical induction, analysis of algorithms, recurrence relations, combinatorics and graph theory. Applications of these concepts to various areas of computer science. Various physical implementations for each conceptual view are examined with emphasis on the concept of abstract data types. Individual programming projects are assigned. Students learn to use standard numerical packages and study elementary numerical algorithms, quadrature, splines, interpolation, Gaussian elimination, and matrix manipulation.
Assignments are numerical in nature and focus on engineering and science applications.
3 Introduction to the organization of computers at machine and assembly language levels. Also includes a comparative study of the instruction sets and user-level view of the architecture of several existing and proposed machines. An overview of software development methods including discussion of alternative software development models, software reuse, object-oriented software design, software testing. Students will develop a medium-scale project on an individual basis, incorporating code reuse and testing principles. Students undertake independent programming projects under the direction of one or more faculty members.