COMPSCI230 Software Construction
If you are a prospective student wanting to find out more about this and other Computer Science courses, please refer to the undergraduate handbook part of the Computer Science Handbook. This page is intended for students who are already enrolled in this course.
Lecture Times and Locations (S1 2016)
- Mo 11:00AM - 12:00PM in 260-073 (Owen G Glenn, Room 073)
- Tu 11:00AM - 12:00PM in 260-073 (Owen G Glenn, Room 073)
- Fr 12:00PM - 1:00PM in 260-092 (Owen G Glenn, Room 092)
Note: the information above was obtained from SSO on January 19, 2016, and will not reflect any later adjustment in room assignments.
Description
Students will develop a software application of reasonable complexity through the application of established software development techniques. In doing so, students will demonstrate fundamental skills in object-oriented software development, GUI programming and application-level multithreading. In addition, students will learn established techniques to ensure that their software satisfies quality criteria.
Contents
Theme (A): the object-oriented programming paradigm covers the follow topics:
- The object-oriented paradigm, introducing objects, messages, methods, classes, interfaces, class hierarchies and responsibility-driven design
- Information hiding, abstraction, programming to interfaces, and enforcement of design intent using language features such as visibility qualifiers, constructors, constants, sealed classes, abstract classes and interfaces
- Data typing in object-oriented programming languages, subtypes vs. subclasses, the principle of substitution, method overriding and overloading, polymorphism, dynamic binding, generic types
Theme (B): frameworks, illustrated by a contemporary GUI framework, covers:
- Inversion of control principle
- Application of fundamental OOP concepts, introduced in theme A
- Event handling
- Model/view design
Theme (C): application-level concurrent programming covers:
- The lightweight threads programming model and thread lifecycle
- Synchronisation, mutual exclusion, and liveness
- High level concurrency primitives, language dependent but to include abstractions like locks, executors, thread pools, and concurrent collections
- Concurrency issues in GUI applications: the event dispatching thread, worker threads and background tasks, tasks with interim results
Theme (D): software quality comprises:
- Fundamental testing techniques: unit testing, black box testing, white-box testing, equivalence partitioning
- Source code inspection
- Documenting and commenting source code
Expected Learning Outcomes
Upon completion of this course the students will be able to:
- Describe the features typically offered by an object-oriented programming language, including support for classes, visibility, inheritance, interfaces, polymorphism and dynamic binding.
- Explain key principles and best practise associated with object-oriented software development. These include abstraction, information hiding, programming to interfaces, resilience to change, and reuse.
- Put into practice object-oriented programming knowledge and develop a relatively large, with respect to software developed on pre-requisite courses, object-oriented software application.
- Describe the principles of application-level multithreading: threading, condition synchronisation and mutual exclusion; and primitives associated with these.
- Develop a multithreaded application that uses threads appropriately and correctly.
- Describe and apply contemporary techniques that can be used to help develop software that meets its specification. These include source code inspection and basic software testing techniques: black box, white box and unit testing.
Marks
Marks can be checked via Canvas. Please check your marks each week and contact us if there are any problems.
Passing the Course
- Final Exam: 65%; Test: 15%; Assignments: 20%.
- COMPSCI 230 is a "practical" course, which means you must pass both the practical (assignments) and the theory (test and exam) sections, separately.
- The pass mark is likely to be 50%, but may be lower. If you have not achieved 50% in the practical part, you are still advised to sit the exam.
How to Seek Assistance
In the labs, there are always tutors and demonstrators available to help you. If you have an administrative problem (e.g. you have been ill, you have a timetable clash with your lab or test, your marks have been incorrectly recorded, etc.), or any other sort of problem that you need help with, please see the course supervisor (Ulrich Speidel). If you need extra help with understanding the course material, or preparing for the test or exam, you are very welcome to visit any of the staff either during their office hours or at some other time when they are available.
Missed work
- If you miss a lecture, catch up as soon as possible by reading the corresponding lecture notes. You are welcome to ask advice and assistance from our teaching staff - don't be shy!
- If you miss the deadline for an assignment for unforeseeable reasons beyond your control, e-mail the lecturer who set the assignment. Extensions may be granted at the lecturer's discretion.
- If you miss the test or the exam for reasons beyond your control, or you sit the test or exam, but believe that your performance was impaired for some reason, then you may wish to apply for an aegrotat, compassionate or special pass consideration. Note that strict deadline apply to these - you need to apply as soon as possible.