• An introduction to the fundamental principles of computer science, with emphasis on problem solving techniques, data and procedural abstraction, and use of algorithmic thinking to understand, decompose and translate problem descriptions into sound, machine-executable solutions. Fundamentals of computer functions, data types, control structures and program design considerations, including object-oriented concepts such as modularity, encapsulation and class.
  • Covers topics essential to the design and development of larger software projects. Topics include requirements, design, code construction, software evolution, testing, and project management. Students typically work in teams on a medium-sized software project. Issues of social responsibility, intellectual property, copyright, and assessing the risks in computer systems are discussed.
  • With the increasing ubiquity of computers and computer networks, issues of privacy and security are becoming increasingly important for computing professionals. This course introduces students to a number of related areas in computer security. Topics covered include classical cryptography, public-key cryptography, block and stream ciphers, file system security, network security, Internet and web-based security, and design principles behind cryptographic systems. In addition, the course examines social, political, legal, and ethical issues related to security systems.