| Homeworks ; | Assignment 1 | Mid Semester Exam ; | 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
- apply elementary notions of software quality criteria to critique and improve existing medium scale software
- 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, with goals of correctness (through testing) and quality of construction
- 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), related software design patterns
- 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
| Y | | | Y | | | |
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 | | | |
|
|
|
|
|
|
|
|
|
|
|
|
|