Students that pass the course satisfactorily will be able to (some items below may not be applicable to all project topics that a student might choose for herself/himself) :
- Analyze the power and limitations of abstract models of computation.
- Design test procedures for finding defects in software and hardware.
- Design test procedures to assess the performance and other quality attributes of software.
- Design computer-based systems with realistic requirements.
- Design and implement algorithms, heuristics and supporting data structures as packaged components.
- Design and implement components and systems to process, i.e. acquire, store, organize, manipulate, access and present, varied amounts of data.
- Interpret the needs of stakeholders in terms of system requirements.
- Construct mathematical or logical models of computational problems.
- Derive system properties from models.
- Integrate a set of available hardware and software components into a working system.
- Understand legal issues related with engineering practice, including intellectual property rights, safety, security and privacy.
- Self-assess one’s knowledge in a topic of interest.
- Use a widely accepted high-level programming language (e.g. Java, C# and C++).
- Use a widely accepted modeling language, such as UML.
- Use an integrated software development environment.
- Assess the life cycle processes for systems and software.
- Evaluate the quality attributes (such as reliability, availability, efficiency, usability, safety and security) of computer-based systems.
- Apply engineering standards.
- Evaluate alternative paradigms, languages, methods, techniques and tools for the solution of a computer engineering problem.