Department of Computer Science, Unit Catalogue 2009/10
CM10227: Programming 1A
|Assessment:||CW 50%, EX 50%|
|Supplementary Assessment:||CM10227 Mandatory Extra Work (where allowed by programme regulations)|
To introduce students to the development of computer software, including problem analysis, establishing requirements, designing, implementing and evaluating. To provide practical skills at reading and writing programs and producing programs to solve real world problems. To provide students with domain specific problem solving techniques. To make students feel confident about programming in the taught languages and about being able to learn different programming languages and programming paradigms. To develop within the students the ability to distinguish between the underlying principles of computer programming against those that are development-environment or language specific. To provide students with mechanisms to become independent learners who take control over their education rather passively taking in information.
On completion of this unit, students will be able to:
1. Understand the basic procedural control statements and design, implement, test and evaluate programs using this paradigm.
2. Understand the basic concepts of object orientation and design, implement, test and evaluate programs in this paradigm.
3. Be able to design, construct and evaluate simple data structures and algorithms.
4. Understand and appreciate the limits of computation.
Use of IT (T/F,A), Problem Solving (T/F,A), Communication (T/F,A).
* Procedural Control: Introduction to procedural system development. Discussion of control structures: sequence, selection, iteration and recursion. Introductions to scope and extent, abstract data types. Design methods for such systems. Unit testing.
* Objects: Introduction to object-oriented system development. Extending Abstract data types and scope and extent. Introduction of Objects and classes, inheritance and polymorphism. Comparison of programming languages.
* Data Organization: Basic data structures: lists, stacks and queues. Basic search and sorting algorithms for these data structures. Files and streams. Data handling.
* Limits of Computation: Introduction to complexity analysis and computability.