|Assessment Type||Assessment length / details||Proportion|
|Semester Assessment||Up to 5 practical mini-assignments||40%|
|Semester Assessment||Individual assignment||50%|
|Semester Assessment||Active participation in tutorials||10%|
|Supplementary Assessment||One assignment||100%|
On successful completion of this module students should be able to:
1. Describe and explain the key differences between procedural and object oriented programming.
2. Find objects, classes and methods based on a problem statement, thereby showing aptitude to apply the concepts of abstraction and encapsulation.
3. Map UML use-case, class and sequence diagrams onto object-oriented code.
4. Develop a non-trivial object-oriented program that contains a graphical user interface, thereby demonstrating the ability to deal with simple event-driven programming.
5. Demonstrate the ability to apply the concepts of composition, inheritance and polymorphism.
6. Demonstrate in object-oriented code how to handle error conditions.
7. Demonstrate in object-oriented code how to store and retrieve data to and from files.
This module will build on CS12020 Introduction to programming. In particular, it will explore the use of the object-oriented paradigm and its embodiment in the Java programming language. UML (Unified Modeling Language) notation will be defined and used as appropriate. It provides a foundation for Part 2 modules that use object-oriented languages, such as CS21120 - Data Structures and Algorithms, and CS22120 - The Software Development Life Cycle.
This module will build on CS12020 Introduction to Programming. It will explore the use of the object-oriented paradigm and its embodiment in the Java programming language. It will be taught in conjunction with CS10720 - Problems and Solutions, and will define and use UML when modeling requirements and design.
Week 1 - Introductory workshops as a taster of many of the topics to be covered during the module: The idea of class and object. Storing data in instance variables. Methods. Java Virtual Machine and bytecode. Applications running from an integrated development environment tool. Review of concepts from semester one as used in Java: variables, conditional tests, loops.
Week 2 - Basic concepts. Exploration of objects and classes. The UML class diagram. Instance variables, methods and parameters, object diagrams. Relationships between classes and their representation in class diagrams. Mapping a simple procedural program from semester one to a Java program.
Week 3 - Review of basic concepts. Reading from the keyboard. Null references. Running programs from the command line. Javadoc comments. Naming conventions. Tutorial on the use of the Classes, Responsibilities and Collaborations technique.
Week 4 - Types and equality. Searching, loading and saving. Reading from and writing to files. Iteration over Java Collections. Java arrays. UML sequence diagrams.
Week 5 - Access modifiers. Packages and JAR files. The static modifier. Revisiting abstraction and encapsulation. Consolidation: design and implementation. The role of use-case diagrams and their relationship to class diagrams and implementation.
Weeks 7 and 8 - Focus on inheritance, polymorphism, interfaces and abstract classes. Overriding the equals method. Exception classes.
Weeks 9 and 10 - Graphical user interfaces. Event-driven programming. Separation of concerns.
Week 11 - review
|Skills Type||Skills details|
|Application of Number||Inherent in the subject|
|Communication||Communication in a technical sense through UML diagrams|
|Improving own Learning and Performance||From feedback from staff and fellow students through peer assessment|
|Information Technology||Inherent in the subject|
|Personal Development and Career planning||The module will provide more information on what software engineers do|
|Problem solving||Solving design and coding problems|
|Research skills||Basic computer use|
|Subject Specific Skills||UML diagrams, code development skills, use of integrated development environments|
|Team work||Developed in tutorials|
This module is at CQFW Level 4