In order to be able to attain the program objectives 3 to 5 years after graduation, on graduation from the program, students will demonstrate:
- An ability to analyze, design, implement and test significant computer-based projects, working individually and in small project teams.
Performance Criteria:
- Use of requirements elicitation and analysis techniques to develop complete, consistent, unambiguous, and testable requirements.
- Use of software design methodology and notation to devise and document software design that enables efficient implementation.
- Use of configuration management tools and coding standards in the software implementation of a design.
- Effective participation in software development teams.
- Proficiency in the selection and use of data structures and algorithms, including an understanding of the underlying mathematical abstractions and the complexity and implementation of solutions.
Performance Criteria:
- Understanding of the definition and implementation of common list, table and tree data structure.
- Selection of data structures appropriate for application needs.
- Analysis of the time and space complexity of common algorithms.
- Proficiency in the use of several programming languages and an understanding of different programming paradigms and their implementation in modern programming languages.
Performance Criteria:
- Effective use of an object-oriented language.
- Effective use of an imperative/procedural language.
- Effective use of a functional language.
- An understanding of theoretical computer science, software engineering and computer organization concepts and the ability to apply that knowledge in formulating and implementing computer-based solutions to problems.
Performance Criteria:
- Understanding of formal language theory and the use of common language recognition algorithms.
- Use of software engineering practices in software project work.
- Understanding of digital logic and computer organization concepts.
- Effective use of an assembly language.
- An understanding of the concepts of computer operating systems and concurrent systems.
Performance Criteria:
- Understanding of process scheduling in a multi-programming environment.
- Understanding of memory management techniques, including virtual memory.
- Understanding of file system implementation.
- Understanding of the concepts of process and thread synchronization and coordination.
- Use of language facilities in multi-threaded and multi-process programming.
- An ability to persuasively express their ideas orally and in writing.
Performance Criteria:
- Sufficient detail to make an effective argument.
- Effective organization of presented material to enable logical progression of an argument.
- Effective and correct use of the English language.
- An understanding of the social and ethical issues of computing and preparation to use their computing skills to make a positive impact on society.
Performance Criteria:
- Ability to recognize and discuss social and ethical aspects of computer applications.
- Understanding of the impacts of computer technology on society.
- Ability to recognize ethically questionable situations and to consider the implications of their individual actions in those situations.