| Assignment 1 | homeworks | Mid Semester Exam | team research presentation | Final Exam (: practical 30%, theory 30%) | assignment 2 | |
|---|
1: Construct and modify
- to construct and modify small to medium scale computer programs
- apply all aspects of software construction for a representative variety of small to medium scale object-oriented programs up to around 300 lines of code containing up to 7 classes;
- to make modifications (including source code design, implementation, and testing) within a moderate-sized Java program system (103 (1000) to 104 (10,000) lines of code), given a documented specification, design and implementation of the system
- to have elementary or better competence with standard software development tools and methods: text editor, compiler, integrated software development environment, command line scripting, automated build tools, version control, unit test design, code review
- to use and analyse a personal software process in constructing small computer programs
| Y | Y | | | Y | | |
2: Abstraction
- to compare several forms of abstraction in object-oriented software design and construction:
- inheritance, generic types, polymorphism, procedural abstraction, abstract recursive data structures (including abstract syntax trees);
- and to apply them appropriately in constructing programs.
| Y | Y | | | Y | | |
3: Knowledge resources
- to be familiar with common programming knowledge resources to find, understand, and apply online manuals and tutorials for software tools, programming language components, and software libraries
| | | | | | | |
4: Principles and practice of software construction tools
- to describe the underlying principles of three major aspects of software construction and to apply the appropriate tools:
- version control (using the Subversion tool)
- unit testing (using the JUnit tool)
- automatic build process (using the Make or Ant tool)
| Y | Y | Y | | Y | | |
| 5: Reading knowledge of UML class diagrams as a design notation. | | | | | Y | | |
6: Communications skills for software enginers
- as a member of a small team, research and present on an issue in contemporary software development or services
| | | | Y | | | |
|
|
|
|
|
|
|
|
|
|
|
|