433-151
Introduction to Programming (Advanced)
433-171
Introduction to Programming |
- be able to solve computational problems by applying
generic solutions involving abstract types and dynamic data structures;
- be able to solve numerical problems and implement those
solutions using a high-level imperative language (C);
- be able to make effective use of the Unix operating
system, electronic mail, and web browsers;
|
433-152
Algorithmic Problem Solving (Advanced)
433-172
Algorithmic Problem Solving |
- be able to solve computational problems by applying
generic solutions involving abstract types and dynamic data
structures;
- be able to solve numerical and symbolic problems of
moderate complexity;
- be able to implement those solutions using imperative and
functional programming languages (C, Haskell).
|
433-252
Software Development: Principles and Tools |
- be able to apply software development principles
to programming tasks;
- be able to use software development tools that
support these principles;
- be able to participate effectively in a small
software-development team.
|
433-253
Algorithms and Data Structures |
- be able to solve computational problems by applying
a broad range of standard algorithms involving abstract types
and dynamic data structures;
- be able to analyse the relative advantages of different
algorithms for solving the same problem;
- be able to implement those solutions using a
high-level imperative language (C);
- be able to reason about functional programs (Haskell).
|
433-254
Software Design |
- be able to undertake object-oriented design using a
standard modelling language (UML);
- be proficient in writing small programs in an object
oriented language (Java);
- be able to apply a range of small-scale software design techniques.
|
433-255
Logic and Computation |
- be able to analyse discrete systems of moderate complexity;
- be able to reason about formal properties of programs
and to write formal proofs;
- be able to use logic as a formalism for describing and
solving problems and to implement the solutions using a logic
programming language (Prolog).
|
433-258
Database Systems for Engineers |
- be able to use a data manipulation
language (SQL) to interact with database systems;
- be able to apply their knowledge of database
architectures to use databases efficiently;
|
433-303
Artificial Intelligence |
- be able to reason about the capabilities and limitations
of artificial intelligence algorithms involving search,
logical inference and learning;
- be able to formulate suitable problems so that they
can be addressed using artificial intelligence algorithms;
- be able to solve complex problems using
standard algorithms of artificial intelligence, and to
implement the solutions using a logic programming language (Prolog).
|
433-313
Computer Design |
- be able to write programs that simulate components of a computer system;
- be able to identify appropriate performance measures for a
specific computing task;
- be able to evaluate the suitability of a given computer
design for a specific task, and to evaluate the impact of
architectural choices on the portability and performance of
computer programs.
|
433-330
Theory of Computation |
- be able to reason about abstract models of computational
devices and the inherent complexity of computational problems;
- to be able to use these models to construct formal
solutions to diverse computational problems;
- be able to apply formal notations and techniques in
reasoning about machines and programs.
|
433-332
Operating Systems |
- be able to evaluate the suitability of a given operating system for a
specific task;
- be able to apply a knowledge of operating systems to
improve the performance of computer programs;
- be able to write programs that simulate components of an operating system.
|
433-340
Software Engineering Project |
- be able to select and manage a variety of software
engineering lifecycles and methods;
- be able to work in small, multi-cultural teams, acting
professionally, and planning effectively;
- be able to analyse, design and implement small software systems;
- be able to communicate effectively in written and oral presentations.
|
433-341
Software Engineering Process and Practice |
- be able to analyze conventional software life-cycle models
in terms of their phases and activities;
- be able to analyse requirements and specify software systems,
and select and apply appropriate design techniques;
- be able to use standard techniques and tools for achieving
software quality.
|
433-342
Software Engineering Methods |
- be able to apply standard methods to assess software reliability;
- be able to apply software testing techniques in the development of
reliable software;
- be able to use a variety of tools to support software
engineering processes.
|
433-343
Professional Issues in Computing |
- be able to identify potential conflicts between computer
applications and legal or ethical considerations, and to
exercise professional judgement in resolving these conflicts;
- be able to participate in online and face to face
discussions;
- be able to formulate and present written and oral arguments
on social issues related to computing;
- be able to perform a literature search and present
information with appropriate citations;
|
433-351
Database Systems |
- be able to reason about the logical structure
of data and queries;
- be able to use a data manipulation
language (SQL) to interact with database systems;
- be able to apply their knowledge of database
architectures to use databases efficiently;
- be able to administer a database system;
- be able to participate effectively in a team to develop a
web database.
|
433-353
Networks and Communications |
- be able to analyze network architectures,
algorithms and protocols;
- to be able to develop algorithms that employ networking protocols;
- be able to reason about social, economic, political, and
historical factors which influence the past and future
development of computer networks.
|
433-361
Programming Language Implementation |
- be able to analyze formal grammars and parsing algorithms,
and choose the appropriate parsing algorithm for a given grammar;
- be able to analyze imperative, object-oriented, functional and logic
programming paradigms in terms of the internal operation of compilers
and interpreters;
- be able to implement parsers and simple compilers.
|
433-371
Interactive System Design |
- be able to apply techniques in user modelling
to the design of interactive systems;
- be able to analyze and evaluate multimodal interfaces and
multimedia applications, based on an understanding of human
perception and human-machine interaction;
- be able to work in a small team on a project involving
both technical and human components.
|
433-380
Graphics and Computation |
- be able to apply the principles of computer graphics and
reason about state-of-the-art algorithms that perform real-time animation;
- be able to select an appropriate language for the design and implementation of
a high-performance graphics application;
- be able to design complex and realistic real-time graphics applications that
run in a networked environment;
- be able to participate effectively in a team to develop graphics software.
|
433-385
Modelling, Analysis and Visualisation |
- be able to analyze new application domains to identify
the concepts and information necessary for building a computer
model in that domain;
- be able to analyze a selection of approaches to modelling,
simulation and visualisation in a variety of application domains;
- be able to use a high level computer language to create
complex visualisations.
|
433-440
Advanced Software Engineering Project |
- be able to select and manage a variety of software
engineering lifecycles and methods;
- be able to work in small, multi-cultural teams, acting
professionally, and planning effectively;
- be able to analyse, design and implement small software systems;
- be able to communicate effectively in written and oral presentations;
- be able to explore, evaluate and apply complex computing
concepts to a software development project.
|
433-441
System Modelling and Analysis |
- be able to create and verify formal models of sequential
and concurrent computing systems;
- be able to determine critical properties of systems and
demonstarate in a rigorous fashion whether or not models
exhibit those properties;
- be able to apply problem solving skills to a variety of
problems in discrete systems analysis.
|
433-443
Software Project Management |
- be able to select software engineering processes and
methods appropriate for a development project;
- be able to develop plans for team management, risk management,
configuration management, client management, quality assurance and
accreditation,
- be able to apply standards, techniques and tools to support
software project management and the production of high quality
software;
|
433-448
Applied Cryptography and Coding |
- be able to analyze fundamental public key
and symmetric key cryptographic algorithms;
- be able to implement fundamental cryptographic
algorithms.
|
433-460
Human Language Technology |
- be able to apply problem-solving skills in the design and
analysis of complex language processing systems;
- be able to implement the algorithms used in a wide
variety of low-level language processing tasks;
- be able to create computational models of
human language, and critically evaluate their strengths and
weaknesses.
|
433-464 TODO
Project Work |
- be able to design a sophisticated computational model or system
informed by a careful review of the research literature;
- be able to implement, evaluate and report on the model or system.
|
433-465 TODO
Mechatronics Project |
|
433-471 TODO
Logic Programming |
- be able to use the programming techniques appropriate to
declarative programming languages, including structural induction,
accumulators, and higher order programming;
- be able to exploit their knowledge of the technologies used to
implement logic programming languages in order to enhance the
performance of logic programs;
- be able to reason about the advantages of using mathematical
logic as a basis for programming languages.
|
433-476 TODO
Algorithms for Constrained Search |
- be able to use THEIR knowledge of algorithmic techniques to
solve problems in a variety of application domains;
- be able to analyse the appropriateness of heuristic
approaches to complex problems.
|
433-480 TODO
Computer Vision and Image Processing |
|
433-481
Agent Programming Languages |
- be able to apply the principles of intelligent reasoning and
to analyze state-of-the art algorithms that achieve robust, distributed
reasoning in multi-agent systems;
- be able to select appropriate languages for the design and
implementation of intelligent multi-agent reasoning systems;
- be able to participate effectively in a team to research
and engineer intelligent systems.
|
433-498 TODO
Advanced Topic in Computer Science |
|
433-520
Programming and Software Development |
- be able to apply the concepts of object-oriented design
to the solution of computational problems;
- be proficient in programming with an object-oriented programming
language (Java);
|
433-521
Algorithms and Complexity |
- be able to use a variety of well-known algorithms for
sorting, searching, and other common problems in computing;
- be able to reason about a variety of more advanced
algorithms;
- be able to perform basic complexity analysis of
algorithms.
|
433-522
Internet Technologies |
- be able to analyze the
relationship between different components of computer networks;
- be able to conceptually and practically differentiate the various
layers in internetwork architectures;
- be able to conduct research into emerging networking technologies;
- be able to apply network security and network management concepts
in today's networked environments.
|
433-620
Engineering for Internet Software Development |
- be able to evaluate and choose appropriate architectures and platforms
for web-based software;
- be able to implement solutions to web-services applications using
platforms such as Java and .NET;
- be able to analyze the logical structure of client-server and
distributed web-based applications.
|
433-621
Web Technologies Protocols and Applications |
- be able to evaluate and choose appropriate technologies
for implementing data intensive web-based systems;
- be able to investigate a topic in web-based systems
and give oral and written presentations about the topic;
- be able to analyze the logical structure of web-based
data and queries.
|
433-641 TODO
Systems Requirements Engineering |
- be able to plan and manage requirements gathering, analysis
and specification for software projects;
- be able to create and analyse models in UML;
- be able to EXHIBIT problem analysis and modelling skills;
- be able to conduct team reviews of software requirements
specifications;
- be able to identify usability and safety requirements for
software;
- be able to carry out a range of safety and usability
analyses for requirements.
|
433-642 TODO
Software Engineering Case Studies |
- APPRECIATE the complexity and ambiguity in technical,
managerial, social and legal issues in software engineering;
- be able to identify key risk factors in "real world"
software projects, and make defensible, informed decisions for
mitigating those risks;
- be able to plan for complex software engineering projects
|
433-643 TODO
IT Project Management |
- be able to select software engineering processes and
engineering methods appropriate for a development projects;
- be able to assess project risk and have experienced risk
evaluation and monitoring;
- have EXPERIENCED project estimation;
- have EXPERIENCED planning and managing.
|
433-644 TODO
The Personal Software Process |
- be able to analyse plans and performance;
- have IMPROVED planning and time management skills;
- have IMPROVED reflection and self-evaluation skills.
|
433-645 TODO
Computer Security |
- be able to EXPLAIN the protocols which ensure security in
contemporary networked computer systems;
- be able to EXTRACT facts and critically reason about about
a specialized topic from the large body of research literature,
web sources, and implementations which describe current
computer security practice;
- be able to independently research a specialized topic in
computer security and to prepare a consultants style report on
this topic;
- have a technical APPRECIATION of the interaction between
underlying theory, such as cryptography and the implementations
of these concepts in computer security infrastructure.
|
433-670 TODO
Principles of Programming Languages |
- be able to PROGRAM small applications in an
object-oriented, a functional, and a logic programming
language;
- be able to EXPLAIN the differences, similarities and
relative advantages of these three paradigms;
- be able to EXPLAIN abstract concepts from the theory of
programming languages.
|
433-671 TODO
Constraint Programming |
- be able to EXPLAIN the role of constraint solving and
search in solving combinatorial problems;
- be able to model complex combinatorial problems as
constraint programs;
- be able to evaluate the suitability of a particular model
to solving a problem;
- be able to PROGRAM effective search strategies for
combinatorial problems.
|
433-675 TODO
Database Principles and Technology |
- be able to EXPLAIN the key technologies and standards used
to access data on the World Wide Web;
- be able to EXPLAIN current techniques used for data mining;
- be able to research a technical topic and give an informal
oral presentation of the topic.
|
433-676 TODO
Text and Document Management |
- be able to EXPLAIN the key components of a compression system;
- be able to enumerate the advantages and disadvantages of
the different ways of implementing those components;
- be able to critically assess proposals for new compression
schemes, and design practical experiments to assess such
schemes;
- be able to EXPLAIN the key components of an information
retrieval system;
- be able to enumerate the advantages and disadvantages of
the different ways of implementing those components;
- be able to critically assess proposals for new information
retrieval schemes.
|
433-677 TODO
Networks and Parallel Processing Complexity |
- be aware of parallel architectures and computations;
- have detailed knowledge of communication patterns and
interconnection networks;
- be able to analyze the complexity of parallel algorithms and the
efficiency of a particular implementation;
- be able to implement a parallel algorithm using a number of
techniques;
- be able to construct proofs using formal models of communication
complexity and parallel computing;
- GAIN experience with a real application.
|
433-678 TODO
Cluster and Grid Computing |
- be able to design and develop next-generation distributed
computing systems;
- be able to apply distributed computing to problem solving tasks;
- be able to develop distributed internet technologies in a team.
|
433-679 TODO
Evolutionary and Neural Computation |
- be aware of the nature of non-symbolic artificial
intelligence, evolutionary computation and its applications;
- have detailed knowledge of some common neural network architectures;
- be able to manipulate genetic operators and design neural nets;
- UNDERSTAND techniques for numerical optimisation;
- be able to apply the techniques studied in the subject to
practical problems.
|
433-680 TODO
Machine Learning |
- appreciate the role of machine learning in AI theory and
applications;
- be able to EXPLAIN the main current techniques used to
implement machine learning (data mining);
- be able to design and implement simple machine learning systems.
|
433-682 TODO
Software Agents |
|
433-690 TODO
Project |
|