3 credit/unit hours – Three hours of lecture weekly; one term

This course covers design and implementation of large-scale problems; abstract data types; data structures (files, sets, pointers, lists, stacks, queues, trees, graphs); algorithmic analysis; software engineering principles; software and information assurance; and an introduction to searching and sorting algorithms.

Learning Objectives

Upon completion of this course the student will be able to:

  • Design, implement and formally test for the elimination of common software security vulnerabilities in a medium-sized software application, utilizing super-classes, subclasses, abstract classes, and interfaces;
  • Implement and utilize exception-handling techniques;
  • Design, construct, and assess appropriateness of solutions using a variety of basic recursive techniques;
  • Design, implement, and utilize data structures including arrays, linked lists, stacks, queues, trees, sets, hashing, maps and graphs;
  • Understand time and space efficiency analysis of searching and sorting algorithms; and
  • Practice the tenets of ethical and professional behavior promoted by professional societies and accept the professional responsibilities and liabilities associated with software development

Main Topics

1.0 Design, implementation and use of the basic classes and object-oriented programs including encapsulation, inheritance, polymorphisms, dynamic binding, abstract classes and interface
2.0 Implementation and use of exception handling in writing Java programs
3.0 Principles and use of recursive techniques in writing Java programs
4.0 Implementation of various searching and sorting algorithms, and the analysis of algorithm complexity and program verification
5.0 Design, implementation and use of singly-linked lists and doubly-linked lists
6.0 Design, implementation and use of stacks and queues
7.0 Design, implement and use of sets, hashing, maps, trees and graphs
8.0 Implementation and use of generic programming
9.0 Tenets of ethical and professional behavior of programmers
10.0 Security awareness and assurance through secure design and formal testing