Year 2, Semester 2
Course Code:
F27SD
|
Course Title:
Software Design |
Course Co-ordinator:
Andrew Ireland, Brian Palmer
|
Pre-requisites:
|
F27SA – Software Development 1 OR equivalent
|
Aims:
|
To provide an understanding of the challenges associated with the software life-cycle, focusing on the processes and techniques which promote the design of high quality software.
To instil an understanding of the concepts and benefits of rigorous design.
To equip participants with a broad understanding of software design methods and processes.
To equip participants with an in-depth knowledge of UML notation
To instil an understanding of design patterns and their value
To provide a broad understanding of verification and validation issues associated with software engineering.
To equip CS participants with an in-depth understanding of analysis techniques, i.e. static analysis and dynamic analysis.
To instil IS participants with a broad understanding of the information systems lifecycle, and an in-depth understanding of feasibility studies.
To provide participants with an understanding of software design challenges in the real-world via guest speakers from industry.
|
Syllabus:
|
Motivations for design and the need for design processes and methodologies.
Software process models, e.g. waterfall model, Boehm's spiral model, evolutionary development, agile development.
Design methods and processes, i.e. architectural design, function-oriented design, object-oriented design, component-based design.
Object-oriented design using UML notation & CRC cards: use case diagrams, noun verb analysis, class diagrams, sequence diagrams, communication diagrams, state machine diagrams, activity diagrams.
An introduction to patterns and anti-patterns
Software testing and analysis: a strategy for dynamic testing; test case design; assertion based testing; functional testing; structural testing; hybrid testing; auto unit testing; reviews & inspections; metrics; flow analysis; formal methods (CS stream)
Open source vs closed source and means of assessing which is appropriate to a project – Boehm’s ADA and other methods
Documentation practice and standards in software engineering and information systems
Information systems lifecycle focussing on feasibility studies. Evaluating potential projects by considering operational, technical, schedule and economic feasibility. Cost/benefit analysis. (IS stream).
|
Learning Outcomes:
Subject Mastery
|
Understanding, Knowledge and Subject-Specific Skills
To demonstrate a critical understanding of modern software engineering practice and be able to evaluate the strengths and weaknesses of current software engineering methods and technique
To be able to choose appropriate metrics to measure software quality and quantity in a modern software engineering environment
To understand and demonstrate object oriented design techniques, including the use of UML notation
To understand the role of a feasibility study, and to appreciate social and technological aspects of information systems (IS stream)
|
Learning Outcomes::
Personal Abilities:
|
Cognitive skills, Core skills and Professional Awareness
Take responsibility for own work and exhibit critical reflection on development process. (PDP)
To be able to use appropriate methods and standards for practice and documentation in software engineering and information systems.
Demonstrate evidence based approaches to problem solving.
Use a range of numerical and graphical skills in evaluating and communicating ideas, as well as measuring progress toward achieving goals.
|
Assessment Methods:
|
Assessment:
Examination: (weighting – 100%)
|
Re-assessment:
Examination: (weighting – 100%)
|
Course Code:
F28DM
|
Course Title:
Database Management Systems |
Course Co-ordinator:
Monica Farrow
|
Pre-requisites:
|
F27DB2 Introduction to Database Systems or equivalent
|
Aims:
|
To familiarise students with the principles of database management systems, to enable them to design and implement databases for specific applications and to integrate databases with application programs.
|
Syllabus:
|
Database Design: data requirements, entity relationship diagrams, relational data model, integrity constraints, key constraints, types, integrity maintenance
Relational Queries: SQL, Boolean combinations of queries, aggregation, duplicate elimination, nested queries, negation, views, insertions, deletions, updates, command level interfaces, JDBC
Query execution and optimisation: data storage principles, file organisation, indexing, indexes in commercial DBMS’s, relational algebra, query execution plans, cost estimation of plans, interpretation of plans, physical database design
Concurrency: transactions, schedules, serialisability, concurrency control protocols, locking, two-phase-locking, time stamp based concurrency control.
Emerging Database Trends: XML and data warehousing
|
Learning Outcomes:
Subject Mastery
|
Understanding, Knowledge and Subject-Specific Skills
Broad knowledge and understanding of the concepts and formalisms of database design
Detailed knowledge of the building blocks and meaning of relational database queries
Critical understanding of the principles of query evaluation and concurrency control underlying database applications
Practice in the collection of data requirements and the design of conceptual database schemas
Evaluation of emerging database trends and ability to understand their benefits
|
Learning Outcomes::
Personal Abilities:
|
Cognitive skills, Core skills and Professional Awareness
Practice in working on a development project in a small group under the guidance of a tutor (PDP)
Practice in defining the subject and scope of a development project (PDP)
Presenting the project orally, and reporting on it in writing (PDP)
Use of ICT techniques for presenting the project (PDP)
Constructing a website that reports on the progress of the project
Practice in designing tests for quantitative analysis
|
Assessment Methods:
|
Assessment:
Examination: (weighting – 100%)
|
Re-assessment:
Examination: (weighting – 100%)
|
Course Code:
F28PL
|
Course Title:
Programming Languages |
Course Co-ordinator:
Greg Michaelson
|
Pre-requisites:
|
F27CS2 Introduction to Computer Systems, F27SB Software Development 2 or equivalent
|
Aims:
|
To give an appreciation of the context of programming languages
To introduce low level programming techniques
To introduce system level programming techniques
To introduce simple compiling techniques
|
Syllabus:
|
Low level programming e.g. assembly language: registers, memory models, arithmetic, comparison, branching, subroutines, recursion
System level programming e.g C: addressing modes, pointers, arrays and structs, control structures, functions and parameter passing, basic libraries
Simple compiling techniques: lexical analysis, recursive descent parsing, AST construction, simple code generation, use of compiler generator tools,
Overview of programming language history/paradigms
|
Learning Outcomes:
Subject Mastery
|
Understanding, Knowledge and Subject-Specific Skills
Appreciation of levels of and correspondences between hardware/software hierarchy
Simple assembly language programming
Simple C programming
Crafting simple language processors
Use of compiler generators
|
Learning Outcomes::
Personal Abilities:
|
Cognitive skills, Core skills and Professional Awareness
Experience of low- and intermediate-level programming
Understanding of role and deployment of low-level and system languages in system development
Appreciation and use of appropriate formalisms for defining languages and communicating language definitions
Ability to apply language processing techniques/tools for wider problem solving
|
Assessment Methods:
|
Assessment:
Examination: (weighting – 100%)
|
Re-assessment:
Examination: (weighting – 100%)
|
BSc Computer Systems
Share with your friends: |