The discipline, methodologies, and techniques of software development, including the development of algorithms are studied. An introduction to discrete mathematical techniques used for solving problems in the field of computing. Basic principles from areas such as sets, relations and functions, logic, proof methods, and recursion are examined. Topics are selected on the basis of their applicability to typical problems in computer languages and systems, databases, networking, and software engineering. Topics include programming tools, verification, debugging and testing, and data structures.
Emphasis is on stacks, queues, lists, recursion, trees, sorting, and searching.
A study of the fundamental concepts and interrelationships of computer architecture and operating systems and the functional approach to components of a computer system. A study of the functions and underlying concepts of relationally organized database systems. The description and application of data models to database systems are discussed. Physical design and data administration issues are addressed. A study of the UNIX operating system.